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

[经验分享] CentOS linux 高可用集群之heartbeat

[复制链接]
发表于 2019-1-7 06:29:43 | 显示全部楼层 |阅读模式


  Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。
  Heartbeat是Linux-HA工程的一个组件,自1999年开始到现在,发布了众多版本,是目前开源Linux-HA项目最成功的一个例子,在行业内得到了广泛的应用.
  随着Linux在关键行业应用的逐渐增多,它必将提供一些原来由IBM和SUN这样的大型商业公司所提供的服务,这些商业公司所提供的服务都有一个关键特性,就是高可用集群。
  heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
  高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断。从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。这个任务通常由一组被称为“心跳”的代码完成。在Linux-HA里这个功能由一个叫做heartbeat的程序完成。
  下面使用hearbeat做高可用集群HA,nginx服务作为高可用集群HA的服务对象,即主服务器的nginx宕机或者无法提供服务,就切换到从服务上对外提供服务。
  系统环境:
Master(主服务器):
hostname:masternginx、eth0:192.168.171.50  、eth1:192.168.17.50
Slave(从服务器):
hostname:slavenginx、eth0:192.168.171.51、eth1:192.168.17.51
流动的IP(Virtual IP):192.168.171.100(即对外提供服务的IP)  

  nginx在系统安装的时候安装或者后期自行安装。
  1)、安装前的准备工作:
  (1)分别设置主从服务器的hostname,
  主服务器:vim/etc/sysconfig/network 修改:HOSTNAME=masternginx
  从服务器:vim/etc/sysconfig/network 修改:HOSTNAME=slavenginx  (2)、分别在主从服务器上关闭SELinux
sed -i ‘s/SELINUXE=enforcing/SELINUX=disabled/’ /etc/selinux/config  (3)、分别在主从的服务器上配置/etc/hosts对应的ip和主机名:
192.168.17.51   slavenginx
192.168.17.50   masternginx  2)、分别在主服务器和从服务器上安装heartbeat软件,同时需要安装libnet。
yum install libnet heartbeat  

  源码下载:
  libnet:http://libnet.sourceforge.net/
  heartbeat:http://www.linux-ha.org/wiki/Downloads
  3)、修改heartbeat的配置
  (1)首先在主服务器上修改配置,主要是以下三个文件:
  (heartbeat的安装样例目录下/usr/share/doc/beartbeat-*)
authkeys:用于验证通信的,看对方是否还存活
haresources:用于配置流动IP的服务信息和需要做HA的服务
ha.cf:heartbeat的配置文件  (2)在主服务器上,从heartbeat的安装样例目录下/usr/share/doc/beartbeat拷贝三个文件到 /etc/ha.d目录下
cd /usr/share/doc/heartbeat-3.0.4/ && cp authkeys ha.cf haresources /etc/ha.d/
  (3)修改配置文件
  主服务上修改:
  vim/etc/ha.d/authkeys            #编辑验证通信方式
auth3                    #默认都是有 # 号注释,用哪一张认证方式
#1 crc
#2 sha1 HI!
3 md5 Hello!                            #去掉#号,

  保存退出,修改权限:
chmod 600 /etc/ha.d/authkeys  用于配置流动IP的服务信息和需要做HA的服务,默认是全部注释
  vim /etc/ha.d/haresources
masternginx 192.168.171.100/24/eth0:0 nginx  

  #heartbeat主配置文件
  vim /etc/ha.d/ha.cf
debugfile /var/log/ha-debug           #排查故障的日志
logfile /var/log/ha-log          #日志的存放位置
logfacility     local0        #日志的级别
keepalive 2               #2秒的周期探测一次
deadtime 30             #.30秒没有回应,就认为死亡了
warntime 10          #如果超过10秒没有回应会发生警告
initdead 60         #.重启的预留时间
udpport 694              #心跳线通信端口
ucast eth1 192.168.17.51        #..心跳线接口和对方IP
auto_failback on          #.主切换到从,或者主恢复是,会自动切换
node   masternginx      #.主服务器的主机名
node   slavenginx       #.从服务器的主机名
ping 192.168.17.1          #用于仲裁的服务器IP
respawn hacluster/usr/lib64/heartbeat/ipfail    #以hacluster运行脚本,检查网络的连通性。  把刚刚修改的三个配置文件复制到从服务器上的同一目录。做一下修改:
cd /etc/ha.d/ && scp authkeys haresources ha.cf slavenginx:/etc/ha.d/  从服务器上修改:
  authkeys和haresources的配置内容不需要更改,只需要修改ha.cf配置文件
  vim /etc/ha.d/ha.cf
debugfile /var/log/ha-debug            #排查故障的日志
logfile /var/log/ha-log            #日志的存放位置
logfacility     local0        #日志的级别
keepalive 2                #2秒的周期探测一次
deadtime 30              #.30秒没有回应,就认为死亡了
warntime 10               #如果超过10秒没有回应会发生警告
initdead 60            #.重启的预留时间
udpport 694            #心跳线通信端口
ucast eth1 192.168.17.50      #..心跳线接口和对方IP
auto_failback on          #.主切换到从,或者主恢复是,会自动切换
node   masternginx       #.主服务器的主机名
node   slavenginx      #.从服务器的主机名
ping 192.168.17.1           #用于仲裁的服务器IP
respawn hacluster/usr/lib64/heartbeat/ipfail   #以hacluster运行脚本,检查网络的连通性。  

  里面的内容基本都不需要更改,只是要修改心跳的IIP地址修改为对方的IP
  (ucast eth1 192.168.171.50)
  测试:
  如果开启了防火墙需要对udp 694端口放行。
-A INPUT -m state --state NEW -m udp -p udp--dport 694 -j ACCEPT  1)、启动heartbeat服务,但是必须要先在主服务器上开启了,然后才能在从服务器上开启。
service heartbeat start  2)、检查测试:
  ifconfig 查看是否有eth0:0
  ps aux |grep nginx  看是否有nginx进程
  3)、模拟故障测试
  为了测试方便,我们在主服务器和从服务器的nginx服务的默认网站下建立一个测试网页:
  主服务器的内容:
  echo “1111111111111master server” >/usr/share/nginx/html/index.html
  从服务器的内容:
  echo “222222222222 slave server” >/usr/share/nginx/html/index.html
  模拟故障
  测试1:在主服务器上禁止ping
  iptables -I INPUT -p icmp -j DROP          #拒绝icmp包,模拟故障
  iptables -D INPUT -p icmp -j DROP         #解除故障
  测试是否主服务器上发生故障,从服务器是否接管服务;主服务器恢复工作了,从服务器是否释放接管权。
  测试2:主服务器直接停止heartbeat服务,模拟heartbeat发生故障
  service heartbeat stop
  service heartbeat start
  测试3:在主从上都模拟心跳线线段了
  ifdown eth1




运维网声明 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-660084-1-1.html 上篇帖子: Heartbeat 与Corosync对比分析 下篇帖子: 高可用集群软件Heartbeat介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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