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

[经验分享] heartbeat+heartbeat

[复制链接]

尚未签到

发表于 2019-1-5 08:47:50 | 显示全部楼层 |阅读模式
LVS-DR负载均衡集群实现Director高可用并且能对RS进行健康状况检查实现过程;
目的: 防止Director故障导致用户请求无法转发到RS使LVS集群故障并利用heartbeat-ldirectord模块时时对RS进行健康状况检查,确保lvs集群工作正常;
拓补图:



注:图中直线为用户通过主Director访问web服务;
曲线为用户通过备Director访问web服务;

LVS-DR模型配置过程:


  • 安装配置RS1和RS2的web服务并添加测试页面;
  • # yum -y install httpd #为两个RS安装配置httpd;
  • # echo "RS1" >/var/www/html/index.html  #为RS1添加测试页面;
  • # echo "RS2" >/var/www/html/index.html #为RS2添加测试页面;
  • 配置RS1和RS2内核参数;
  • # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
  • # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  • # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
  • # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  • 配置RS1和RS2的虚拟ip和路由信息;
  • # ifconfig lo:0 172.16.11.1 netmask 255.255.255.255 broadcast 172.16.11.1 up
  • # route add -host 172.16.11.1 dev lo:0
  • 为Director-主和Director-备安装LVS并添加虚拟ip和路由信息;
  • # yum -y install ipvsadm
  • # ifconfig eth0:0 172.16.11.1 netmask 255.255.255.255 broadcast 172.16.11.1 up
  • # route add -host 172.16.11.1 dev eth0:0
  • 为Director-主和Director-备添加LVS服务并保存至配置文件中;
  • # ipvsadm -A -t 172.16.11.1:80 -s rr
  • # ipvsadm -a -t 172.16.11.1:80 -r 172.16.11.21 -g
  • # ipvsadm -a -t 172.16.11.1:80 -r 172.16.11.22 -g
  • # service ipvsadm start  
  • # service ipvsadm save
  • 为Director-主和Director-备打开路由转发功能;
  • # echo 1 > /proc/sys/net/ipv4/ip_forward
  • 通过http://172.16.11.1访问LVS-DR集群服务正常(注意:当利用Director-主来转发用户请求时Director-备应关闭ipvsadm服务并停止器eth0:0上的虚拟地址,Director-备同理)
  • ----------以上过程为了验证LVS-DR模型集群服务工作正常-----------

为Director-主和Director-备配置高可用:

关闭Director-主和Director-备的ipvsadm服务使其不开机自动启动并停止VIP和清空ipvs规则;


  • # service ipvsadm stop
  • # chkconfig ipvsadm off
  • # ifconfig eth0:0 down
  • # ipvsadm -C

1)在Director-主和Director-备上安装配置heartbeat,用到的安装包如下:
heartbeat-2.1.4-9.el5.i386.rpm
heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-stonith-2.1.4-10.el5.i386.rpm
libnet-1.1.4-3.el5.i386.rpm


  • 定义Director-主和Director-备的节点名称分别为node1和node2
  • 修改Director-主和Director-备的主机名称,使节点名称与主机名称保持一致;
  • # hostname node1 #另外需要将主机名称写在配置文件中,以免重启后失效;
  • # hostname node2 #另外需要将主机名称写在配置文件中,以免重启后失效;
  • 配置Director-主和Director-备的ssh互联互通(因为Director-主要控制Director-备的heartbeat服务启动和关闭)
  • 编辑Director-主和Director-备的/etc/hosts文件添加如下内容:
  • 172.16.11.12    node2
  • 172.16.11.11    node1
  • Director-主和Director-备进行互联网密钥交换
  • 在Director-主配置如下:
  • # ssh-key -t rsa #生成一对密钥;
  • # ssh-copy-id -i ./.ssh/id_rsa.pub root@node2 #将密钥放到node2节点上;
  • 在Director-备配置如下:
  • # ssh-key -t rsa #生成一对密钥;
  • # ssh-copy-id -i ./.ssh/id_rsa.pub root@node1 #将密钥放到node1节点上;
  • 修改Director-主和Director-备的时间保持一致,直接使用date命令修改即可;
  • 在Director-主和Director-备安装配置heartbeat(这里安装的是v2版本)
  • # yum --nogpgcheck localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
  • 复制配置文件样例至配置文件目录中:
  • # cd  /usr/share/doc/heartbeat-2.1.4/
  • # cp ha.cf authkeys haresources /etc/ha.d/
  • 编辑修改配置文件/etc/ha.d/ha.cf,修改内容如下:
  • 打开以下几项:
  • keepalive 2   #表示多长时间发送一个心跳信息,默认单位是秒;
  • deadtime 30   #多长时间设定主机down机,时间不能设置过短,不然会造成脑裂;
  • udpport 694   # heartbeat传递心跳信息用到的端口;
  • bcast   eth0  #定义通过eth0网卡向外通过广播方式传递心跳;
  • compression     bz2 #定义集群事务信息传递压缩格式;
  • compression_threshold 2 #定义大于2KB的集群事务信息才进行压缩;
  • 打开以下并修改如下内容:
  • ping 172.16.0.1  # ping网关确认节点工作是否正常;
  • 添加两个节点:
  • node    node1  
  • node    node2   #添加节点,一定是节点名称与主机名称保持一致;
  • 修改/etc/ha.d/authkeys权限为600,保证签名信息更安全;
  • # chmod 600 /etc/ha.d/authkeys
  • 编辑配置/etc/ha.d/authkeys添加如下内容:
  • auth 1
  • 1 md5 7f687dc09a57c98a2b4d38292e319dc0   #注意:使用随机数确保签名信息的安全;
  • 编辑修改配置文件/etc/ha.d/ haresources,添加如下信息;
  • node1 172.16.11.1/16/eth0/172.16.255.255 httpd  #指定节点虚拟网卡信息及所对应的服务;
  • 复制ha.cf authkeys haresources配置文件至RS2上;
  • # scp ha.cf haresources authkeys root@node2:/etc/ha.d/
  • 启动Director-主和Director-备上的heartbeat服务:
  • # service heartbeat start
  • # ssh node2 ‘service heartbeat /etc/rc.d/init.d/heartbeat start’

使用heartbeat v2版本的heartbeat-gui图形化工具管理集群服务:


  • 1)首先要将node1和node2节点上的heartbeat服务停掉;
  • #service heartbeat stop   #停止本节点服务;
  • #ssh node2 '/etc/rc.d/init.d/heartbeat stop'    #停止node2节点集群服务;
  • 2)在RS1和RS2上同时安装heartbeat-gui工具
  • # rpm -ivh heartbeat-gui-2.1.4-9.el5.i386.rpm
  • 3)编辑/etc/ha.d/ha.cf配置文件,添加crm on或crm respawn指令;
  • 4)给hacluster用户添加密码,hacluster用户是登录图形界面的用户;
  • #passwd hacluster
  • 5)#netstat -tnlp   #确保端口5560打开;
  • 6)#hb_gui &   #打开图形管理界面;

利用heartbeat-ldirectord模块管理Director上的虚拟服务及RS1和RS2的定义并对RS1和RS2 进行健康状况检查,安装ldirectord需要用到的包有heartbeat-ldirectord-2.1.4-9.el5.i386.rpm和perl-MailTools-1.77-1.el5.noarch.rpm


  • # yum -y --nogpgcheck localinstall heartbeat-ldirectord-2.1.4-9.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm
  • 复制ldirectord配置文件至/etc/ha.d/目录下:
  • # cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
  • 编辑/etc/ha.d/ldirectord.cf配置文件:
  • 打开如下选项:
  • logfile="/var/log/ldirectord.log"  #打开日志
  • 定义虚拟主机,将配置文件中的虚拟主机修改为以下内容:
  • virtual=172.16.11.1:80   #定义LVS的虚拟服务;
  •         real=172.16.11.21:80 gate #指定RS1;
  •         real=172.16.11.22:80 gate #指定RS2;
  • #       real=192.168.6.6:80 gate
  • #       fallback=127.0.0.1:80 gate
  •         service=http #指定服务;
  •         request=" .test.html" #做健康状况检查从RS上获取的测试页面;
  •         receive="OK" #测试页面中添加的相应字符串;
  • #       virtualhost=some.domain.com.au #定义虚拟主机;
  •         scheduler=rr #调度算法;
  •         #persistent=600
  •         #netmask=255.255.255.255
  •         protocol=tcp #指定相应的协议;
  •         checktype=negotiate #检查RS的健康状况方式,negotiate是协商方式;
  •         checkport=80 #检查RS端口号;
  • #       request="index.html"
  • #       receive="Test Page"
  • #       virtualhost=www.x.y.z
  • 将ldirectord配置文件传递至Director-备主机上的/etc/ha.d/目录下;
  • # scp /etc/ha.d/ldirectord.cf node2:/etc/ha.d/
  • 在RS1和RS2的网页主目录下添加.test.html测试页面,页面内容写为OK;
  • # echo "OK" > /var/www/html/.test.html
  • 将Director-主和Director-备上的ldirectord服务开机自动启动停止掉;
  • # chkconfig ldirectrod off

打开heartbeat的图形的界面添加ldirectord和vip资源;


  • # service ipvsadm start  #开启Director-主ipvsadm服务;
  • # service heartbeat start #开启Director-主heartbeat服务;
  • # ssh node2 'service ipvsadm start' #开启Director-备ipvsadm服务;
  • # ssh node2 '/etc/rc.d/init.d/heartbeat start' #开启Director-备heartbeat服务;
  • #hb_gui &

利用hacluster用户登录:



添加资源:



添加ldirectord资源



添加vip资源



启动ldirectord和vip资源成功;



ipvsadm规则在RS2上已定义,并且对RS1和RS2做了健康状况检查;



vip资源在RS1上启动正常



通过浏览器访问http://172.16.11.1,此时RS1和RS2的页面均能以负载均衡方式正常访问;





将RS1节点关闭掉,验证一下ldirectord对RS1和RS2健康状况检查的效果:


  • 在RS1上添加如下防火墙规则;
  • # iptables -A INPUT -p tcp --dport 80 -j DROP

查看Director-主上的ipvsadm规则如下:



通过浏览器访问http://172.16.11.1,此时只有RS2响应用户的请求;



定义位置资源约束,让ldirectord和vip在同一个节点上;
定义顺序资源约束,让ldirectord在vip启动后再启动;
此时无论将node1和node2中任何一节点作为主节点或备节点,ldirectord和vip资源都会在同一个节点上,并且启动服务过程中都将会是ldirectord在vip启动后再启动;











以上就是集群服务的LVS-DR模型基于heartbeat-ldirectord模块管理Director上虚拟服务及RS1和RS2的定义并对RS进行健康状况检查的实现过程。




运维网声明 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-659503-1-1.html 上篇帖子: LVS+heartbeat 高可用LINUX服务器 下篇帖子: MySQL+heartbeat+DRBD+LVS高可用集群搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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