栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RabbitMQ集群搭建

RabbitMQ集群搭建

RabbitMQ集群搭建
  • 前言
  • 集群方案的原理
  • 集群搭建
  • HAProxy 环境搭建

前言

一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境 上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能 力等问题的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。

集群方案的原理

RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通 过同步Erlang集群各节点的cookie来实现)。RabbitMQ本身不需要像ActiveMQ、Kafka那样通 过ZooKeeper分别来实现HA方案和保存集群的元数据。

集群搭建
  • rabbitmq安装两个实例,分别是1.104,1.105。分别需要先在两台机器节点上安装好rabbitmq。104节点已经安装好rabbitmq。105节点还没装。
scp /usr/local/rabbitmq/* 192.168.1.105:/usr/local/rabbitmq/



  • 初始化环境
hostnamectl set-hostname rabbit-node1
hostnamectl set-hostname rabbit-node2
vim /etc/hosts

  • 重启网络
systemctl restart network
  • 配置 Erlang cookie
# 停止所有服务,构建Erlang的集群环境
systemctl stop rabbitmq-server
scp /var/lib/rabbitmq/.erlang.cookie rabbit-node2:/var/lib/rabbitmq/.erlang.cookie

  • 启动服务 在两台主机上均执行以下命令,启动 RabbitMQ 服务:
systemctl start rabbitmq-server



说明节点已经启动

开通 EPMD 端口
epmd进程使用的端口。用于RabbitMQ节点和CLI工具的端点发现服务。

systemctl start firewalld
firewall-cmd --zone=public --add-port=4369/tcp --permanent
firewall-cmd --zone=public --add-port=25672/tcp --permanent
systemctl restart firewalld.service

  • RabbitMQ 集群的搭建需要选择其中任意一个节点为基准,将其它节点逐步加入。这里我们以 rabbit-node1 为基准节点,将 rabbit-node2 加入集群。在 rabbit-node2 上执行以下命令:
# 1.停止服务
rabbitmqctl stop_app
# 2.重置状态
rabbitmqctl reset
# 3.节点加入, 在一个node加入cluster之前,必须先停止该node的rabbitmq应用,即先执行stop_app
# rabbit-node2加入node1, rabbit-node3加入node2
rabbitmqctl join_cluster rabbit@rabbit-node1
# 4.启动服务
rabbitmqctl start_app

  • 查看集群状态
rabbitmqctl cluster_status

  • UI 界面查看

HAProxy 环境搭建

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、 快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在内的多家知名 互联网公司在使用。HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连 接数。

  • 在1.105节点上安装HAProxy
yum install haproxy


vim /etc/haproxy/haproxy.cfg
#全局配置
global
    # 日志输出配置、所有日志都记录在本机,通过 local0 进行输出
    log 127.0.0.1 local0 info
    # 最大连接数
    maxconn 4096
    # 改变当前的工作目录
    chroot /usr/local/haproxy-2.1.8
    # 以指定的 UID 运行 haproxy 进程
    uid 99
    # 以指定的 GID 运行 haproxy 进程
    gid 99
    # 以守护进行的方式运行
    daemon
    # 当前进程的 pid 文件存放位置
    pidfile /usr/local/haproxy-2.1.8/haproxy.pid

# 默认配置
defaults
    # 应用全局的日志配置
    log global
    # 使用4层代理模式,7层代理模式则为"http"
    mode tcp
    # 日志类别
    option tcplog
    # 不记录健康检查的日志信息
    option dontlognull
    # 3次失败则认为服务不可用
    retries 3
    # 每个进程可用的最大连接数
    maxconn 2000
    # 连接超时
    timeout connect 5s
    # 客户端超时
    timeout client 120s
    # 服务端超时
    timeout server 120s

# 绑定配置
listen rabbitmq_cluster
    bind :5671
    # 配置TCP模式
    mode tcp
    # 采用加权轮询的机制进行负载均衡
    balance roundrobin
    # RabbitMQ 集群节点配置
    server mq-node1  rabbit-node1:5672 check inter 5000 rise 2 fall 3 weight 1
    server mq-node2  rabbit-node1:5672 check inter 5000 rise 2 fall 3 weight 1

# 配置监控页面
listen monitor
    bind :8100
    mode http
    option httplog
    stats enable
    stats uri /stats
    stats refresh 5s

负载均衡的主要配置在 listen rabbitmq_cluster 下,这里指定负载均衡的方式为加权轮询,同时定义好健康检查机制:

server node1  rabbit-node1:5672 check inter 5000 rise 2 fall 3 weight 1

以上配置代表对地址为 rabbit-node1:5672 的 node1 节点每隔 5 秒进行一次健康检查,如果连续两次的检查结果都是正常,则认为该节点可用,此时可以将客户端的请求轮询到该节点上;如果连续 3 次的检查结果都不正常,则认为该节点不可用。weight 用于指定节点在轮询过程中的权重。

  • 启动服务
# 启动
haproxy -f /etc/haproxy/haproxy.cfg

# 查看运行
ps aux|grep haproxy

firewall-cmd --zone=public --add-port=8100/tcp --permanent
systemctl restart firewalld.service

http://192.168.1.105:8100/stats

所有节点都为绿色,代表节点健康。此时证明 HAProxy 搭建成功,并已经对 RabbitMQ 集群进行监控。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/585032.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号