首页 > 代码库 > RabbitMQ cluster
RabbitMQ cluster
环境准备
主机版本
Linux control-ha-3 4.4.0-45-generic #66-Ubuntu SMP Wed Oct19 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Erlang版本号
Erlang/OTP 18 [erts-7.3] [source] [64-bit][async-threads:10] [hipe] [kernel-poll:false]
Eshell V7.3 (abortwith ^G)
rabbitmq版本
Version: 3.5.7-1
Depends: adduser, erlang-nox (>= 1:13.b.3) | esl-erlang,logrotate, init-system-helpers (>= 1.18~)
安装erlang
# apt-get installerlang
常用命令
1 查看所有队列信息
# rabbitmqctl list_queues
2 关闭应用
# rabbitmqctl stop_app
3 启动应用,和上述关闭命令配合使用,达到清空队列的目的
# rabbitmqctl start_app
4 清除所有队列
# rabbitmqctl reset
5 更多用法及参数,可以执行如下命令查看
# rabbitmqctl
6 首先关闭
# rabbitmqctlstop_app
7 还原:
# rabbitmqctlreset
8 启动:
# rabbitmqctlstart_app
9 添加用户:
# rabbitmqctladd_user dftc dftcp@ss
10 设置权限:
# rabbitmqctlset_permissions -p / dftc ".*" ".*" ".*"
11 查看用户:
# rabbitmqctllist_users
control1, control 2, control 3以及其相关配置
搭载了RabbitMQ服务的Ubuntu服务器。
1. Control1具体网络配置如下:
Ip address | 192.168.163.141 |
net mask | 255.255.255.0 |
gateway | 192.168.163.2 |
Dns | 114.114.114.114 |
2. Control2具体网络配置如下:
Ip address | 192.168.163.142 |
net mask | 255.255.255.0 |
gateway | 192.168.163.2 |
Dns | 114.114.114.114 |
3. Control3具体网络配置如下:
Ip address | 192.168.163.143 |
net mask | 255.255.255.0 |
gateway | 192.168.163.2 |
Dns | 114.114.114.114 |
RabbitMQ单节点配置流程
1. 配置3台台可以接入公网的CentOS,然后在各机器中按序执行一下命令:
# apt-getinstall erlang -y
# wgethttps://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_5/rabbitmq-server_3.6.5-1_all.deb
# rabbitmq-server
# rabbitmq-pluginsenable rabbitmq_management
2. 在每个节点配置/etc/hosts中最后增加下面内容:
#vi /etc/hosts
192.168.163.141 control1
192.168.163.142 control2
192.168.163.143 control3
输入erl确认erlang已经正确安装
当出现以上信息时表示安装完成。然后输入’halt().’退出即可。
然后在配置Erlang环境变量,vi /etc/profile文件,增加下面的环境变量:
#seterlang environment
exportPATH=$PATH:/opt/erlang/bin
3. 重启三台机器
#reboot
4. 构建起erlang的集群环境
Rabbitmq的集群是依赖于erlang的集群来工作的。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,所以必须保证各节点cookie保持一致,否则节点之间就无法通信。
使用以下命令将Control1中的/var/lib/rabbitmq/.erlang.cookie 复制到其他节点。在Control1节点运行以下命令:
# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.163.142: /var/lib/rabbitmq/.erlang.cookie
# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.163.143: /var/lib/rabbitmq/.erlang.cookie
由于文件是400的权限,所以在Control2以及Control3节点运行以下命令:
保证权限属主属组完全一致
# chmod 400/var/lib/rabbitmq/.erlang.cookie
# chown rabbitmq.rabbitmq/var/lib/rabbitmq/.erlang.cookie
完成后运行rabbitmqctl stop 然后 rabbitmq-server 重启服务
# rabbitmqctl stop
# /sbin/service rabbitmq-server restart
在Control1节点增加用户,并且为用户赋予权限
# rabbitmqctl add_user dftc dftcp@ss(测试环境使用queuep@ss)
# rabbitmqctl set_user_tags dftc administrator
# rabbitmqctl set_permissions -p / dftc ‘.*‘‘.*‘ ‘.*‘
通过http://192.168.163.141:15672 用户名为:dftc 密码为:dftcp@ss(测试环境使用queuep@ss)连入第一台配置成功的RabbitMQ服务器。其他节点暂不配置
Iptables打开对应端口,尤其注意4369和25672,没有打开的时候,添加集群会报错并提示打开
#rabbitmq cluster
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT
RabbitMQ集群搭建
1. RabbitMQ相关的配置
使用 -detached 参数,在各节点中运行以下命令:
# rabbitmqctl stop
# rabbitmq-server –detached
组成集群,在control2与control3中分别运行以下命令:
# rabbitmqctl stop_app
# rabbitmqctl join_cluster --ramrabbit@rabbitmq-control1(跟据实际主机名确定)
# rabbitmqctl start_app
可选步骤:在已经可用的Control1的web页面,配置
注:红框内的内容在没配置之前是没有的。
本文出自 “NB小菜鸟” 博客,谢绝转载!
RabbitMQ cluster