Water's Home

Just another Life Style

0%

RabbitMQ Cluster Setup

Install RabbitMQ

[root@controller1 ~]# yum install erlang rabbitmq-server -y
[root@controller2 ~]# yum install erlang rabbitmq-server -y
[root@controller3 ~]# yum install erlang rabbitmq-server -y

[root@controller1 ~]# systemctl enable rabbitmq-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[root@controller2 ~]# systemctl enable rabbitmq-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[root@controller3 ~]# systemctl enable rabbitmq-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.

[root@controller1 ~]# systemctl start rabbitmq-server.service

[root@controller1 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management

Applying plugin configuration to rabbit@controller1… started 6 plugins.
[root@controller2 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management

Applying plugin configuration to rabbit@controller2… started 6 plugins.
[root@controller3 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management

Applying plugin configuration to rabbit@controller3… started 6 plugins.

Configure RabbitMQ for HA queues

[root@controller1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@controller2:/var/lib/rabbitmq/.erlang.cookie
.erlang.cookie 100% 20 19.8KB/s 00:00
[root@controller1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@controller3:/var/lib/rabbitmq/.erlang.cookie
.erlang.cookie 100% 20 34.2KB/s 00:00

On Each Nodes

# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

chmod 400 /var/lib/rabbitmq/.erlang.cookie

systemctl enable rabbitmq-server.service

systemctl start rabbitmq-server.service

[root@controller1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller1 …
[{nodes,[{disc,[rabbit@controller1]}]},
{running_nodes,[rabbit@controller1]},
{cluster_name,<<”rabbit@controller1”>>},
{partitions,[]},
{alarms,[{rabbit@controller1,[]}]}]
[root@controller2 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller2 …
[{nodes,[{disc,[rabbit@controller2]}]},
{running_nodes,[rabbit@controller2]},
{cluster_name,<<”rabbit@controller2”>>},
{partitions,[]},
{alarms,[{rabbit@controller2,[]}]}]
[root@controller3 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller3 …
[{nodes,[{disc,[rabbit@controller3]}]},
{running_nodes,[rabbit@controller3]},
{cluster_name,<<”rabbit@controller3”>>},
{partitions,[]},
{alarms,[{rabbit@controller3,[]}]}]

On Other Nodes

[root@controller2 ~]# rabbitmqctl stop_app
Stopping node rabbit@controller2 …
[root@controller3 ~]# rabbitmqctl stop_app
Stopping node rabbit@controller3 …

[root@controller2 ~]# rabbitmqctl join_cluster –ram rabbit@controller1
Clustering node rabbit@controller2 with rabbit@controller1 …
[root@controller3 ~]# rabbitmqctl join_cluster –ram rabbit@controller1
Clustering node rabbit@controller3 with rabbit@controller1 …

[root@controller2 ~]# rabbitmqctl start_app
Starting node rabbit@controller2 …
[root@controller3 ~]# rabbitmqctl start_app
Starting node rabbit@controller3 …

Set the HA-Mode Policy

[root@controller1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller1 …
[{nodes,[{disc,[rabbit@controller1]},
{ram,[rabbit@controller3,rabbit@controller2]}]},
{running_nodes,[rabbit@controller3,rabbit@controller2,rabbit@controller1]},
{cluster_name,<<”rabbit@controller1”>>},
{partitions,[]},
{alarms,[{rabbit@controller3,[]},
{rabbit@controller2,[]},
{rabbit@controller1,[]}]}]
[root@controller2 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller2 …
[{nodes,[{disc,[rabbit@controller1]},
{ram,[rabbit@controller3,rabbit@controller2]}]},
{running_nodes,[rabbit@controller3,rabbit@controller1,rabbit@controller2]},
{cluster_name,<<”rabbit@controller1”>>},
{partitions,[]},
{alarms,[{rabbit@controller3,[]},
{rabbit@controller1,[]},
{rabbit@controller2,[]}]}]
[root@controller3 ~]# rabbitmqctl set_policy ha-all ‘^(?!amq\.).*‘ ‘{“ha-mode”: “all”}’
Setting policy “ha-all” for pattern “^(?!amq\\.).*“ to “{\“ha-mode\“: \“all\“}” with priority “0” …
[root@controller3 ~]#
[root@controller3 ~]#
[root@controller3 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller3 …
[{nodes,[{disc,[rabbit@controller1]},
{ram,[rabbit@controller3,rabbit@controller2]}]},
{running_nodes,[rabbit@controller2,rabbit@controller1,rabbit@controller3]},
{cluster_name,<<”rabbit@controller1”>>},
{partitions,[]},
{alarms,[{rabbit@controller2,[]},
{rabbit@controller1,[]},
{rabbit@controller3,[]}]}]

[root@controller1 ~]# rabbitmqctl set_policy ha-all ‘^(?!amq\.).*‘ ‘{“ha-mode”: “all”}’
Setting policy “ha-all” for pattern “^(?!amq\\.).*“ to “{\“ha-mode\“: \“all\“}” with priority “0” …
[root@controller2 ~]# rabbitmqctl set_policy ha-all ‘^(?!amq\.).*‘ ‘{“ha-mode”: “all”}’
Setting policy “ha-all” for pattern “^(?!amq\\.).*“ to “{\“ha-mode\“: \“all\“}” with priority “0” …
[root@controller3 ~]# rabbitmqctl set_policy ha-all ‘^(?!amq\.).*‘ ‘{“ha-mode”: “all”}’
Setting policy “ha-all” for pattern “^(?!amq\\.).*“ to “{\“ha-mode\“: \“all\“}” with priority “0” …

Now, Take the Browser

img/HA-RabbitMQ-V1.gif)

username/password :

guest/guest

Configure OpenStack services to use RabbitMQ HA queues

transport_url = rabbit://RABBIT_USER:RABBIT_PASS@rabbit1:5672,
RABBIT_USER:RABBIT_PASS@rabbit2:5672,RABBIT_USER:RABBIT_PASS@rabbit3:5672
rabbit_retry_interval=1
rabbit_retry_backoff=2
rabbit_max_retries=0
rabbit_durable_queues=true
rabbit_ha_queues=true

For the Old Set-Up

# rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl start_app

Create RabbitMQ Admin

[root@controller1 ~]# rabbitmqctl add_user admin admin
Creating user “admin” …
[root@controller1 ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user “admin” to [administrator] …
[root@controller1 ~]# rabbitmqctl add_user openstack openstack
Creating user “openstack” …
[root@controller1 ~]# rabbitmqctl set_permissions openstack “.*“ “.*“ “.*“
Setting permissions for user “openstack” in vhost “/“ …
[root@controller1 ~]# rabbitmqctl set_user_tags openstack administrator
Setting tags for user “openstack” to [administrator] …
[root@controller1 ~]# systemctl restart rabbitmq-server.service