docker搭建rabbitmq集群
2019-05-08 09:26
429 查看
#1. 环境准备
#####1.1 Docker主机规划
Docker主机 IP地址
[code]docker2.onlymin.com 172.18.1.152 docker3.onlymin.com 172.18.1.153 docker4.onlymin.com 172.18.1.154
#####1.2 RabbitMQ容器规划
容器-name :在宿主机上运行“docker ps”命令时显示的名称。
容器-hostname:容器内部的hostname。
容器-name 容器-hostname 容器宿主机 映射端口
[code]rabbit2 rabbit2.onlymin.com docker2.onlymin.com 4369、5671、5672、15671、15672、25672 rabbit3 rabbit3.onlymin.com docker3.onlymin.com 4369、5671、5672、15671、15672、25672 rabbit4 rabbit4.onlymin.com docker4.onlymin.com 4369、5671、5672、15671、15672、25672
#####1.3 DNS服务器设置
rabbitmq集群建立需要解析主机名,因此需要一台内网DNS,存在以下记录(或者修改容器的hosts文件)
[code]172.18.1.152 rabbit2.onlymin.com rabbit2 172.18.1.153 rabbit3.onlymin.com rabbit3 172.18.1.154 rabbit4.onlymin.com rabbit4
#####1.4 持久数据目录
建立目录用于存储rabbitmq容器数据
[code]mkdir /data/rabbitmq chmod 775 -R /data/rabbitmq
#2. 创建容器
#####2.1 在docker主机上创建容器rabbit2
[code]docker run -d --hostname rabbit2.onlymin.com \ --add-host="rabbit2.onlymin.com rabbit2":172.18.1.152 \ --add-host="rabbit3.onlymin.com rabbit3":172.18.1.153 \ --add-host="rabbit4.onlymin.com rabbit4":172.18.1.154 \ --name rabbit2 \ --log-opt max-size=10m \ --log-opt max-file=3 \ -p "4369:4369" \ -p "5671:5671" \ -p "5672:5672" \ -p "15671:15671" \ -p "15672:15672" \ -p "25672:25672" \ -v /data/rabbitmq:/var/lib/rabbitmq:z \ -e RABBITMQ_DEFAULT_USER=user01 \ -e RABBITMQ_DEFAULT_PASS=password01 \ -e RABBITMQ_ERLANG_COOKIE='secret cookie here' \ reg.onlymin.com/public/rabbitmq:3.6.15-management
参数说明
[code]-d 容器后台运行 --hostname rabbit2.onlymin.com 容器的主机名为 rabbit2.onlymin.com,容器内部的hostname --add-host="rabbit2.onlymin.com rabbit2":172.18.1.152 \ --add-host="rabbit3.onlymin.com rabbit3":172.18.1.153 \ --add-host="rabbit4.onlymin.com rabbit4":172.18.1.154 \ 修改容器内部的hosts,没有dns服务器的话就这么改 --name rabbit2 容器名为rabbit2,在宿主机上运行“docker ps”命令时显示的名称 --log-opt max-size=10m 日志文件单个最大10M --log-opt max-file=3 日志文件最多保留3个 -p "4369:4369" 映射宿主机端口4369到容器端口4369,主机端口在前 -p "5671:5671" 略 -p "5672:5672" 略 -p "15671:15671" 略 -p "15672:15672" 略 -p "25672:25672" 略 -v /data/rabbitmq:/var/lib/rabbitmq:z 将宿主机目录/data/rabbitmq挂载到容器的/var/lib/rabbitmq目录。z是一个标记,在selinux环境下使用。 -e RABBITMQ_DEFAULT_USER=user01 设置rabbitmq默认用户为user01 -e RABBITMQ_DEFAULT_PASS=password01 设置rabbitmq默认密码为password01 -e RABBITMQ_ERLANG_COOKIE='secret cookie here' 设置rabbitmq的cookie为“secret cookie here”,可以自定义为其他文本,三个容器保持一致即可。 reg.onlymin.com/public/rabbitmq:3.6.15-management 使用reg.onlymin.com/public/rabbitmq:3.6.15-management这个镜像
#####2.2 在docker主机上创建容器rabbit3
[code]docker run -d --hostname rabbit3.onlymin.com \ --add-host="rabbit2.onlymin.com rabbit2":172.18.1.152 \ --add-host="rabbit3.onlymin.com rabbit3":172.18.1.153 \ --add-host="rabbit4.onlymin.com rabbit4":172.18.1.154 \ --name rabbit3 \ --log-opt max-size=10m \ --log-opt max-file=3 \ -p "4369:4369" \ -p "5671:5671" \ -p "5672:5672" \ -p "15671:15671" \ -p "15672:15672" \ -p "25672:25672" \ -v /data/rabbitmq:/var/lib/rabbitmq:z \ -e RABBITMQ_DEFAULT_USER=user01 \ -e RABBITMQ_DEFAULT_PASS=password01 \ -e RABBITMQ_ERLANG_COOKIE='secret cookie here' \ reg.onlymin.com/public/rabbitmq:3.6.15-management
#####2.3 在docker主机上创建容器rabbit4
[code]docker run -d --hostname rabbit4.onlymin.com \ --add-host="rabbit2.onlymin.com rabbit2":172.18.1.152 \ --add-host="rabbit3.onlymin.com rabbit3":172.18.1.153 \ --add-host="rabbit4.onlymin.com rabbit4":172.18.1.154 \ --name rabbit4 \ --log-opt max-size=10m \ --log-opt max-file=3 \ -p "4369:4369" \ -p "5671:5671" \ -p "5672:5672" \ -p "15671:15671" \ -p "15672:15672" \ -p "25672:25672" \ -v /data/rabbitmq:/var/lib/rabbitmq:z \ -e RABBITMQ_DEFAULT_USER=user01 \ -e RABBITMQ_DEFAULT_PASS=password01 \ -e RABBITMQ_ERLANG_COOKIE='secret cookie here' \ reg.onlymin.com/public/rabbitmq:3.6.15-management
#3. 创建集群
#####3.1 进入容器
通过docker exec以交互式的方式执行容器里的/bin/bash,进入容器的rabbit37的shell。
[code]docker exec -it rabbit37 /bin/bash
#####3.2 设置管理员
在容器里执行命令,将用户user01设置为管理员
[code]rabbitmqctl set_user_tags user01 administrator
3.3 节点加入集群
首先以docker exec命令进入容器的命令行,
[code]docker exec -it rabbit3 /bin/bash
以磁盘节点方式加入,@后为主机名,不含域名。
[code]rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@rabbit2 rabbitmqctl start_app
以内存节点方式加入
[code]rabbitmqctl stop_app rabbitmqctl join_cluster --ram rabbit@rabbit2 rabbitmqctl start_app
- 故障节点的处理
进入容器,将要移除的故障节点停机.
[code]docker exec -it rabbit2 /bin/bash rabbitmqctl stop
在一个正常的节点上进行节点的移除.
[code]rabbitmqctl -n rabbit@rabbit3 forget_cluster_node rabbit@rabbit2
查看集群状态信息.
[code]rabbitmqctl cluster_status
相关文章推荐
- 使用docker搭建 Rabbitmq服务与 Activemq 服务 及 Rabbitmq集群
- docker搭建rabbitmq集群环境的方法
- RabbitMQ:Docker环境下搭建rabbitmq集群
- centos7 搭建docker内运行rabbitmq,然后再镜像ha方案的完全教程,暂时一个宿主机只能运行一个docker的rabbitmq,但是集群 ha都正常
- docker简易搭建RabbitMQ集群
- 搭建rabbitmq的docker集群
- DockerSwarm 集群环境搭建
- 使用docker搭建hadoop分布式集群
- RabbitMQ的安装及集群搭建方法
- docker:搭建单机redis主从集群
- Docker1.12.1之swarm集群搭建与使用
- Docker swarm 集群监控平台搭建流程 (influxdb + cadvisor + grafana)
- 基于Windows/Linux混合搭建Docker集群架构
- Docker 搭建 etcd 集群
- rabbitmq集群搭建方法简介(测试机linux centos)【转】
- 搭建基于Docker社区版的Kubernetes本地集群
- RabbitMQ3.6.5集群搭建和遇到的问题
- Docker1.12.1之swarm集群搭建与使用
- 基于docker搭建rabbitmq