RabbitMQ集群部署(Rancher),rabbitmqrancher


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

 

相关内容