CentOS7 docker部署rabbitmq单机和集群

环境准备

主机名 主机IP 主机别名 防火墙
master 192.168.130.19 rq-master 关闭
node1 192.168.130.20 rq-node1 关闭
node2 192.168.130.20 rq-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做负载均衡

你可能感兴趣的:(rabbitMQ,docker,centos,rabbitmq)