haproxy+keepalived高可用负载均衡构建。

匿名 (未验证) 提交于 2019-12-03 00:29:01

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由备份服务器承担 ,继续工作





文章到此结束。拜拜。









易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!