使用Docker部署RabbitMQ集群
使用 Docker 部署RabbitMQ集群
概述
本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘。
Windows10上Docker的安装
因为本人用的是Windows系统,所有推荐一个不错的安装文章,详见:https://blog.csdn.net/xiaoping0915/article/details/75094857
下载RabbitMQ镜像
1.镜像地址
RabbitMQ Docker官方认证镜像地址:https://dev.aliyun.com/detail.html?spm=5176.1971733.2.16.6c045aaaDxFoMn&repoId=1256
2.安装命令
安装之前,切记把Docker Hub设置为阿里云的加速,方便安装。
docker pull rabbitmq:3.6.15-management
注意使用后缀为"-management"的镜像版本,是包含网页控制台的。
3.查看安装
使用命令:docker images查看下载的镜像,如下图所示:
Docker常用命令
容器 停止:docker stop 容器名称 启动容器:docker start 容器名称 删除容器:docker rm 容器名称 删除镜像:docker rmi 镜像名称 查看运行的所有容器:docker ps 查看所有容器:docker ps -a 容器复制文件到物理机:docker cp 容器名称:容器目录 物理机目录 物理机复制文件到容器:docker cp 物理机目录 容器名称:容器目录
进入Docker目录
简单的进入Docker容器的方法分为3种:
- 使用attach
- 使用SSH
- 使用exec
1.attach
attach有一个缺点,当连接终止的时候,或者使用exit之后,容器就会退出后台运行,所以不适合生产环境使用。既然不好用,我们在这里就不过多的介绍它了。
2.SSH
按照之前我们使用liunx的习惯,使用ssh连接 服务器 似乎是一个很诱人的答案,但这样做并不优雅,也不是最佳的实践方式,详情点击查看:https://blog.csdn.net/bolg_hero/article/details/50267103
3.exec
exec无疑是我们现阶段最好的实践方案,一起来看它是怎么使用的。
进入docker命令:
docker exec -it /bin/bash
其中/bin/bash 也可能是/bin/sh.
使用docker exec --help查看更多命令,和命令说明。
退出docker:
exit
启动RabbitMQ
docker run -d --hostname localhost --name myrabbit -p 15672:15672 -p 5672:5672 rabbitmq:3.6.15-management
参数说明:
- -d 后台进程运行
- hostname RabbitMQ主机名称
- name 容器名称
- -p port:port 本地端口:容器端口
- -p 15672:15672 http访问端口
- -p 5672:5672 amqp访问端口
启动完成之后,使用:docker ps 查看程序运行情况。
使用:http://宿主ip:15672 访问,用户名密码使用默认:guest/guest.
启动多个RabbitMQ
- docker run -d --hostname localhost --name myrabbit -p 15672:15672 -p 5672:5672 rabbitmq:3.6.15-management
- docker run -d --hostname localhost2 --name myrabbit2 -p 15673:15672 -p 5673:5672 rabbitmq:3.6.15-management
这样我们就可以使用,http://宿主ip:15672 和 http://宿主ip:15673 进行访问了,默认账号密码依旧是guest/guest.
搭建RabbitMQ集群
步骤一:安装RabbitMQ;
步骤二:加入RabbitMQ节点到集群;
步骤一:安装RabbitMQ
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
具体的参数含义,参见上文“启动RabbitMQ”部分。
注意点:
- 多个容器之间使用“--link”连接,此属性不能少;
- Erlang Cookie值必须相同,也就是RABBITMQ_ERLANG_COOKIE参数的值必须相同,原因见下文“配置相同Erlang Cookie”部分;
步骤二:加入RabbitMQ节点到集群
设置节点1:
docker exec -it myrabbit1 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app
设置节点2,加入到集群:
docker exec -it myrabbit2 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbit1 rabbitmqctl start_app
参数“--ram”表示设置为内存节点,忽略次参数默认为磁盘节点。
设置节点3,加入到集群:
docker exec -it myrabbit3 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbit1