Docker 部署RabbitMq集群 电脑版发表于:2020/10/29 15:39 ![Docker远征](https://img.tnblog.net/arcimg/hb/656ec4beace04f5e9a7b1d58b6368639.jpg "Docker远征") >#Docker 部署RabbitMq集群 [TOC] 镜像环境 ------------ ```bash docker pull rabbitmq:3-management ``` ![](https://img.tnblog.net/arcimg/hb/85bfd735a2a84e0b8ca06beae0ffa4c0.png) tn>镜像后面带management是带web管理界面的 官方示例 ------------ >官方启动方式 ```bash docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management ``` >启动方式加入其他参数(如用户名,密码) ```bash docker run -d -it --name myrabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management ``` >docker-compose.yml ```bash version: '3' services: rabbitmq: image: rabbitmq:3-management container_name: myrabbitmq hostname: myrabbitmq restart: always ports: - 5672:5672 - 15672:15672 volumes: - /var/docker/rabbitmq/data:/var/lib/rabbitmq environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_DEFAULT_PASS=123456 ``` tn>关于更多环境变量请参考:https://www.rabbitmq.com/configure.html#customise-environment Docker集群示例 ------------ >###安装RabbitMQ ```bash #第一个 docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management #第二个 docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management #第三个 docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management ``` tn>**注意**: 多个容器之间使用“--link”连接,此属性不能少; Erlang Cookie值必须相同,也就是RABBITMQ_ERLANG_COOKIE参数的值必须相同,原因见下文“配置相同Erlang Cookie”部分; >###加入RabbitMQ节点到集群 <br/> >设置节点1: ```bash docker exec -it myrabbit1 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app exit ``` >设置节点2,加入到集群: ```bash docker exec -it myrabbit2 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbit1 rabbitmqctl start_app exit ``` tn>参数“--ram”表示设置为内存节点,忽略次参数默认为磁盘节点。 >设置节点3,加入到集群: ```bash docker exec -it myrabbit3 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbit1 rabbitmqctl start_app exit ``` 设置好之后,使用http://物理机ip:15672 进行访问了,默认账号密码是guest/guest,效果如下图: ![](https://img.tnblog.net/arcimg/hb/cd49d920a05e4456b6e328ba28ab92b3.png) >###其他答疑 1.为什么要配置相同的erlang cookie? tn>因为RabbitMQ是用Erlang实现的,Erlang Cookie相当于不同节点之间相互通讯的秘钥,Erlang节点通过交换Erlang Cookie获得认证。 K8s集群示例 ------------ >官网貌似行不通...求大佬们指点一二