用到的ip地址
ip地址 | 端口 |
---|---|
192.168.101.65(主) | 15672 |
192.168.101.75 | 15672 |
192.168.101.85 | 15672 |
安装erlang和rabbitmq
安装
安装三个包
yum install esl-erlang_23.0-1_centos_7_amd64.rpm -y
yum install esl-erlang-compat-18.1-1.noarch.rpm -y
rpm -ivh rabbitmq-server-3.8.9-1.el7.noarch.rpm
启动rabbitmq和web插件
rabbitmq启动失败
[root@rabbitmq01 rabbitmq]# journalctl -xe
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: {{shutdown,
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: 14:02:03.632 [error] {failed_to_start_child,auth,
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: 14:02:03.632 [error] {"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces",
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: {failed_to_start_child,auth,
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: {"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces",
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: [{auth,init_cookie,0,[{file,"auth.erl"},{line,290}]},
rabbitmq没有读取.erlang.cookie的权限,修改权限所有者
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
配置镜像集群
修改映射文件
vi /etc/hosts
添加
192.168.101.65 rabbitmq01
192.168.101.75 rabbitmq02
192.168.101.85 rabbitmq03
重启网络服务
service network restart
同步 rabbitmq的cookie 文件.erlang.cookie (隐藏文件,使用 ls -all 显示)
scp /var/lib/rabbitmq/.erlang.cookie 192.168.101.75:/var/lib/rabbitmq
scp /var/lib/rabbitmq/.erlang.cookie 192.168.101.85:/var/lib/rabbitmq
75和85重启rabbitmq-server
systemctl restart rabbitmq-server
75和85加入集群
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq01
rabbitmqctl start_app
添加用户
rabbitmqctl add_user supeizhi 123
rabbitmqctl set_user_tags supeizhi administrator
rabbitmqctl set_permissions -p "/" supeizhi ".*" ".*" ".*"
设置镜像策略
pattern:“^queue_” 表示对队列名称以“queue_”开头的所有队列镜像,而"^"表示匹配所有的队列
definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
ha-mode:高可用模式,有效值为 all/exactly/nodes,策略模式为 all(复制到所有节点,包含新增节点)
创建队列
后面+1表示有一个消息节点(75节点)
点击testQueue发送消息
消息发送成功
将节点停掉
systemctl stop rabbitmq-server
后面加一没有了
启动另一个节点(85节点)
同步队列
rabbitmqctl sync_queue testQueue
变回蓝色