docker搭建 rabbitmq集群
1、拉取镜像
docker pull rabbitmq:management
2、运行容器
docker run -d --hostname rabbit_host1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management
docker run -d --hostname rabbit_host2 --name rabbitmq2 -p 5673:5672 --link rabbitmq1:rabbit_host1 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management
docker run -d --hostname rabbit_host3 --name rabbitmq3 -p 5674:5672 --link rabbitmq1:rabbit_host1 --link rabbitmq2:rabbit_host2 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management
主要参数:
-p 15672:15672 management 界面管理访问端口
-p 5672:5672 amqp 访问端口
--link 容器之间连接
Erlang Cookie 值必须相同,也就是一个集群内 RABBITMQ_ERLANG_COOKIE 参数的值必须相同。因为 RabbitMQ 是用Erlang实现的,Erlang
Cookie 相当于不同节点之间通讯的密钥,Erlang节点通过交换
Erlang Cookie 获得认证
3、加入节点到集群
设置节点1:
docker exec -it rabbitmq1 bash
root@rabbit_host1:/#rabbitmqctl stop_app
root@rabbit_host1:/#rabbitmqctl reset
root@rabbit_host1:/#rabbitmqctl start_app
root@rabbit_host1:/#exit
设置节点2,加入到集群:
docker exec -it rabbitmq2 bash
root@rabbit_host2:/#rabbitmqctl stop_app
root@rabbit_host2:/#rabbitmqctl reset
root@rabbit_host2:/# rabbitmqctl join_cluster --ram rabbit@rabbit_host1
root@rabbit_host2:/#rabbitmqctl start_app
root@rabbit_host2:/# exit
设置节点3,加入到集群:
docker exec -it rabbitmq3 bash
root@rabbit_host3:/# rabbitmqctl stop_app
root@rabbit_host3:/# rabbitmqctl reset
root@rabbit_host3:/# rabbitmqctl join_cluster --ram rabbit@rabbit_host1
root@rabbit_host3:/# rabbitmqctl start_app
root@rabbit_host3:/# exit
主要参数:
--ram 表示设置为内存节点,忽略次参数默认为磁盘节点。该配置启动了3个节点,1个磁盘节点和2个内存节点。
设置好之后,使用 http://ip:15672 进行访问,默认账号密码:guest/guest
4、集群查看
root@rabbit_host1:/# rabbitmqctl cluster_status