设为首页 收藏本站
查看: 1765|回复: 0

[经验分享] LVS+heartbeat+ldirectord高可用负载均衡集群解决方案

[复制链接]

尚未签到

发表于 2015-9-5 11:38:32 | 显示全部楼层 |阅读模式
  
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目由章文嵩博士在1998年5月创立,是中国国内最早出现的自由软件项目之一。其作用是实现LB(Load
Balance)将大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;将单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
  
HA(High Avalibaility)高可用性,即双机热备的方式保证服务的高可用性。
  
本文高可用负载均衡集群解决方案,是在LVS实现负载均衡的基础之上,采用双机热备director来保证lvs个高可用性,并通过heartbeat实时监听主director的运行状态,另外使用ldirectord实时监测director后端Real Server的健康状态,将不能正常提供服务的主机离线。
  
整套方案拓扑架构如图:
  
DSC0000.jpg
  
下面开始详述实现步骤:
  
一、两台Real Server:RS1、RS2的配置
  
初始化步骤:配置ip地址、主机名、yum源等不在赘述


  • echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  • echo 2> /proc/sys/net/ipv4/conf/lo/arp_announce
  • echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  • echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  • #定义内核参数,禁止real server响应ARP广播请求

  
Ps:由于使用DR模型故要屏蔽arp对后端realserver的解析


  • ifconfig lo:0 192.168.0.123 broadcast 192.168.0.123 netmask 255.255.255.255 up
  • #在回环端口配置对外通信的VIP,并锁定其广播域
  • route add -host 192.168.0.123 dev lo:0
  • #配置主机路由,使之对外发送数据包均使用VIP


  • yum install -y httpd
  • #安装安装web服务
  • service httpd start
  • echo '<h>Real Server 1</h>' >  /var/www/html/index.html
  • #添加real server测试页面
  • mkdir /var/www/html/test/
  • echo 'ok' >  /var/www/html/test/index.html
  • #为ldirectord提供检测页面
  • service httpd start

  
Ps:这里仅以RS1为实例进行说明,RS2同此法操作。
  
二、高可用HA director节点的配置
  
初始化步骤:配置ip、yum源等。
  
Ps:两台director节点都使用双网卡,eth0与real server同网段,eth1使用网卡直连用于传输心跳信号。


  • vim /etc/hosts
  • 192.168.0.71    node1.a.org         node1
  • 192.168.0.72    node2.a.org         node1
  • #用于实现两台director节点间域名解析,此操作node1、node2相同


  • vim /etc/sysconfig/network
  • #设置主机名
  • hostname node1.a.org
  • #修改主机名使之立即生效

  
使heartbeat信息加密传输


  • ssh-keygen -t rsa
  • #生成密钥
  • ssh-copy-id -i .ssh/id_rsa.pub root@node2.a.org
  • #将公钥复制给node2
  • ssh node2 -- ‘ifconfig’
  • #执行命令测试,此时应该显示node2的ip信息

  
安装heartbeat


  • cd heartbeat
  • yum localinstall -y --nogpgcheck ./*
  • #安装此目录中的所有rpm包

  
DSC0001.jpg


  • cd /usr/share/doc/heartbeat-2.1.4
  • cp authkeys /etc/ha.d/
  • cp haresources /etc/ha.d/
  • cp ha.cf /etc/ha.d/
  • #拷贝heartbeat所需配置文件到指定目录下


  • vim /etc/ha.d/ha.cf
  • bcast eth1
  • #定义心跳信息从那一块网卡传输
  • node node1.a.org
  • node node2.a.org
  • #添加这两行,用于指明心跳信号传输范围
  • vim /etc/ha.d/authkeys
  • auth 2
  • 2 sha1 [键入随机数]
  • chmod 400 authkeys
  • #保存退出并修改权限400
  • vim /etc/ha.d/haresource
  • node1.a.org         192.168.0.123/24/eth0/192.168.0.255 ldirectord::ldirectord.cf httpd
  • #末行添加主节点域名,vip资源,广播地址,ldirectord资源,以及用户提供显示错误页面的httpd资源

  
同步配置文件到node2


  • /usr/lib/heartbeat/ha_propagate
  • #脚本用来同步ha.cf和authkeys文件到node2
  • scp haresources node2:/etc/ha.d/
  • #复制haresource到nod2

  
DSC0002.jpg
  
配置ldirectord,同步配置文件


  • cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ldirectord.cf
  • #复制ldirector的配置文件

  
内容如下配置


  • checktimeout=3
  • #当DR收不到realserver的回应,设定几秒后判定realserver当机或挂掉了,预设5秒。
  • checkinterval=1
  • #查询间隔,每个几秒侦测一次realserver
  • autoreload=yes
  • #配置文件发生改变是否自动重读
  • quiescent=yes
  • #静态链接,yes:表示侦测realserver宕机,将其权&#20540;至零(如果开启了persistent参数不要用yes);no:表示侦测到宕机realserver,随即将其对应条目从ipvsadm中删除。
  • virtual=192.168.0.123:80
  •         real=192.168.0.51:80 gate 4
  •         real=192.168.0.52:80 gate 2
  •         fallback=127.0.0.1:80 gate #realserver全部失败,vip指向本机80端口。
  •         service=http
  •         request=&quot;test/index.html&quot; #用于健康检测的url
  •         receive=&quot;ok&quot;    #用于健康检测的url包含的关键字
  •         scheduler=wlc
  •         #persistent=600
  •         #持久链接:表示600s之内同意ip将访问同一台realserver
  •         protocol=tcp
  •         checktype=negotiate
  •         #检查类型:negotiate,表示DR发送请求,realserver恢复特定字符串才表示服务正常;connect,表示DR能够连线realserver即正常。
  •         checkport=80

  
启动两个节点上的heartbeat


  • service heartbeat start
  • ssh node2 -- 'service heartbeat start'
  • #启动两节点heartbeat服务

  
Ps:ldirectord同vip一样是DR节点争夺的资源,由heartbeart启动
  
tail -f /var/log/messages
  
应出现:heartbeat: info: Running /etc/ha.d/resource.d/ldirectord ldirectord.cf start
  
DSC0003.jpg
  
ip、ldirectord和httpd资源被主节点成功启动
  
或查看ipvsadm -ln
  
DSC0004.jpg
  
在主节点上安装httpd服务,并创建测试页


  • yum install -y httpd
  • #安装安装web服务  
  • echo '<h2>sorry, web service is down, please try again later...</h2>' >  /var/www/html/index.html
  • #node1上添加报错提示
  • echo 'sorry, web service is down, please try again later...' >  /var/www/html/index.html
  • #node2上添加报错提示,此处字体不同以示区别

  
三、测试
  
使用浏览器访问web页面,多次刷新RS1和RS2都能访问到
  
DSC0005.jpg
  
DSC0006.jpg
  
ab测试wlc算法的负载均衡
  
DSC0007.jpg
  
DSC0008.jpg
  

  
DSC0009.jpg
  
关闭node1上的heartbeat模拟主节点宕机,并进行ab测试,node2上查看ipvsadm
  
DSC00010.jpg
  
依旧能够从备份DR节点node2访问web服务并实现负载均衡
  
重启node1上heartbeat,关闭RS1的httpd服务,查看ipvsadm
  
DSC00011.jpg
  
idirectord立即检测到,并将RS1的权&#20540;至0
  
继续关闭RS2的httpd服务,查看ipvsadm
  
DSC00012.jpg
  
RS2权&#20540;至0,本地权&#20540;至1
  
刷新浏览器页面
  
DSC00013.jpg
  
主节点node1 web服务反馈realserver宕机提示信息
  
此时关闭node1上heartbeat,刷新页面
  

  
备份节点node2 web服务反馈realserver宕机提示信息
  

  
至此LVS&#43;heartbeat&#43;ldirectord高可用负载均衡集群解决方案的实现流程已叙述完毕,以上内容在您实现过程中出现的任何问题,欢迎在此交流;并请各位高手前辈大神达人予以批评指正,谢谢!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109696-1-1.html 上篇帖子: nginx与lvs做负载均衡的比较(转) 下篇帖子: [原创]用python检测LVS real server状态实现HTTP高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表