欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识

RabbitMQ 负载平 CAD加密 衡 ( 2 ) — HAProxy

点击: 次  来源:宝鼎软件 时间:2017-08-19

原文出处: 朱小厮

HAProxy提供高可用性、负载平衡以及基于TCP和HTTP应用的署理,支持虚拟主机,软件开发,它是免费、快速而且靠得住的一种办理方案,包罗Twitter,Reddit,StackOverflow,GitHub在内的多家知名互联网公司在利用。HAProxy实现了一种事件驱动、单一历程模子,此模子支持很是大的并发毗连数。

安装HAProxy

首先需要去HAProxy的官网下载HAProxy的安装文件,今朝最新的版本为:haproxy-1.7.8.tar.gz。下载地点为http://www.haproxy.org/#down,相关文档地点为http://www.haproxy.org/#doc1.7。

将haproxy-1.7.8.tar.gz拷贝至/opt目次下,与RabbitMQ存放在同一个目次中。之后解压缩:

[root@node1 opt]# tar zxvf haproxy-1.7.8.tar.gz

将源码解压之后,需要运行make来将HAProxy编译为可执行措施。在执行make之前需要先选择方针平台,凡是对付UNIX系的操纵系统可以选择TARGET=generic。下面是具体操纵:

[root@node1 opt]# cd haproxy-1.7.8
[root@node1 haproxy-1.7.8]# make TARGET=generic
gcc -Iinclude -Iebtree -Wall  -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv      
-DTPROXY -DENABLE_POLL  
-DCONFIG_HAPROXY_VERSION=\"1.7.8\" 
-DCONFIG_HAPROXY_DATE=\"2017/07/07\" \
          -DBUILD_TARGET='"generic"' \
          -DBUILD_ARCH='""' \
          -DBUILD_CPU='"generic"' \
          -DBUILD_CC='"gcc"' \
          -DBUILD_CFLAGS='"-O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv"' \
          -DBUILD_OPTIONS='""' \
           -c -o src/haproxy.o src/haproxy.c
gcc -Iinclude -Iebtree -Wall  -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv...
...
gcc  -g -o haproxy src/haproxy.o src/base64.o src/protocol.o src/uri_auth.o ...

编译完目次下有名为“haproxy”的可执行文件。之后再/etc/profile中插手haproxy的路径,软件开发,内容如下:

export PATH=$PATH:/opt/haproxy-1.7.8/haproxy

最后执行source /etc/profile让此情况变量生效。

设置HAProxy

HAProxy利用单一设置文件来界说所有属性,包罗从前端IP到后端处事器。下面展示了用于3个RabbitMQ节点构成集群的负载平衡设置。这3个节点的IP地点别离为192.168.02、192.168.0.3、192.168.0.4,HAProxy运行在192.168.0.9这台呆板上。

#全局设置
global
        #日志输出设置,软件开发,所有日志都记录在本机,通过local0输出
        log 127.0.0.1 local0 info
        #最大毗连数
        maxconn 4096
        #改变当前的事情目次
        chroot /opt/haproxy-1.7.8
        #以指定的UID运行haproxy历程
        uid 99
        #以指定的GID运行haproxy历程
        gid 99
        #以守护历程方法运行haproxy #debug #quiet
        daemon
        #debug
        #当前历程pid文件
        pidfile /opt/haproxy-1.7.8/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

#绑定设置
listen rabbitmq_cluster 5671
        #设置TCP模式
        mode tcp
        #简朴的轮询
        balance roundrobin
        #RabbitMQ集群节点设置
        server rmq_node1 192.168.0.2:5672 check inter 5000 rise 2 fall 3 weight 1
        server rmq_node2 192.168.0.3:5672 check inter 5000 rise 2 fall 3 weight 1
        server rmq_node3 192.168.0.4:5672 check inter 5000 rise 2 fall 3 weight 1

#haproxy监控页面地点
listen monitor :8100
        mode http
        option httplog
        stats enable
        stats uri /stats
        stats refresh 5s

在上面的设置中“listen rabbitmq_cluster bind 192.168.0.9.5671”这里界说了客户端毗连IP地点和端标语。这里设置的负载平衡算法是roundrobin,留意这里的roundrobin是加权轮询。和RabbitMQ最相关的是“ server rmq_node1 192.168.0.2:5672 check inter 5000 rise 2 fall 3 weight 1”这种,它界说了RabbitMQ处事,每个RabbitMQ处事界说指令包括6个部门:

server <name>:界说RabbitMQ处事的内部标示,留意这里的“rmq_node”是指包括有寄义的字符串名称,不是指RabbitMQ的节点名称。
<ip>:<port>:界说RabbitMQ处事的毗连的IP地点和端标语。
check inter <value>:界说了每隔几多毫秒查抄RabbitMQ处事是否可用。
rise <value>:界说了RabbitMQ处事在产生妨碍之后,需要几多次康健查抄才气被再次确承认用。
fall <value>:界说需要经验几多次失败的康健查抄之后,HAProxy才会遏制利用此RabbitMQ处事。
weight <value>:界说了当前RabbitMQ处事的权重。