RabbitMQ集群部署(Rancher)
RabbitMQ集群部署(Rancher)1. 镜像制作1.1 rabbitmq-base镜像制作制作基础的RabbitMQ,选取centeros版本为7,RabbitMQ版本为3.6.12,基础镜像所用版本和其他镜像保持一致。通过docker build -t rabbitmq-base:xxxx .打镜像,注意最后的“.”,版本号自定义,例如1.0.0。1.2 rabbi
RabbitMQ集群部署(Rancher)
1. 镜像制作
1.1 rabbitmq-base镜像制作
制作基础的RabbitMQ,选取centeros版本为7,RabbitMQ版本为3.6.12,基础镜像所用版本和其他镜像保持一致。通过docker build -t rabbitmq-base:xxxx .打镜像,注意最后的“.”,版本号自定义,例如1.0.0。
1.2 rabbitmq-server镜像制作
通过server下的四个文件Dockerfile、erlang.cookie、rabbitmq.config、startrabbit.sh生成rabbitmq-server:xxxx的镜像(目前镜像版本为1.0.4),具体生成办法和1.1相同。
1.3 rabbitmq-server镜像上传
1.3.1 登录镜像仓库
docker login -u username-p passeword 192.168.10.238。
username和password及镜像服务器随具体情况变更。
1.3.2 对已生成镜像重打TAG
docker tagrabbitmq-server:1.0.4 192.168.10.238/dev/rabbitmq-server:1.0.4
1.3.3 推送镜像
docker push192.168.10.238/dev/rabbitmq-server:1.0.4(目前可以镜像)
2. 存储卷
在Rancher中通过镜像新建服务rabbit1、rabbit2、rabbit3三个服务,具体配置见下图。
例如可以将rabbit1端口进行映射,5672->5672、15672-15672;rabbit2端口进行映射,5672->5673、15672->15673;rabbit3端口进行映射5672->5674、15672->15674。同时需要配置存储卷、主机名等,注意名称对应。
3. 集群关联
各个服务运行起来以后进入到rabbit2中,可以通过登录对应主机及主机内容器进入(docker exec -i -t dockerId bash),也可通过Rancher上提供的执行命令进入。
下面以rabbit2为例子(rabbit3的操作相同),将2挂载到1上:
3.1.1 停止服务
rabbitmqctlstop_app
3.1.2 将2挂载到1上构成集群
下面介绍两种方式ram或disk,各自有各自的优缺点。RAM方式为内存,速度快,但易丢失;Disk方式,速度慢,磁盘IO大,不丢失。两个方式根据需要2选一。
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctljoin_cluster rabbit@rabbit1
3.1.3 启动服务
rabbitmqctl start_app
4. 镜像队列
镜像队列的配置即可以使用语句,也可以使用RabbitMQ带有的界面进行操作,对队列进行镜像。
4.1.1 RabbitMQ控制台(推荐)
4.1.2 命令方式
rabbitmqctl set_policy ha-allqueue "^"'{"ha-mode":"all"}'
这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为“^” 表示所有匹配所有队列名称。
set_policy使用规则:set_policy[-p vhostpath] {name} {pattern} {definition} [priority]
5. 负载(Rancher上的LB)
具体配置见下图,目的是使其他的服务访问时只用访问下面所配置的负载均衡,并不用指定固定的rabbit1或rabbit2、rabbit3。
6. 参考
http://blog.csdn.net/zhangningkid/article/details/75258444
更多推荐
所有评论(0)