1. 在三台服务器上安装RabbitMQ
erlang下载:https://dl.bintray.com/rabbitmq-erlang/rpm/erlang
socat下载:http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
RabbitMQ下载:https://www.rabbitmq.com/install-rpm.html#downloads
安装:
rpm -ivh erlang-21.3.8.16-1.el7.x86_64.rpm
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
rpm -ivh rabbitmq-server-3.8.6-1.el7.noarch.rpm
其他命令:
- 启动后台管理插件
-rabbitmq-plugins enable rabbitmq_management
- 启动RabbitMQ
systemctl start/status/restart/stop rabbitmq-server.service
- 查看进程
ps -ef | grep rabbitmq
- 测试
- 关闭防火墙:
systemctl stop firewalld
- 创建账户:
rabbitmqctl add_user username password
- 设置用户角色:
rabbitmqctl set_user_tags username administrator
- 设置用户权限:
rabbitmqctl set_permissions -p "/" laosun ".*" ".*" ".*"
- 查看当前用户和角色:
rabbitmqctl list_users
- 查看当前用户和角色:
rabbitmqctl change_password username password
- 关闭防火墙:
2. 修改 /etc/hosts 映射文件
-
vim /etc/hosts
- A号服务器
- B号服务器
- C号服务器
3. 相互通信
- 相互通信,cookie必须保持一致,同步 rabbitmq的cookie 文件。
cd /var/lib
cd rabbimq
ls -all
cat .erlang.cookie
- 跨服务器拷贝:
scp /var/lib/rabbitmq/.erlang.cookie ip:/var/lib/rabbitmq
- A:
IFVMRMAXCEJHCKHIPHCP
- B:
IFVMRMAXCEJHCKHIPHCP
- C:
IFVMRMAXCEJHCKHIPHCP
- A:
- 修改cookie文件,要重启服务器,
reboot
.
4. 停止防火墙,启动rabbitmq服务
systemctl stop firewalld
systemctl start rabbitmq-server
5. 加入集群节点
- 将B,C加入到A中,则分别在B,C端操作。
- 暂停节点:
rabbitmqctl stop_app
- 将节点加入到A中:
rabbitmqctl join_cluster rabbit@A
- 重启节点:
rabbitmqctl start_app
- 查看节点状态:
rabbitmqctl cluster_status
(可以不看)
- 暂停节点:
6. 重新创建用户。
- 如果在单机状态时,创建了用户或进行了其他的操作,这些信息在搭建集群时,会被隐藏起来,失去作用。因此需要重新创建。
- 当恢复到单机状态时,原来创建的用户和其他信息会恢复。
7. 查看管理端
8. 镜像模式
rabbitmqctl set_policy xall "^" '{"ha-mode":"all"}'
语法:set_policy {name} {pattern} {definition}
- name:策略名,可自定义
- pattern:队列的匹配模式(正则表达式)
- definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
- ha-mode:(High Available,高可用)模式,指明镜像队列的模式。
- all:表示在集群中所有的节点上进行镜像
- exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
- nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
- ha-params:ha-mode模式需要用到的参数。
- ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
- ha-mode:(High Available,高可用)模式,指明镜像队列的模式。