ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
使用Haproxy实现负载均衡,使用 Keepalive 实现高可用,整体架构图如下。 :-: ![](https://img.kancloud.cn/bd/9c/bd9c81b1b0dca0ce7b16a45b30a30e59_1187x805.jpg) <br/> 搭建步骤如下: [TOC] # 1. haproxy实现负载均衡 HAProxy 提供高可用性、负载均衡及基于 TCPHTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,包括 Twitter、Reddit、StackOverflow、GitHub 在内的多家知名互联网公司在使用。HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的井发连接数。 <br/> 扩展 nginx、lvs、haproxy 之间的区别: http://www.ha97.com/5646.html <br/> **1. 下载 haproxy(在 node1 和 node2)** ```shell yum -y install haproxy ``` **2.node1 和 node2 的 haproxy.cfg 都修改如下** ```shell ------------node1,ip为node1的ip------------ # vim /etc/haproxy/haproxy.cfg #配置集群节点 backend app balance roundrobin #轮询算法 server node1 192.168.0.109:5672 check server node2 192.168.0.112:5672 check server node3 192.168.0.113:5672 check #监控页面地址 listen private_monitoring :8100 mode http option httplog stats enable stats uri /stats stats refresh 5s # 5s刷新页面 ``` **3.分别启动node1和node2的 haproxy** ```shell haproxy -f /etc/haproxy/haproxy.cfg ps -ef | grep haproxy ``` **4.访问监控地址** http://192.168.0.109:8100/stats ,或者 http://192.168.0.112:8100/stats 。 ![](https://img.kancloud.cn/fa/be/fabec81addda1264c83dc867ac3cd370_1591x530.jpg) <br/> # 2. Keepalive实现高可用 *本节没有完善,不能用* <br/> 试想如果前面配置的 HAProxy 主机突然宕机或者网卡失效,那么虽然 RbbitMQ 集群没有任何故障但是对于外界的客户端来说所有的连接都会被断开,结果将是灾难性的。为了确保负载均衡服务的可靠性同样显得十分重要,这里就要引入 Keepalived, 它能够通过自身健康检查、资源接管功能做高可用(双机热备),实现故障转移。 **1. node1和node2上下载 Keepalive** ```shell yum -y install keepalived ``` **2. 修改 node1上的 keepalived.conf** ```shell [root@node1 ~]# vim /etc/keepalived/keepalived.conf ``` **3. 修改 node2 上的 keepalived.conf** ```shell [root@node2 ~]# vim /etc/keepalived/keepalived.conf ``` **4. 在 node1 和 node2 上都编写下面的监控脚本** 为了防止 HAProxy 服务挂掉之后 Keepalived 还在正常工作而没有切换到 Backup 上,所以这里需要编写一个脚本来检测 HAProxy 务的状态,当 HAProxy 服务挂掉之后该脚本会自动重启HAProxy 的服务,如果不成功则关闭 Keepalived 服务,这样便可以切换到 Backup 继续工作。 ```shell # vim /etc/keepalived/check_haproxy.sh #!/bin/bash if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then haproxy -f /etc/haproxy/haproxy.cfg fi sleep 2 if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then service keepalived stop fi # chmod 777 /etc/keepalived/check_haproxy.sh ``` **5. 启动 node1 和 node2 上的 keepalive 服务** ```shell systemctl start keepalived ``` **6. 跟踪日志的命令** ```shell tail -f /var/log/messages -n 200 ```