rabbitmq高可用集群搭建(Docker)

技术文档网 2021-05-26

第一步:在docker中搭建rabbitmq集群

以下是集群搭建脚本,可根据自身需求配置或修改后使用。
说明:这里只在同一台物理机进行搭建,以下所有参数配置均是在同一台机器上,如要分布式部署,注意自行修改。

#!/bin/bash

# 基础配置
DefaultUser="zwf"
DefaultPassword="123456"
ImageName="rabbitmq:3.7.4-management"


docker pull ${ImageName}

# 创建集群网络
docker network create rabbitmq-net


# 创建并启动容器
docker run -d \
   --name=rabbitmq1 \
   -e RABBITMQ_NODENAME=rabbitmq1 \
   -e RABBITMQ_ERLANG_COOKIE='zhouwenfeng' \
   -e RABBITMQ_DEFAULT_USER=${DefaultUser} \
   -e RABBITMQ_DEFAULT_PASS=${DefaultPassword} \
   -h rabbitmq1 \
   --net=rabbitmq-net \
   ${ImageName}


docker run -d \
   --name=rabbitmq2 \
   -e RABBITMQ_NODENAME=rabbitmq2 \
   -e RABBITMQ_ERLANG_COOKIE='zhouwenfeng' \
   -e RABBITMQ_DEFAULT_USER=${DefaultUser} \
   -e RABBITMQ_DEFAULT_PASS=${DefaultPassword} \
   -h rabbitmq2 \
   --net=rabbitmq-net \
   ${ImageName}

docker run -d \
   --name=rabbitmq3 \
   -e RABBITMQ_NODENAME=rabbitmq3 \
   -e RABBITMQ_ERLANG_COOKIE='zhouwenfeng' \
   -e RABBITMQ_DEFAULT_USER=${DefaultUser} \
   -e RABBITMQ_DEFAULT_PASS=${DefaultPassword} \
   -h rabbitmq3 \
   --net=rabbitmq-net \
   ${ImageName}


echo "Wait a while for all containers are ready..."
sleep 30

# 将结点23加入集群
docker exec rabbitmq2 bash -c \
   "rabbitmqctl stop_app && \
   rabbitmqctl reset && \
   rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && \
   rabbitmqctl start_app"

docker exec rabbitmq3 bash -c \
   "rabbitmqctl stop_app && \
   rabbitmqctl reset && \
   rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && \
   rabbitmqctl start_app"

# 查看集群情况
docker exec -it rabbitmq1 bash -c "rabbitmqctl cluster_status"

# 通过正则表达式设置指定队列为镜像队列
# 根据需要可以指定多个不同的ha-mode
docker exec -it rabbitmq1 rabbitmqctl \
    set_policy ha-all 'queue.+' '{"ha-mode":"all"}'

第二步:配置HAProxy反向代理

此处用haproxy反代访问集群以及management。
注意:这里的haproxy与rabbitmq集群在同一个网络中,即docker --network=rabbitmq-net

HAProxy配置如下:

global #全局属性
    maxconn 256  #最大同时256连接
    user root
    group root
    pidfile /var/run/haproxy.pid  #指定保存HAProxy进程号的文件
    log 127.0.0.1 local0 info
    log 127.0.0.1 local1 warning


defaults #默认参数
    log global
    mode http
    option httplog
    option dontlognull
    option tcplog
    timeout connect 5000ms  #连接server端超时5s
    timeout client 10000ms  #客户端响应超时10s
    timeout server 10000ms  #server端响应超时10s


# rabbitmq服务TCP代理
listen rabbitmq
    bind *:5678
    mode tcp # 4层代理
    balance roundrobin
    server rabbitmq1 rabbitmq1:5672 weight 1 maxconn 60000 check inter 3s
    server rabbitmq2 rabbitmq2:5672 weight 1 maxconn 60000 check inter 3s
    server rabbitmq3 rabbitmq3:5672 weight 1 maxconn 60000 check inter 3s


# rabbitmq-management服务HTTP代理
frontend rabbitmq-management
    bind *:15678
    mode http
    default_backend rabbitmq-management

# rabbitmq-management backend
backend rabbitmq-management
    balance roundrobin
    option forwardfor
    server rabbitmq1-management rabbitmq1:15672 check
    server rabbitmq2-management rabbitmq2:15672 check
    server rabbitmq3-management rabbitmq3:15672 check

haproxy启动脚本:

#!/bin/bash

docker pull haproxy

docker run -d --network rabbitmq-net --name rabbitmq-haproxy -p 5678:5678 -p 15678:15678 -v ${PWD}:/usr/local/etc/haproxy:ro haproxy

第三步:检验部署结果

可以试着访问rabbitmq的dashboard,此处效果展示略。

相关文章

  1. 利用Docker搭建基于GIT的源代码管理工具Gitea

    Gitea 拥有很低的系统需求,即使Raspberry Pi也可运行,节约机器资源!如果资源有限,使用Gitea作为源代码管理工具是一个不错的选择。 docker-compose配置文件 可以利用

  2. docker搭建kong过程

    1、docker 的安装 # 更新系统包到最新。 sudo yum -y update # 执行Docker安装脚本 sudo curl -sSL https://get.docker.com/ |

  3. 在Docker中运行MinDoc的几点注意事项

    项目内提供了生成Docker镜像的Dockerfile文件,用户可自行编译。 之前一直使用daocloud编译镜像,最近发现这个平台很不稳定,很多时候无法正常编译成功。 目前准备切换到阿里云镜像托管服

  4. 使用docker-compose快速部署

    根据本指南操作,你将会得到... 可以直接通过IP的80端口访问的发卡的网站 优点 配置只需要几分钟(特指对docker熟悉的人) 不用通过lnmp脚本花太多时间来编译安装所需的软件 不用手动去

  5. rabbitmq高可用集群搭建(Docker)

    第一步:在docker中搭建rabbitmq集群 以下是集群搭建脚本,可根据自身需求配置或修改后使用。说明:这里只在同一台物理机进行搭建,以下所有参数配置均是在同一台机器上,如要分布式部署,注意自行修

随机推荐

  1. 利用Docker搭建基于GIT的源代码管理工具Gitea

    Gitea 拥有很低的系统需求,即使Raspberry Pi也可运行,节约机器资源!如果资源有限,使用Gitea作为源代码管理工具是一个不错的选择。 docker-compose配置文件 可以利用

  2. docker搭建kong过程

    1、docker 的安装 # 更新系统包到最新。 sudo yum -y update # 执行Docker安装脚本 sudo curl -sSL https://get.docker.com/ |

  3. 在Docker中运行MinDoc的几点注意事项

    项目内提供了生成Docker镜像的Dockerfile文件,用户可自行编译。 之前一直使用daocloud编译镜像,最近发现这个平台很不稳定,很多时候无法正常编译成功。 目前准备切换到阿里云镜像托管服

  4. 使用docker-compose快速部署

    根据本指南操作,你将会得到... 可以直接通过IP的80端口访问的发卡的网站 优点 配置只需要几分钟(特指对docker熟悉的人) 不用通过lnmp脚本花太多时间来编译安装所需的软件 不用手动去

  5. rabbitmq高可用集群搭建(Docker)

    第一步:在docker中搭建rabbitmq集群 以下是集群搭建脚本,可根据自身需求配置或修改后使用。说明:这里只在同一台物理机进行搭建,以下所有参数配置均是在同一台机器上,如要分布式部署,注意自行修