1.docker安装
#安装启动rabbitmq
yum install -y docker
echo 'net.ipv4.ip_forward = 1' >> /usr/lib/sysctl.d/50-default.conf
systemctl restart network
systemctl start docker
systemctl enable docker
docker pull rabbitmq:3.8.3-management
docker tag docker.io/rabbitmq:3.8.3-management rabbitmq
docker run -d --name rabbitmq -p -p 5672:5672 -p 15672:15672 rabbitmq
#加上以下配置可以创建用户和密码
# docker run -d --name rabbitmq -p -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq
2.rabbitmq镜像
rabbitmq 官方镜像地址
版本号 | 说明 |
---|---|
x.x.x | 基础版 |
x.x.x.management | 带有web页面的版本 |
我们下载web版本
docker pull 3.8.3-management
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq
浏览器访问ip@15672即可访问,默认账户guest,密码guest
3.rabbitmq集群
首先该集群需要配置的是rabbitmq之间可以相互通信,我们使用docker自带的–link模拟通信,在实际生产环境中可以配置hostname等来进行通信配置,
1. 部署三个rabbitmq,并使它们可以相互通信
docker run -d --hostname rabbit1 --name myrabbit1 -p 15680:15672 -p 5680:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq
#需要用--link进行互联容器之间可以相互通信 RABBITMQ_ERLANG_COOKIE配置 .erlang.cookie文件内容
docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq
docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq
docker logs myrabbit1 | grep home dir
#得出/var/lib/rabbitmq 所以拼接得 /var/lib/rabbitmq/.erlang.cookie
#拷贝到 /tmp目录
docker cp myrabbit1:/var/lib/rabbitmq/.erlang.cookie /tmp
#拷贝 myrabbit2 myrabbit3
docker cp /tmp/.erlang.cookie myrabbit2:/var/lib/rabbitmq/
docker cp /tmp/.erlang.cookie myrabbit3:/var/lib/rabbitmq/
分别进入 myrabbit1、2、3 配置文件权限
#第一个
docker exec -it myrabbit1 bash
chmod 600 /var/lib/rabbitmq/.erlang.cookie
exit
#第二个
docker exec -it myrabbit2 bash
chmod 600 /var/lib/rabbitmq/.erlang.cookie
exit
#第三个
docker exec -it myrabbit3 bash
chmod 600 /var/lib/rabbitmq/.erlang.cookie
exit
#使用rabbitmqctl join_cluster {cluster_node} [–ram] 将节点加入集群
#将 myrabbit1作为master,第一个
docker exec -it myrabbit1 bash
rabbitmqctl stop_app
#出现如下 结果 Stopping rabbit application on node rabbit@rabbit1 ... rabbit@rabbit1我们后面会用到
rabbitmqctl reset
rabbitmqctl start_app
exit
#第二个,这里用到了 --ram rabbit@rabbit1
docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
#第三个
docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
访问 http://ip:15680/ 帐号 guest 密码 guest
overview ----> nodes 会出现三个节点