Keepalived container

This patch contains keepalived container for yum-based distros.

Change-Id: I8e3ea7a61ad6c27b25b635e7aeeff5ef04a807b4
Implements: blueprint keepalived-container
This commit is contained in:
Michal Jastrzebski (inc0) 2015-06-02 04:54:15 +02:00
parent 2dbde4ad8e
commit 52f4909435
8 changed files with 85 additions and 0 deletions

8
compose/keepalived.yml Executable file
View File

@ -0,0 +1,8 @@
keepalived:
image: kollaglue/centos-rdo-keepalived:latest
name: keepalived
restart: always
net: "host"
privileged: true
env_file:
- openstack.env

View File

@ -0,0 +1,13 @@
FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%%
MAINTAINER Kolla Project (https://launchpad.net/kolla)
RUN yum -y install \
hostname \
keepalived \
socat \
&& yum clean all
COPY keepalived.conf /etc/keepalived/
COPY start.sh check_alive.sh /
CMD ["/start.sh"]

View File

@ -0,0 +1 @@
../../../../tools/build-docker-image

View File

@ -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

View File

@ -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
}
}

View File

@ -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

2
docs/integration-guide.md Normal file → Executable file
View File

@ -167,6 +167,8 @@ all containers. This allows a simple method of ensuring every type of node
CINDER_VOLUME_BACKEND_NAME=<LVM_iSCSI57> - The backend name for a given driver implementation
CINDER_VOLUME_DRIVER=<cinder.volume.drivers.lvm.LVMISCSIDriver> - The driver used for volume creation
CINDER_ENABLED_BACKEND=<lvm57> - A list of backend names to use
INIT_CINDER_DB=<true|false> - Initialize or update the cinder db
KEEPALIVED_HOST_PRIORITIES=<host1:100,host2:99> - Map of priorities per node. Priorities have to be unique.
[Minimum environment variable setup guide.](https://github.com/stackforge/kolla/blob/master/docs/minimal-environment-vars.md)

View File

@ -197,6 +197,10 @@ CINDER_VOLUME_BACKEND_NAME=LVM_iSCSI57
CINDER_VOLUME_DRIVER=cinder.volume.drivers.lvm.LVMISCSIDriver
CINDER_ENABLED_BACKEND=lvm57
# Keepalived
# Here we define pairs hostname:priority. Priorities have to be unique
KEEPALIVED_HOST_PRIORITIES=host1:100,host2:99
cat > ./openrc <<EOF
export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
export OS_USERNAME=$ADMIN_TENANT_NAME
@ -345,6 +349,8 @@ INIT_GLANCE_DB=$INIT_GLANCE_DB
INIT_HEAT_DB=$INIT_HEAT_DB
INIT_KEYSTONE_DB=$INIT_KEYSTONE_DB
INIT_NOVA_DB=$INIT_NOVA_DB
KEEPALIVED_HOST_PRIORITIES=$KEEPALIVED_HOST_PRIORITIES
EOF
echo Please customize your FLAT_INTERFACE to a different network then your
echo main network. The FLAT_INTERFACE is used for inter-VM communication.