Keepalived container
This patch contains keepalived container for yum-based distros. Change-Id: I8e3ea7a61ad6c27b25b635e7aeeff5ef04a807b4 Implements: blueprint keepalived-container
This commit is contained in:
parent
2dbde4ad8e
commit
52f4909435
8
compose/keepalived.yml
Executable file
8
compose/keepalived.yml
Executable file
@ -0,0 +1,8 @@
|
||||
keepalived:
|
||||
image: kollaglue/centos-rdo-keepalived:latest
|
||||
name: keepalived
|
||||
restart: always
|
||||
net: "host"
|
||||
privileged: true
|
||||
env_file:
|
||||
- openstack.env
|
13
docker/centos/binary/keepalived/Dockerfile
Executable file
13
docker/centos/binary/keepalived/Dockerfile
Executable 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"]
|
1
docker/centos/binary/keepalived/build
Symbolic link
1
docker/centos/binary/keepalived/build
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../tools/build-docker-image
|
7
docker/centos/binary/keepalived/check_alive.sh
Executable file
7
docker/centos/binary/keepalived/check_alive.sh
Executable 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
|
19
docker/centos/binary/keepalived/keepalived.conf
Executable file
19
docker/centos/binary/keepalived/keepalived.conf
Executable 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
|
||||
}
|
||||
}
|
29
docker/centos/binary/keepalived/start.sh
Executable file
29
docker/centos/binary/keepalived/start.sh
Executable 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
2
docs/integration-guide.md
Normal file → Executable 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)
|
||||
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user