aboutsummaryrefslogtreecommitdiff
path: root/docker/centos/binary
diff options
context:
space:
mode:
authorMichal Stachowski <michal.stachowski@intel.com>2015-06-24 14:10:10 +0200
committerMichal Stachowski <michal.stachowski@intel.com>2015-06-24 14:10:10 +0200
commit214ac7e6084583f703041fdfd19d67dda9417274 (patch)
tree281419ad8522c2f77c8f1e19a897e0138e1c1d9e /docker/centos/binary
parent0f843e21543ccda337f7df20133c3479f9c6c738 (diff)
downloadkolla-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/centos/binary')
-rw-r--r--docker/centos/binary/rabbitmq/Dockerfile20
-rw-r--r--docker/centos/binary/rabbitmq/config-rabbit.sh56
2 files changed, 64 insertions, 12 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
+}