diff options
| author | Michal Stachowski <michal.stachowski@intel.com> | 2015-06-24 14:10:10 +0200 |
|---|---|---|
| committer | Michal Stachowski <michal.stachowski@intel.com> | 2015-06-24 14:10:10 +0200 |
| commit | 214ac7e6084583f703041fdfd19d67dda9417274 (patch) | |
| tree | 281419ad8522c2f77c8f1e19a897e0138e1c1d9e /docker | |
| parent | 0f843e21543ccda337f7df20133c3479f9c6c738 (diff) | |
| download | kolla-214ac7e6084583f703041fdfd19d67dda9417274.tar.gz kolla-214ac7e6084583f703041fdfd19d67dda9417274.zip | |
RabbitMQ container with HA support
This is new RabbitMQ container with support for HA. It's next step for
provide HA support in Kolla project. RabbitMQ is supporting now
active/active model and It's ready for active/passive model.
Change-Id: I2eb6c65f6268ee96d377e72cf880a01c8042559e
Implements: blueprint rabbitmq-ha
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/centos/binary/rabbitmq/Dockerfile | 20 | ||||
| -rw-r--r-- | docker/centos/binary/rabbitmq/config-rabbit.sh | 56 | ||||
| -rw-r--r-- | docker/common/rabbitmq/rabbitmq-env.conf | 2 | ||||
| -rw-r--r-- | docker/common/rabbitmq/rabbitmq.config | 1 | ||||
| -rwxr-xr-x | docker/common/rabbitmq/start.sh | 21 |
5 files changed, 68 insertions, 32 deletions
diff --git a/docker/centos/binary/rabbitmq/Dockerfile b/docker/centos/binary/rabbitmq/Dockerfile index 9212d15eb..f42bc8307 100644 --- a/docker/centos/binary/rabbitmq/Dockerfile +++ b/docker/centos/binary/rabbitmq/Dockerfile @@ -1,18 +1,14 @@ FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%% MAINTAINER Kolla Project (https://launchpad.net/kolla) -# Install required packages -RUN yum -y install rabbitmq-server hostname && yum clean all +RUN yum -y install \ + hostname \ + rabbitmq-server && \ + yum clean all && \ + /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management -# Run the management plugin -RUN /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management +COPY rabbitmq.config rabbitmq-env.conf /etc/rabbitmq/ +COPY config-rabbit.sh /opt/kolla/config-rabbit.sh +COPY start.sh /start.sh -# Copy Rabbit conf files -ADD rabbitmq.config /etc/rabbitmq/ -ADD rabbitmq-env.conf /etc/rabbitmq/ - -# Copy start-up script -ADD start.sh /start.sh - -# Start Rabbit through the start script CMD ["/start.sh"] diff --git a/docker/centos/binary/rabbitmq/config-rabbit.sh b/docker/centos/binary/rabbitmq/config-rabbit.sh new file mode 100644 index 000000000..f78cd0656 --- /dev/null +++ b/docker/centos/binary/rabbitmq/config-rabbit.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +. /opt/kolla/kolla-common.sh + +check_required_vars RABBITMQ_CLUSTER_COOKIE RABBITMQ_CLUSTER_NODES \ + RABBITMQ_LOG_BASE RABBITMQ_PASS RABBITMQ_USER + +RABBITMQ_CLUSTER_CONFIGURATION="" + +function configure_files { + + sed -i ' + s|@RABBITMQ_USER@|'"$RABBITMQ_USER"'|g + s|@RABBITMQ_PASS@|'"$RABBITMQ_PASS"'|g + s|@RABBITMQ_CLUSTER_NODES@|'"$RABBITMQ_CLUSTER_CONFIGURATION"'|g + ' /etc/rabbitmq/rabbitmq.config + + sed -i ' + s|@RABBITMQ_LOG_BASE@|'"$RABBITMQ_LOG_BASE"'|g + ' /etc/rabbitmq/rabbitmq-env.conf +} + +function configure_cluster { + echo "${RABBITMQ_CLUSTER_COOKIE}" > /var/lib/rabbitmq/.erlang.cookie + chown rabbitmq /var/lib/rabbitmq/.erlang.cookie + chmod 700 /var/lib/rabbitmq/.erlang.cookie + + HOSTNAME="" + IP_ADDRESS="" + DELIMETER="" + + for node in ${RABBITMQ_CLUSTER_NODES}; do + HOSTNAME=`echo ${node} | cut -d'@' -f1` + IP_ADDRESS=`echo ${node} | cut -d'@' -f2` + CLUSTER_NODES="${CLUSTER_NODES}${DELIMETER}rabbit@${HOSTNAME}" + echo "${IP_ADDRESS} ${HOSTNAME}" >> /etc/hosts + DELIMETER="," + done + RABBITMQ_CLUSTER_CONFIGURATION="{cluster_nodes, {[$CLUSTER_NODES], disc}}," +} + +function configure_rabbit { + if [ "$RABBITMQ_CLUSTER_NODES" ] && [ "$RABBITMQ_CLUSTER_COOKIE" ]; then + configure_cluster + elif [ "$RABBITMQ_SERVICE_HOST" ]; then + # work around: + # https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/653405 + echo "${RABBITMQ_SERVICE_HOST} `/usr/bin/hostname -s`" > /etc/hosts + else + echo "You need RABBITMQ_SERVICE_HOST or RABBITMQ_CLUSTER_NODES & " \ + " RABBITMQ_CLUSTER_COOKIES variables" + exit 1 + fi + + configure_files +} diff --git a/docker/common/rabbitmq/rabbitmq-env.conf b/docker/common/rabbitmq/rabbitmq-env.conf index e76f18f0b..a8926619c 100644 --- a/docker/common/rabbitmq/rabbitmq-env.conf +++ b/docker/common/rabbitmq/rabbitmq-env.conf @@ -1,2 +1,2 @@ -RABBITMQ_NODENAME=@RABBITMQ_NODENAME@ +RABBITMQ_NODENAME=rabbit RABBITMQ_LOG_BASE=@RABBITMQ_LOG_BASE@ diff --git a/docker/common/rabbitmq/rabbitmq.config b/docker/common/rabbitmq/rabbitmq.config index 15a47eba1..7cd0f6829 100644 --- a/docker/common/rabbitmq/rabbitmq.config +++ b/docker/common/rabbitmq/rabbitmq.config @@ -1,5 +1,6 @@ [ {rabbit, [ + @RABBITMQ_CLUSTER_CONFIGURATION@ {default_user, <<"@RABBITMQ_USER@">>}, {default_pass, <<"@RABBITMQ_PASS@">>} ]}, diff --git a/docker/common/rabbitmq/start.sh b/docker/common/rabbitmq/start.sh index f70c34866..4e76e382f 100755 --- a/docker/common/rabbitmq/start.sh +++ b/docker/common/rabbitmq/start.sh @@ -1,24 +1,7 @@ #!/bin/bash -set -e +. /opt/kolla/config-rabbit.sh -: ${RABBITMQ_USER:=guest} -: ${RABBITMQ_PASS:=guest} -: ${RABBITMQ_NODENAME:=rabbit} -: ${RABBITMQ_LOG_BASE:=/var/log/rabbitmq} - -sed -i ' - s|@RABBITMQ_USER@|'"$RABBITMQ_USER"'|g - s|@RABBITMQ_PASS@|'"$RABBITMQ_PASS"'|g -' /etc/rabbitmq/rabbitmq.config - -sed -i ' - s|@RABBITMQ_NODENAME@|'"$RABBITMQ_NODENAME"'|g - s|@RABBITMQ_LOG_BASE@|'"$RABBITMQ_LOG_BASE"'|g -' /etc/rabbitmq/rabbitmq-env.conf - -# work around: -# https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/653405 -echo "${RABBITMQ_SERVICE_HOST} `/usr/bin/hostname -s`" > /etc/hosts +configure_rabbit exec /usr/sbin/rabbitmq-server |
