前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >haproxy负载均衡中使用keepalived

haproxy负载均衡中使用keepalived

作者头像
小勇DW3
发布2020-04-08 11:20:03
1.1K0
发布2020-04-08 11:20:03
举报
文章被收录于专栏:小勇DW3小勇DW3

haproxy是一个开源的,高性能的,负载均衡软件,借助haproxy可以快速,可靠的构建一个负载均衡群集。

优点如下:

1、可靠性和稳定性非常好,可以和硬件级的负载均衡设备F5相媲美。

2、最高可同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个。

3、支持8种负载均衡算法,支持回话保持。

4、支持虚拟主机功能。

5、支持连接拒绝,全透明代理并且有一个功能强大的服务器状态监控界面。

6、拥有功能强大的ACL支持。

haproxy真的很强大。这里不对他的功能一样一样展示,读者可自行去网上了解其他功能。

用haproxy构建群集的时候,比如后方代理两个http,如果haproxy宕机,后方的http正常运行网站也是瘫痪状态,这就造成了单点故障。

解决方案是什么呢?

这时keepalived就登场了!

keepalived基于vrrp协议,两台主机之间生成一个虚拟的ip,我们称漂移ip,漂移ip由主服务器承担,一但主服务器宕机,备份服务器就会抢占漂移ip,继续工作,有效的解决了群集中的单点故障。

--------------------------------------------------------------------------------------------------------------------------

让haproxy监听keepalived的漂移ip工作,一但haproxy宕机,备份抢占漂移ip继续承担着代理的工作。

有人问过我一个问题,两台keepalived应该是主服务器性能好一点还是备份服务器性能好一点呢,当时我毫不犹豫的说当然是主的性能更好,这个问题的答案是应该是备份的服务器性能更好一点才对。为什么呢?

 如果你的主服务器承担不了网站的访问量,宕机了 ,备份服务器接管主服务器的工作,如果备份服务器还没有主服务器性能好过不了多久也会再次宕机!!

这里就不考虑后方的数据库,监控,缓存等等一些东西了,就以两个http上面都是html文件 测试整体的高可靠性。

----------------------------------------------------------------------------------------------------------------------

环境 centos7.3

主haproxy 192.168.43.31

备haproxy 192.168.43.32

HTTP1       192.168.43.33

HTTP2       192.168.43.34

漂移ip        192.168.43.100

1,构建keepalived

备份服务器的配置信息

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 } }

systemctl stop NetworkManager 两边都关掉 不然有影响。 systemctl start keepalived #开启keepalived服务 ip a 可以看到漂移ip 在主服务器上

备服务器上面没

关掉主的network服务,模拟故障

可以看到已经漂移到了备份服务器

2,构建haproxy服务器 haproxy的包可以去官网下载

https://www.haproxy.org/download/1.7/src/

这里使用的1.7的haproxy

如果使用的最小化安装,需要安装一下gcc环境

yum install -y gcc gcc-c++

[root@localhost haproxy-1.7.9]# make TARGET=linux2628 PREFIX=/usr/local/haproxy [root@localhost haproxy-1.7.9]# make install PREFIX=/usr/local/haproxy TARGET=linux2628,内核版本大于2.6.28的使用linux2628 [root@localhost haproxy-1.7.9]# cp examples/haproxy.init /etc/init.d/haproxy #启动脚本 [root@localhost haproxy-1.7.9]# chmod +x /etc/init.d/haproxy  [root@localhost haproxy-1.7.9]# cp /usr/local/haproxy/sbin/haproxy /usr/sbin/ #启动脚本里要用 [root@localhost haproxy-1.7.9]# useradd haproxy -s /sbin/nologin  [root@localhost haproxy-1.7.9]# mkdir /etc/haproxy #配置文件需要自己创建 [root@localhost haproxy-1.7.9]# vi /etc/haproxy/haproxy.cfg #vi自己添加配置内容 下面是配置内容,两个haproxy可以一样

global     log 127.0.0.1 local3 info     user haproxy     group haproxy     daemon     maxconn 4000 defaults     log global     mode http     option httplog     option dontlognull     timeout connect 5000     timeout client 50000     timeout server 50000 frontend http_front     bind 192.168.43.100:80     #haproxy的状态管理页面,通过/haproxy?stats来访问     stats uri /haproxy?stats     default_backend http_back backend http_back     balance roundrobin     option httpchk GET /index.html     option forwardfor header X-Forwarded-For     server node1 192.168.43.33:80 check inter 2000 rise 3 fall 3 weight 30     server node2 192.168.43.34:80 check inter 2000 rise 3 fall 3 weight 30

解析--------------------------------------------------

global     log 127.0.0.1 local3 info  用127.0.0.1上的rsyslog服务中的local3设备记录日志,日志级别为info     user haproxy     用户     group haproxy  组     daemon     以守护进程的方式运行     maxconn 4000   最大并发连接数 defaults     log global   表示用global模块中定义的日志配置     mode http    模式  使用http模式     option httplog     默认haproxy日志,不记录http请求,开启记录http请求     option dontlognull   保证HAProxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包。     timeout connect 5000  成功连接一台服务器最长等待时间 单位毫秒     timeout client 50000  连接客户端最长等待时间 单位毫秒     timeout server 50000  服务器回应客户端最长等待时间 单位毫秒 frontend http_front     bind 192.168.43.100:80   监听本服务器 192.168.43.100的ip 80端口     stats uri /haproxy?stats    haproxy的状态管理页面,通过/haproxy?stats来访问     default_backend http_back   定义一个服务器组 http_back backend http_back     balance roundrobin   轮询     option httpchk GET /index.html 启动http的健康检查     option forwardfor header X-Forwarded-For    设置后端服务器可以看到客户端ip 访问日志中     server node1 192.168.43.33:80 check inter 2000 rise 3 fall 3 weight 30

    server node2 192.168.43.34:80 check inter 2000 rise 3 fall 3 weight 30

 后端服务器昵称node1

 ip和端口

 check 关键字

 inter 健康检查间隔  2000毫秒

 rise 检测 3次 认为正常

 fall 检测3次认为失败

 weight 权重 30

注意 这里监听了漂移ip 

--------------------------------------------------------

两个haproxy配置可以一样

下面启动haproxy

如果遇到启动不成功看系统日志排错。一般是配置文件有问题

-----------------------

备服务器会报错 因为监听了漂移ip 但是备服务器上没漂移ip

解决方法

vi /etc/sysctl.conf 添加

net.ipv4.ip_nonlocal_bind = 1  忽略监听ip的检查

 sysctl -p  

----------------------------------------

server node1 192.168.43.33:80 check inter 2000 rise 3 fall 3 weight 30

 server node2 192.168.43.34:80 check inter 2000 rise 3 fall 3 weight 30

配置文件中指定的后面的两台web服务器就不演示了  保证可以互相通信 网站可以访问就可以。

测试效果---------------------------------------

访问漂移ip 可以看到haproxy的代理效果

关掉主服务器的network服务模拟故障,漂移ip由备份服务器承担 ,继续工作

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档