docker 启动rabbitmq

docker 启动rabbitmq

rabbitmq官方推荐的启动方式是通过docker进行启动。因为不用安装Erlang语音等环境

rabbitmq官网:https://www.rabbitmq.com/download.html

启动命令

单节点启动

docker run -it --rm -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

这是官方的例子

多节点启动

普通集群

#节点一,主节点,创建-v映射目录
docker run -d --hostname rabbit_host1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password  -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/1/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/1/log:/var/log/rabbitmq rabbitmq:management
​
#节点二,创建-v映射目录
docker run -d --hostname rabbit_host2 --name rabbitmq2  -p 15673:15672 -p 5673:5672 --link rabbitmq1:rabbit_host1 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/2/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/2/log:/var/log/rabbitmq rabbitmq:management
​
#节点三,创建-v映射目录
docker run -d --hostname rabbit_host3 --name rabbitmq3 -p 15674:15672 -p 5674:5672 --link rabbitmq1:rabbit_host1 --link rabbitmq2:rabbit_host2 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/3/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/3/log:/var/log/rabbitmq rabbitmq:management

参数说明:

--hostname 自定义Docker容器的 hostname
​
--link 容器之间连接,link不可或缺,使得三个容器能互相通信
​
--privileged=true 使用该参数,container内的root拥有真正的root权限,否则容器出现permission denied
​
-v 宿主机和容器路径映射
​
参数 RABBITMQ_NODENAME,缺省 Unix*: rabbit@$HOSTNAME
参数 RABBITMQ_DEFAULT_USER=admin
参数 RABBITMQ_DEFAULT_PASS=xdclass.net168
​
Erlang Cookie 值必须相同,也就是一个集群内 RABBITMQ_ERLANG_COOKIE 参数的值必须相同, 相当于不同节点之间通讯的密钥,erlang.cookie是erlang的分布式token文件,集群内各个节点的erlang.cookie需要相同,才可以互相通信

上面是启动了三个节点,就是三个rabbitmq,但仍没有形成集群。

配置普通集群

节点一配置集群
docker exec -it rabbitmq1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit


节点二加入集群,--ram是以内存方式加入,忽略该参数默认为磁盘节点。
docker exec -it rabbitmq2 bash
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbit_host1
rabbitmqctl start_app
exit


节点三加入集群,--ram是以内存方式加入,忽略该参数默认为磁盘节点。

docker exec -it rabbitmq3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit_host1
rabbitmqctl start_app
exit

#查看集群节点状态,配置启动了3个节点,1个磁盘节点和2个内存节点

rabbitmqctl cluster_status

上述步骤完成后就配置好普通集群了。

集群分为两类:普通集群和镜像集群。

相同点:都拥有各个节点的元数据信息。

不同点:镜像集群会复制各个节点的交换机、队列和信息。而普通集群仅仅拥有交换机和队列,信息不会进行复制,即拥有信息的节点一旦宕机,集群内部就无法消费该信息。

配置镜像集群

去到rabbitmq控制台,一般是:ip地址:15672

docker 启动rabbitmq

Admin->Policies

docker 启动rabbitmq

参数说明:

ha-mode:同步节点模式
- all:全部
- exactly:设置同步节点数
- nodes:设置特定同步节点,用配置ha-params说明

ha-sync-mode:同步模式
- manual:手动
- automatic:自动

一般如同所示设置即可

完成后,就完成rabbitmq多节点的部署了。

上一篇:springboot连接rabbit


下一篇:斐波那契数列的来源——数兔子