原创

Rabbitmq集群部署-Docker

集群信息

    node1:192.168.30.131(master)

    node2:192.168.30.26

    node3:192.168.30.132

    rabbitmq镜像版本:rabbitmq:3.8.9-management-alpine

    当前部署的集群适合局域网部署

RabbitMQ集群安装

1、创建存储目录(所有node)

mkdir -p /data/rabbitmq/{conf,data}

2、时区(所有node)

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3、创建配置文件(所有node)

vim /data/rabbitmq/conf/rabbitmq.conf 

loopback_users.guest = false   # 是否只允许本机访问,配置“guest”用户能够远程连接,默认:true
listeners.tcp.default = 5672   # 监听端口
reverse_dns_lookups = false    # 设置为true,可让客户端在连接时让RabbitMQ 执行一个反向DNS查找, 然后通过 rabbitmqctl 和 管理插件来展现信息. 默认:false

4、node1部署

docker run -d \
--restart=always \
--name rabbitmq-node2 \
--hostname rabbitmq-node2 \
-e RABBITMQ_DEFAULT_USER="admin" \
-e RABBITMQ_DEFAULT_PASS="admin" \
-e RABBITMQ_ERLANG_COOKIE="1234567890qwertyuiopQWERTYUIOP" \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/rabbitmq/conf/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /data/rabbitmq/data:/var/lib/rabbitmq \
rabbitmq:3.8.9-management-alpine


# --add-host  添加hosts,主机名通信使用,连接master加入集群
# RABBITMQ_DEFAULT_USER 默认用户
# RABBITMQ_DEFAULT_PASS 默认密码
# RABBITMQ_ERLANG_COOKIE 指定Cooike,集群多台服务器cookiee要一致

5、node2

docker run -d \
--restart=always \
--name rabbitmq-node2 \
--hostname rabbitmq-node2 \
--add-host=rabbitmq-node1:192.168.30.131 \
--add-host=rabbitmq-node2:192.168.30.132 \
--add-host=rabbitmq-node3:192.168.30.26 \
-e RABBITMQ_DEFAULT_USER="admin" \
-e RABBITMQ_DEFAULT_PASS="admin" \
-e RABBITMQ_ERLANG_COOKIE="1234567890qwertyuiopQWERTYUIOP" \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/rabbitmq/conf/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /data/rabbitmq/data:/var/lib/rabbitmq \
rabbitmq:3.8.9-management-alpine

6、node3

docker run -d \
--restart=always \
--name rabbitmq-node3 \
--hostname rabbitmq-node3 \
--add-host=rabbitmq-node1:192.168.30.131 \
--add-host=rabbitmq-node2:192.168.30.132 \
--add-host=rabbitmq-node3:192.168.30.26 \
-e RABBITMQ_DEFAULT_USER="admin" \
-e RABBITMQ_DEFAULT_PASS="admin" \
-e RABBITMQ_ERLANG_COOKIE="1234567890qwertyuiopQWERTYUIOP" \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/rabbitmq/conf/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /data/rabbitmq/data:/var/lib/rabbitmq \
rabbitmq:3.8.9-management-alpine

7、将node2、node3加入集群

# node2加入集群
# 停止服务
docker exec rabbitmq-node2 rabbitmqctl stop_app
# 加入集群
docker exec rabbitmq-node2 rabbitmqctl join_cluster rabbit@rabbitmq-node1
# 启动服务
docker exec rabbitmq-node2 rabbitmqctl start_app


# node3加入集群
docker exec rabbitmq-node3 rabbitmqctl stop_app
docker exec rabbitmq-node3 rabbitmqctl join_cluster rabbit@rabbitmq-node1
docker exec rabbitmq-node3 rabbitmqctl start_app


# 当前加入集群都是磁盘节点,如果要加内存节点加入 --ram参数,如:
docker exec rabbitmq-node3 rabbitmqctl stop_app
docker exec rabbitmq-node3 rabbitmqctl join_cluster --ram rabbit@rabbitmq-node1
docker exec rabbitmq-node3 rabbitmqctl start_app

内存节点(ram):就是将元数据都放在内存里,内存节点的话,只要服务重启,该节点的所有数据将会丢失

硬盘节点(disc):就是将元数据都放在硬盘里,所以服务重启的话,数据也还是会存在的

8、查看集群状态

rabbitmq是有web控制台的,访问任意节点的15672端口,用户密码是启动docker容器是定义的

正文到此结束
评论

登录后才能发表评论 登录/注册

0评论
  • 还没有评论,快来抢沙发吧!