haproxy是一个开源的,高性能的,负载均衡软件,借助haproxy可以快速,可靠的构建一个负载均衡群集。
优点如下:
可靠性和稳定性非常好,可以和硬件级的负载均衡设备F5相媲美。
最高可同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个。
支持8种负载均衡算法,支持回话保持。
支持虚拟主机功能。
支持连接拒绝,全透明代理并且有一个功能强大的服务器状态监控界面。
拥有功能强大的ACL支持。
haproxy真的很强大。这里不对他的功能一样一样展示,读者可自行去网上了解其他功能。
用haproxy构建群集的时候,比如后方代理两个http,如果haproxy宕机,后方的http正常运行网站也是瘫痪状态,这就造成了单点故障。
这时keepalived就登场了,keepalived基于vrrp协议,两台主机之间生成一个虚拟的ip,我们称漂移ip,漂移ip由主服务器承担,一但主服务器宕机,备份服务器就会抢占漂移ip,继续工作,有效的解决了群集中的单点故障。两者相结合,挺好的。
--------------------------------------------------------------------------------------------------------------------------
下面是一张简单的逻辑图,让haproxy监听keepalived的漂移ip工作,一但haproxy宕机,备份抢占漂移ip继续承担着代理的工作。
有人问过我一个问题,两台keepalived应该是主服务器性能好一点还是备份服务器性能好一点呢,当时我毫不犹豫的说当然是主的性能更好,这个问题的答案是应该是备份的服务器性能更好一点才对。为什么呢?
1
这里就不考虑后方的数据库,监控,缓存等等一些东西了,就以两个http上面都是html文件 测试整体的高可靠性。
----------------------------------------------------------------------------------------------------------------------
环境 centos7.3
主haproxy 192.168.43.31
备haproxy 192.168.43.32
1,构建keepalived
这里我就偷个懒用yum的方式了。
yum install -y keepalived vi /etc/keepalived/keepalived.conf global_defs { #这里关于邮箱的都删掉了现在用不到。 smtp_connect_timeout 30 #连接超时时间 router_id LVS_DEVEL01 #相当于给这个服务器起个昵称,不要和备份服务器一样 } vrrp_instance VI_1 { state MASTER #定义为主服务器 interface ens32 #承载漂移ip的网卡 7的系统 ens开头 virtual_router_id 51 #定义一个热备组,可以认为这是51号热备组 priority 100 #主服务器优先级要比备服务器高 advert_int 1 #1秒互相通告一次,检查对方死了没。 authentication { auth_type PASS #认证类型 auth_pass 1111 #认证密码 这些相当于暗号 } virtual_ipaddress { 192.168.43.100 #漂移ip } }
下面的都用不到就删了
备份服务器的配置信息
global_defs { smtp_connect_timeout 30 router_id LVS_DEVEL02 #两个服务器不能一样 } vrrp_instance VI_1 { state BACKUP #备份服务器 是backup interface ens32 virtual_router_id 51 priority 90 #优先级要低 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.43.100 #漂移ip } }
再往下的用不到删掉
备服务器上面没
关掉主的network服务,模拟故障
可以看到已经漂移到了备份服务器
2,构建haproxy服务器
haproxy的包可以去官网下载
https://www.haproxy.org/download/1.7/src/
这里使用的1.7的haproxy
如果使用的最小化安装,需要安装一下gcc环境
yum install -y gcc gcc-c++
下面是配置内容,两个haproxy可以一样
global
defaults
frontend http_front
backend http_back
解析--------------------------------------------------
global
用户
组
以守护进程的方式运行
最大并发连接数
defaults
保证HAProxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包。
成功连接一台服务器最长等待时间 单位毫秒
连接客户端最长等待时间 单位毫秒
服务器回应客户端最长等待时间 单位毫秒
frontend http_front
监听本服务器 192.168.43.100的ip 80端口
backend http_back
启动http的健康检查
设置后端服务器可以看到客户端ip 访问日志中
后端服务器昵称node1
---------------------------------------------------------
两个haproxy配置可以一样
下面启动haproxy
如果遇到启动不成功看系统日志排错。一般是配置文件有问题
-----------------------
备服务器会报错 因为监听了漂移ip 但是备服务器上没漂移ip
解决方法
vi /etc/sysctl.conf 添加
----------------------------------------
server node1 192.168.43.33:80 check inter 2000 rise 3 fall 3 weight 30
测试效果---------------------------------------
访问漂移ip 可以看到haproxy的代理效果
关掉主服务器的network服务模拟故障,漂移ip由备份服务器承担 ,继续工作
文章到此结束。拜拜。