CentOS7 docker部署rabbitmq单机和集群

环境准备

主机名主机IP主机别名防火墙
master192.168.130.19rq-master关闭
node1192.168.130.20rq-node1关闭
node2192.168.130.20rq-node2关闭

    1、每台主机设置对应主机名(这里是master主机)
        查看原来主机名

# hostname
localhost.localdomain

        设置主机名

# hostnamectl set-hostname master.localdomain

        查看命令是否生效

# hostname
master.localdomain

    2、每台主机解析地址

vim /etc/hosts
192.168.130.19 master rq-master
192.168.130.20 node1 rq-node1
192.168.130.21 node2 rq-node2

    3、安装docker
    4、关闭防火墙

安装rabbitmq单机

mkdir -p /root/rabbitm_sg/data

docker run -d --network=host \
--hostname rq-node --name rq-node \
-v /root/rabbitmq_sg/data:/var/lib/rabbitmq \
-p 15673:15672 -p 5673:5672 \
-e RABBITMQ_ERLANG_COOKIE='helloCookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin1234 \
rabbitmq:3.7-management

安装rabbitmq集群

    1、创建目录(每个节点)

mkdir -p /root/rabbitmq/data

    2、各主机容器化运行程序(这里对应master主机)

docker run -d --network=host \
--hostname rq-master --name rq-master \
-v /root/rabbitmq/data:/var/lib/rabbitmq \
-p 15672:15672 -p 5672:5672 \
-e RABBITMQ_ERLANG_COOKIE='helloCookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin1234 \
rabbitmq:3.7-management

      注意:
        -v:将宿主机目录/root/rabbitmq/data挂载到容器的/var/lib/rabbitmq目录
        RABBITMQ_ERLANG_COOKIE:需要保持一致 内容任意(集群同步需要)
        rabbitmq各端口作用:
            client端通连接端口:5672
            页面管理访问端口: 15672
            服务间通信端口:25672

    3、加入集群
        master

docker exec -it rq-master sh
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

        node1

docker exec -it rq-node1 sh
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rq-master
rabbitmqctl start_app

        node2

docker exec -it rq-node2 sh
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rq-master
rabbitmqctl start_app
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

      注意:
        rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:“all”}’:(镜像模式)将所有队列mirror到集群中所有节点
      已知缺点:(有空再进一步学习,欢迎指教)
        目前有一个disk类型节点,两个ram节点,如果disk磁盘的节点关闭了,就需要手动把其中一个ram节点转为disk节点来确保数据持久化
        如果加入了新的节点,是否需要同步镜像到新节点

    4、检查集群状态

docker exec -it rq-master sh
rabbitmqctl cluster_status

        或者:用浏览器打开某个节点:http://192.168.130.19:15672,输入用户名密码(上面设置的)登录后查看Nodes
    5、可以利用nginx做负载均衡

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值