测试环境搭建rabbitmq集群模式
配置文件目录:/qj/rabbitmq-cluster/
服务名称 | IP地址 | 端口 |
---|---|---|
主rabbitmq-node1 | 172.17.3.135 | 15672 |
从rabbitmq-node2 | 172.17.3.99 | 15672 |
1.主节点rabbitmq-node1搭建
docekr启动命令:
docker run -d --hostname rabbitmq-node1 --name rabbitmq-node1 --add-host rabbitmq-node2:172.17.3.99 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456789 -v /qj/rabbitmq-cluster/data:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 4369:4369 -e RABBITMQ_ERLANG_COOKIE=‘rabbitcookie’ --restart always registry.cn-beijing.aliyuncs.com/qianjia_public/rabbitmq:3.7.4
端口说明:
15672:访问 RabbitMQ 的 Web 管理界面
5672:AMDQ消息之间的
4369,epmd(Erlang Port Mapper Daemon),是Erlang的端口/结点名称映射程序,用来跟踪节点名称监听地址,在集群中起到一个类似DNS的作用。
25672:server间内部通信口
2.登录rabbitmq node1节点:
docker exec -it rabbitmq-node1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
3.从节点rabbitmq-node2搭建
docker启动命令:
docker run -d --hostname rabbitmq-node2 --name rabbitmq-node2 --add-host rabbitmq-node1:172.17.3.135 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456789 -v /qj/rabbitmq-cluster/data:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 4369:4369 -e RABBITMQ_ERLANG_COOKIE=‘rabbitcookie’ --restart always registry.cn-beijing.aliyuncs.com/qianjia_public/rabbitmq:3.7.4
4.进入rabbitmq-node2节点
将rabbitmq-node2加入集群
#进入到node2节点
docker exec -it rabbitmq-node2 bash
登录rabbitmq node2节点:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq-node1 --ram 设置rabbitmq为内存存储模式 --disc 设置rabbitmq为硬盘存储模式
rabbitmqctl start_app
5.查看rabbitmq-node1节点状态
root@rabbitmq-node1:/# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq-node1 ...
[{nodes,[{disc,['rabbit@rabbitmq-node1','rabbit@rabbitmq-node2']}]},
{running_nodes,['rabbit@rabbitmq-node2','rabbit@rabbitmq-node1']},
{cluster_name,<<"rabbit@rabbitmq-node1">>},
{partitions,[]},
{alarms,[{'rabbit@rabbitmq-node2',[]},{'rabbit@rabbitmq-node1',[]}]}]
出现如上提示代表加入成功!
6.nginx反代rabbitMQ
修改nginx,conf文件添加如下配置:
stream {
upstream rabbit {
server 172.17.3.135:5672;
server 172.17.3.99:5672;
}
server {
listen 4672;
proxy_pass rabbit;
}
}