aboutsummaryrefslogtreecommitdiff
path: root/docker/common
diff options
context:
space:
mode:
authorMartin André <martin.andre@kvhasia.com>2015-07-14 14:42:18 +0900
committerMartin André <martin.andre@kvhasia.com>2015-07-14 14:42:18 +0900
commit02bd1332066eb0531046803f6b35282ebc9be02b (patch)
tree39bd9943ec4d676e09037fca40b66bcac5901cfe /docker/common
parent37ca7222bb83ff0de15c0502551b7e9e0960983a (diff)
downloadkolla-02bd1332066eb0531046803f6b35282ebc9be02b.tar.gz
kolla-02bd1332066eb0531046803f6b35282ebc9be02b.zip
Move keepalived common files to common dir
While not a problem in itself, all common files should be moved to docker/common/keepalived to be more consistent with other containers. Change-Id: I6176bbf30bf42c58d4480e7bf48b1c4625eb9a15 Closes-Bug: #1474213
Diffstat (limited to 'docker/common')
-rwxr-xr-xdocker/common/keepalived/check_alive.sh7
-rwxr-xr-xdocker/common/keepalived/keepalived.conf19
-rwxr-xr-xdocker/common/keepalived/start.sh29
3 files changed, 55 insertions, 0 deletions
diff --git a/docker/common/keepalived/check_alive.sh b/docker/common/keepalived/check_alive.sh
new file mode 100755
index 000000000..ee0c5a85b
--- /dev/null
+++ b/docker/common/keepalived/check_alive.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+# This is noop check script. Change it to something meaningful.
+# TODO (inc0): When HAProxy is implemented, this should be changed to HAProxy check
+# https://github.com/stackforge/kolla/blob/master/specs/high-availability.rst
+
+exit 0
diff --git a/docker/common/keepalived/keepalived.conf b/docker/common/keepalived/keepalived.conf
new file mode 100755
index 000000000..2a58fc018
--- /dev/null
+++ b/docker/common/keepalived/keepalived.conf
@@ -0,0 +1,19 @@
+vrrp_script check_alive {
+ script "/check_alive.sh"
+ interval 2
+ weight -10
+}
+
+vrrp_instance Floating {
+ state MASTER
+ interface @PUBLIC_INTERFACE@
+ virtual_router_id 51
+ priority @KEEPALIVED_PRIORITY@
+ advert_int 1
+ virtual_ipaddress {
+ @PUBLIC_IP@
+ }
+ track_script {
+ check_alive
+ }
+}
diff --git a/docker/common/keepalived/start.sh b/docker/common/keepalived/start.sh
new file mode 100755
index 000000000..7f582b218
--- /dev/null
+++ b/docker/common/keepalived/start.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+. /opt/kolla/kolla-common.sh
+
+check_required_vars KEEPALIVED_HOST_PRIORITIES PUBLIC_IP PUBLIC_INTERFACE
+
+MY_HOSTNAME=`hostname`
+
+# here we unpack KEEPALIVED_HOST_PRIORITIES hostname:priority pairs and match
+# them with current hostname, if it's there
+for i in ${KEEPALIVED_HOST_PRIORITIES//,/ }; do
+ HOST_PRIORITY=(${i//:/ })
+ if [ "$MY_HOSTNAME" == "${HOST_PRIORITY[0]}" ]; then
+ KEEPALIVED_PRIORITY=${HOST_PRIORITY[1]}
+ fi
+done
+
+if [ -z "$KEEPALIVED_PRIORITY" ]; then
+ echo "ERROR: missing hostname in KEEPALIVED_HOST_PRIORITIES: $MY_HOSTNAME" >&2
+ exit 1
+fi
+
+sed -i '
+ s|@PUBLIC_INTERFACE@|'$PUBLIC_INTERFACE'|g
+ s|@PUBLIC_IP@|'$PUBLIC_IP'|g
+ s|@KEEPALIVED_PRIORITY@|'$KEEPALIVED_PRIORITY'|g
+' /etc/keepalived/keepalived.conf
+
+exec /usr/sbin/keepalived -nld -p /run/keepalived.pid