基于Docker的RabbitMQ集群搭建作业

基于Docker的RabbitMQ集群搭建作业

1. 目标

搭建一个拥有三个节点的RabbitMQ集群

2. 准备工作

Ubuntu下安装Docker,并配置国内镜像

3. 部署RabbitMQ集群

使用docker部署RabbitMQ非常方便,本作业使用带web管理界面的镜像rabbitmq:management。

基于构建集群的目的,相对于部署一个单独的RabbitMQ节点,需要注意以下两点:

RabbitMQ nodes address each other using domain names, either short or fully-qualified (FQDNs). Therefore hostnames of all cluster members must be resolvable from all cluster nodes, as well as machines on which command line tools such as rabbitmqctl might be used.

  • 所有节点都需要设置相同的ErLang Cookie。

RabbitMQ nodes and CLI tools (e.g. rabbitmqctl) use a cookie to determine whether they are allowed to communicate with each other. For two nodes to be able to communicate they must have the same shared secret called the Erlang cookie. The cookie is just a string of alphanumeric characters up to 255 characters in size.

3.1 部署RabbitMQ应用
  • 本作业使用docker networking方案进行域名解析,所以首先创建一个名为rabbit_net的网络
$ docker network create rabbit_net
  • 部署三个RabbitMQ节点,分别为rabbitmq-node0、rabbitmq-node1、rabbitmq-node2,设置相同的ErLang Cooike,并加入到rabbit_net中。因为Unix*下RABBITMQ_NODENAME的默认配置是rabbit@$HOSTNAME,所以本作业保持容器名和hostname一致,使RabbitMQ的HOSTNAME和rabbit_net中的hostname相同。
$ docker run -d --name rabbitmq-node0 \
    -h rabbitmq-node0 \
    --publish 5671:5671 \
    --publish 5672:5672 \
    --publish 25672:25672 \
    --publish 15672:15672 \
    -e RABBITMQ_ERLANG_COOKIE='JOLLYCHICFOURIER' \
    --net=rabbit_net \
    rabbitmq:management
    
$ docker run -d --name rabbitmq-node1 \
    -h rabbitmq-node1 \
    --publish 5681:5671 \
    --publish 5682:5672 \
    --publish 25682:25672 \
    --publish 15682:15672 \
    -e RABBITMQ_ERLANG_COOKIE='JOLLYCHICFOURIER' \
    --net=rabbit_net \
    rabbitmq:management
    
$ docker run -d --name rabbitmq-node2 \
    -h rabbitmq-node2 \
    --publish 5691:5671 \
    --publish 5692:5672 \
    --publish 25692:25672 \
    --publish 15692:15672 \
    -e RABBITMQ_ERLANG_COOKIE='JOLLYCHICFOURIER' \
    --net=rabbit_net \
    rabbitmq:management

RabbitMQ各端口的功能:

4369 (epmd)
5672, 5671 (AMQP 0-9-1 without and with TLS)
15672 (if management plugin is enabled)
25672 (Erlang distribution)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled)

所以按照默认端口配置,部署完以后就可以登录 http://宿主机IP:15672 就能进入管理页面。rabbitmq默认用户名及密码:guest/guest。

3.2 集群配置

基于上述部署的节点,RabbitMQ的集群配置相对简单。由于节点都在同一个网络,并且设置了相同的ErlangCookie。所以登录到任何一个节点,通过rabbitmqctl就能操作集群中的其他所有节点。

  • 使用docker登录到rabbitmq-node0
$ docker exec -it rabbitmq-node0 /bin/sh
  • 在rabbitmq-node0中进行集群配置。
$ rabbitmqctl -n rabbit@rabbitmq-node1 stop_app
$ rabbitmqctl -n rabbit@rabbitmq-node1 join_cluster rabbit@rabbitmq-node0
$ rabbitmqctl -n rabbit@rabbitmq-node1 start_app

$ rabbitmqctl -n rabbit@rabbitmq-node2 stop_app
$ rabbitmqctl -n rabbit@rabbitmq-node2 join_cluster rabbit@rabbitmq-node0
$ rabbitmqctl -n rabbit@rabbitmq-node2 start_app

至此,作业完成。

转载于:https://my.oschina.net/amhuman/blog/1928330

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值