首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

消息中间件—RabbitMQ(集群原理与搭建篇)-3

消息中间件—RabbitMQ(集群原理与搭建篇)-3

(3)配置HAProxy

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。HAProxy支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载。为了实现RabbitMQ集群的软负载均衡,这里可以选择HAProxy。
关于HAProxy如何安装的文章之前也有很多同学写过,这里就不再赘述了,有需要的同学可以参考下网上的做法。这里主要说下安装完HAProxy组件后的具体配置。
HAProxy使用单一配置文件来定义所有属性,包括从前端IP到后端服务器。下面展示了用于7个RabbitMQ节点组成集群的负载均衡配置(另外3个磁盘节点用于保存集群的配置和元数据,不做负载)。同时,HAProxy运行在另外一台机器上。HAProxy的具体配置如下:

    #全局配置
    global
            #日志输出配置,所有日志都记录在本机,通过local0输出
            log 127.0.0.1 local0 info
            #最大连接数
            maxconn 4096
            #改变当前的工作目录
            chroot /apps/svr/haproxy
            #以指定的UID运行haproxy进程
            uid 99
            #以指定的GID运行haproxy进程
            gid 99
            #以守护进程方式运行haproxy #debug #quiet
            daemon
            #debug
            #当前进程pid文件
            pidfile /apps/svr/haproxy/haproxy.pid
     
    #默认配置
    defaults
            #应用全局的日志配置
            log global
            #默认的模式mode{tcp|http|health}
            #tcp是4层,http是7层,health只返回OK
            mode tcp
            #日志类别tcplog
            option tcplog
            #不记录健康检查日志信息
            option dontlognull
            #3次失败则认为服务不可用
            retries 3
            #每个进程可用的最大连接数
            maxconn 2000
            #连接超时
            timeout connect 5s
            #客户端超时
            timeout client 120s
            #服务端超时
            timeout server 120s
     
            maxconn 2000
            #连接超时
            timeout connect 5s
            #客户端超时
            timeout client 120s
            #服务端超时
            timeout server 120s
     
    #绑定配置
    listen rabbitmq_cluster
            bind 0.0.0.0:5672
            #配置TCP模式
            mode tcp
            #加权轮询
            balance roundrobin
            #RabbitMQ集群节点配置,其中ip1~ip7为RabbitMQ集群节点ip地址
            server rmq_node1 ip1:5672 check inter 5000 rise 2 fall 3 weight 1
            server rmq_node2 ip2:5672 check inter 5000 rise 2 fall 3 weight 1
            server rmq_node3 ip3:5672 check inter 5000 rise 2 fall 3 weight 1
            server rmq_node4 ip4:5672 check inter 5000 rise 2 fall 3 weight 1
            server rmq_node5 ip5:5672 check inter 5000 rise 2 fall 3 weight 1
            server rmq_node6 ip6:5672 check inter 5000 rise 2 fall 3 weight 1
            server rmq_node7 ip7:5672 check inter 5000 rise 2 fall 3 weight 1
     
    #haproxy监控页面地址
    listen monitor
            bind 0.0.0.0:8100
            mode http
            option httplog
            stats enable
            stats uri /stats
            stats refresh 5s
在上面的配置中“listen rabbitmq_cluster bind 0.0.0.0:5671”这里定义了客户端连接IP地址和端口号。这里配置的负载均衡算法是roundrobin—加权轮询。与配置RabbitMQ集群负载均衡最为相关的是“ server rmq_node1 ip1:5672 check inter 5000 rise 2 fall 3 weight 1”这种,它标识并且定义了后端RabbitMQ的服务。主要含义如下:
(a)“server <name>”部分:定义HAProxy内RabbitMQ服务的标识;
(b)“ip1:5672”部分:标识了后端RabbitMQ的服务地址;
(c)“check inter <value>”部分:表示每隔多少毫秒检查RabbitMQ服务是否可用;
(d)“rise <value>”部分:表示RabbitMQ服务在发生故障之后,需要多少次健康检查才能被再次确认可用;
(e)“fall <value>”部分:表示需要经历多少次失败的健康检查之后,HAProxy才会停止使用此RabbitMQ服务。

    #启用HAProxy服务
    [root@mq-testvm12 conf]# haproxy -f haproxy.cfg

启动后,即可看到如下的HAproxy的界面图:

RabbitMQ集群Haproxy部署的UI界面.jpg
返回列表