RabbitMQ 集群架构介绍
 
1我们先克隆当前的虚拟机 
修改ip地址
2 在idea中编写yml语句
#3.8.5-management-alpine 带图形化界面 体积小适合开发环境 #在搭建rabbitMQ集群时 必须保证 cookie必须一直 值随便 #5272 是通信端口 15272是图形化界面 4369 集群之间交互端口 25672 集群之间也需要开放的端口 version: '3.1' services: rabbitmql: image: rabbitmq:3.8.5-management-alpine container_name: rabbitmq1 hostname: rabbitmq1 extra_hosts: - "rabbitmq1:192.168.1.137" - "rabbitmq2:192.168.1.138" environment: - RABBITMQ_ERLANG_COOKIE=SDFHKSFS ports: - 5672:5672 - 15672:15672 - 4369:4369 - 25672:25672 --- version: '3.1' services: rabbitmq2: image: rabbitmq:3.8.5-management-alpine container_name: rabbitmq2 hostname: rabbitmq2 extra_hosts: - "rabbitmq1:192.168.1.137" - "rabbitmq2:192.168.1.138" environment: - RABBITMQ_ERLANG_COOKIE=SDFHKSFS ports: - 5672:5672 - 15672:15672 - 4369:4369 - 25672:25672
3 在虚拟机中拉取镜像文件 分别在两台虚拟机上创建(如果docker中已经有可rabbitmq 镜像 我们需要stop掉 然后再运行下面指令)
vi docker-compose.yml
复制上面的第一段yml配置
docker-compose up -
当成功运行mq1 和mq2都能在docker中正常运行 ,但是在访问图形化界面时
mq2 无法访问,这是因为 防火墙需要先启动防火墙再重新关闭
systemctl start firewalld
systemctl stop firewalld

 
 
 
 
让谁加入谁 就进入到加入方的容器内部
docker exec -it rabbitmq2 bash
rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl join_cluster rabbit@rabbitmq1
这里报错

我们先关闭node1的防火墙 (按照报错提示来 2 erlangCookie 检查是否写错 我们是复制的不可能写错 3 检查节点是否正常运行 上述图可知 mq正常运行 )
此时的问题是在容器内部无法访问外面的网络 宿主机但是可以ping通 但是容器无法ping通

此时我们退出容器 重启docker
systemctl restart docker
启动rabbitMQ1
docker start rabbitmq1
启动rabbitMQ2
docker start rabbitmq2
然后重新进入rabbitMQ2 重新上述4步骤
bash-5.0# rabbitmqctl stop_app bash-5.0# rabbitmqctl reset bash-5.0# rabbitmqctl join_cluster rabbit@rabbitmq1 bash-5.0# rabbitmqctl start_app


当我们在mq1中创建一个queue 当mq1 宕机后 mq2接替mq1中的queue
因此我们需要设置镜像模式


 
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号