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

[经验分享] 使用ldirectord实现后端RS健康状态监测及LVS调度功能

[复制链接]

尚未签到

发表于 2019-1-6 11:34:09 | 显示全部楼层 |阅读模式
  Ldirectord功能描述:
  如果在高可用服务中直接将ipvsadm定义为一种资源代理,使用ipvsadm来生成ipvs规则,这样生效的lvs不能实现对后端的RealServer实现健康监测的功能,而heartbeat中的ldirectord可以实现对后端RealServer健康状态监测的功能,同时能使用内核中的ipvs功能利用ipvsadm规则启动lvs服务,实现对后端RealServer的调度功能,即有请求至前端的Director时,可以将请求转发至各RealServer而定义的ipvsadm规则保存在配置文件中,服务无需启动,由ldirectord这个资源代理来实现启动ipvs服务。同时前端的Director上配置有VIP地址,这个地址作为高可用的资源实现在前端的各Director上实现流转。

  

  实验用主机:
  Director1:172.16.103.1
  Director2:172.16.103.2
  RealServer1:172.16.103.3
  RealServer2:172.16.103.4
  

  操作步骤:
  一、前端的两台主机安装heartbeat,同时要同步时间,两个Director之间通信基于/etc/hosts文件实现主机名称解析,而且要实现基于ssh公钥通信。这些配置请参考前面的博客。
  二、在两台Director上安装ldirectord:
# yum install heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm  安装完成后的ldirectord生成的文件中有一个文件放在了heartbeat的ha.d/resource.d目录下,是一个资源代理文件。同时还提供了一个样例配置文件,这些文件是我们用来实现高可用ipvs规则和定义后端RealServer的配置接口文件。
# rpm -ql heartbeat-ldirectord
/etc/ha.d/resource.d/ldirectord
/etc/init.d/ldirectord
/etc/logrotate.d/ldirectord
/usr/sbin/ldirectord
/usr/share/doc/heartbeat-ldirectord-2.1.4
/usr/share/doc/heartbeat-ldirectord-2.1.4/COPYING
/usr/share/doc/heartbeat-ldirectord-2.1.4/README
/usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf
/usr/share/man/man8/ldirectord.8.gz  复制ldirector的配置文件到/etc/目录下
# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d  编辑ldirectord的配置文件,定义其中需要用到的后端RealServer的IP地址以及使用的哪种模型下的lvs,其中gate为dr模型,另外后端的RealServer都出现故障的情况下在这里还定义了fallback server用于显示提示信息,提示当前服务不可用,达到提醒用户的目的,而后面的request等条目是用于检测后端的RealServer的健康状况使用的,同时需要在各个RealServer的站点根目录下提供这个文件,内容设置有OK字样,便于前端的ldirectord服务检测到后端RealServer是否在线。

# cd /etc/ha.d
# vim ldirectord.cf
# Sample for an http virtual service
virtual=172.16.103.50:80
        real=172.16.103.3:80 gate
        real=172.16.103.4:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        request="index.html"
        receive="OK"
        virtualhost=some.domain.com.au
        scheduler=rr  另外需要先使用ipvsadm命令配置好ipvs规则,然后保存在ipvs默认的配置文件中,以便ldirectord调用。
# ipvsadm -A -t 172.16.103.50:80 -s rr   #设定VIP的地址为172.16.103.50
# ipvsadm -a -t 172.16.103.50:80 -r 172.16.103.3 -g
# ipvsadm -a -t 172.16.103.50:80 -r 172.16.103.4 -g
# service ipvsadm save
# service ipvsadm stop  在该高可用节点上测试启动ldirectord,查看ipvs规则是否生效:
# service ldirectord start
[root@node1 ha.d]# service ldirectord start
Starting ldirectord... success
[root@node1 ha.d]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.103.50:80 rr
  -> 172.16.103.3:80              Route   1      0          0   
  -> 172.16.103.4:80              Route   1      0          0  规则生效以后可以尝试关闭后端RealServer的httpd服务,查看前端ldirectord的fallback server是否能正常上线
  关闭RealServer的服务:
# service httpd stop  在director上测试一下查看ipvs规则:
[root@node1 ha.d]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.103.50:80 rr
  -> 127.0.0.1:80                 Local   1      0          0         
  -> 172.16.103.3:80              Route   0      0          0   
  -> 172.16.103.4:80              Route   0      0          0  规则文件及资源代理配置好以后,将这两个文件复制到另外一个高可用服务的节点上。
# scp /etc/ha.d/ldirectord.cf node2:/etc/ha.d
# scp /etc/sysconfig/ipvsadm node2:/etc/sysconfig  复制完成后在另一个节点上使用相同的方式测试一下ldirectord服务是否可以正常使用。
  三、配置heartbeat的haresource文件,定义高可用集群的各资源及使用的代理,运行的节点等信息:
  node2.cluster.com 172.16.103.20/16/eth0/172.16.103.255 ldirectord::/etc/ha.d/ldirectord.cf
  在两个节点上启动Heartbeat服务:
# service heartbeat start
# ssh node2 'service heartbeat start'  DR模型下的各RealServer的具体配置未给出。请参考前面的DR模型的博客内容。
  在浏览器内输入定义的VIP地址,访问172.16.103.50,显示效果如下:


  在启动服务的高可用节点上可以查看到启动的资源结果如下:
[root@node2 ha.d]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:E1:37:51  
          inet addr:172.16.103.2  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fee1:3751/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:184223 errors:0 dropped:0 overruns:0 frame:0
          TX packets:125070 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:110659582 (105.5 MiB)  TX bytes:21467745 (20.4 MiB)
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:E1:37:51  
          inet addr:172.16.103.50  Bcast:172.16.103.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
[root@node2 ha.d]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.103.50:80 rr
  -> 172.16.103.3:80              Route   1      0          0   
  -> 172.16.103.4:80              Route   1      0          0  如果同时间后端的RealServer都出现问题,那么在ipvs规则中可以看到fallback server处于工作状态

[root@node2 ha.d]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.103.50:80 rr
  -> 127.0.0.1:80                 Local   1      0          0         
  -> 172.16.103.3:80              Route   0      0          1      
  -> 172.16.103.4:80              Route   0      0          1  这样前端是lvs的高可用集群,后端是httpd的LB负载均衡集群的简单模型配置完成。




运维网声明 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-659929-1-1.html 上篇帖子: LVS概念类型及三种工作模式和十种调度算法介绍 下篇帖子: 利用ldirectord实现lvs后端realserver健康状态检查
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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