RabbitMQ集群 Docker一键部署
2016-09-26 17:13
666 查看
以下内容来自网络转载
步骤1. 安装docker
以centos7为例,https://docs.docker.com/engine/installation/linux/centos/
步骤2. 创建节点互联基础
#创建Docker私有网络 docker network create rabbitmqnet
步骤3. 创建节点
#使用Docker Networking,分别创建三个节点 docker run -d \ --name=rabbitmq1 \ -p 5672:5672 \ -p 15672:15672 \ -e RABBITMQ_NODENAME=rabbitmq1 \ -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ' \ -h rabbitmq1 \ --net=rabbitmqnet \ rabbitmq:3.5-management
docker run -d \
--name=rabbitmq2 \
-p 5673:5672 \
-p 15673:15672 \
-e RABBITMQ_NODENAME=rabbitmq2 \
-e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ' \
-h rabbitmq2 \
--net=rabbitmqnet \
rabbitmq:3.5-management
docker run -d \
--name=rabbitmq3 \
-p 5674:5672 \
-p 15674:15672 \
-e RABBITMQ_NODENAME=rabbitmq3 \
-e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ' \
-h rabbitmq3 \
--net=rabbitmqnet \
rabbitmq:3.5-management
步骤4. 加入集群
#磁盘节点 docker exec rabbitmq2 bash -c \ "rabbitmqctl stop_app && \ rabbitmqctl reset && \ rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && \ rabbitmqctl start_app"
#内存节点 docker exec rabbitmq3 bash -c \ "rabbitmqctl stop_app && \ rabbitmqctl reset && \ rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1 && \ rabbitmqctl start_app"
步骤5. 设置镜像队列
设置所有队列为镜像队列,除了amq开头的交换器绑定队列。 生成环境不建议这种处理, 应该设置部分队列为镜像队列。docker exec rabbitmq1 rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}'
步骤6. 退出集群
docker exec rabbitmq3 bash -c \ "rabbitmqctl stop_app && \ rabbitmqctl reset && \ rabbitmqctl start_app"
集群重启
集群节点的关闭顺序与节点的启动顺序相反,即最后关闭的最先启动,并且最后关闭的节点必须是磁盘节点。请务必遵守按此步骤处理,否则可能造成集群无法启动,造成元数据,消息丢失的情况。Docker容器不同于虚拟机或主机,容器内部署的应用无法启动,基本上这个容器就废了。Docker现在不允许做一些已创建容器的启动参数调整。
集群部署、运行准则
1. 保证集群中至少有一个在线,那怕这个节点是内存节点.2. 如果关闭整个集群节点,必须按照顺序逐个关闭,并且最后一个关闭节点务必为磁盘节点。在启动时倒着顺序启动。(如关闭顺序r1,r2,r3.那么启动顺序为r3,r2,r1).
3. 集群中如果使用了虚拟技术(Docker,VM),虚拟节点不能全在同一台物理机中。(你不能保证物理机不会宕机,如果宕机基本上集群是启动不了的.你不知道关闭顺序,你就无法确定启动顺序,并且宕机关闭时间可能RabbitMQ节点都没有反应过来,无法做一些集群状态处理。)
参考资料
- RabbitMQ Doc - Clustering Guide
- RabbitMQ Doc - Highly Available Queues
- RabbitMQ 实战 - 第五章 集群并处理失败
相关文章推荐
- SpringBoot + maven + Jenkins + docker 实现docker集群一键自动化部署
- docker部署rabbitmq集群的实现方法
- Docker部署Rabbitmq集群及实现定时消息
- 【docker】kubernetes集群一键部署包
- 【亲测】Marathon+Mesos+Zookeeper+Docker的多Master集群平台部署
- RabbitMQ集群部署(Rancher)
- 在Docker中从头部署自己的Spark集群
- docker部署rabbitMQ
- docker中部署redis集群
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
- RabbitMQ集群、镜像部署配置
- 整理docker及Hadoop脚本(四)-在docker集群集群中一键式部署hadoop
- Docker 构建 RabbitMQ 集群
- Docker Swarm集群部署应用
- 使用docker安装部署Spark集群来训练CNN(含Python实例)
- rabbitmq集群部署及配置
- linux(deepin15.4)下部署集群RabbitMQ消息队列(二)
- RabbitMQ集群与高可用部署
- 用 vagrant 快速部署 docker 虚拟机集群
- 在Docker中从头部署自己的Spark集群