linux进阶之旅(三)& heartbeat实现高可用

概念

Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。其中Heartbeat就是Linux-HA项目中的一个组件,也是目前开源HA项目中最成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等
自1999年开始到现在,Heartbeat在行业内得到了广泛的应用,也发行了很多的版本,可以从Linux-HA的官方网站http://www.linux-ha.org下载到Heartbeat的最新版本。

原理:

heartbeat(Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。


注意

  • Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序,要监控资源和应用程序是否运行正常,必须使用第三方的插件,例如ipfail、Mon、Ldirector等。

比如其中 Ldirector是一个监控集群服务节点运行状态的插件。Ldirector如果监控到集群节点中某个服务出现故障,就屏蔽此节点的对外连接功能,同时将后续请求转移到正常的节点提供服务,这个插件经常用在LVS负载均衡集群中。


搭建HeartBeat

一、基础环境的设置

1、准备四台服务器

2、各服务器IP分配:

3、两台heartbeat服务器的Yum源配置:

4、软件包安装:

heartbeat-3.0.4-2.el6.x86_64.rpm        
heartbeat-libs-3.0.4-2.el6.x86_64.rpm
heartbeat-devel-3.0.4-2.el6.x86_64.rpm  
ldirectord-3.9.5-3.1.x86_64.rpm

5、文件的移动:

cd /usr/share/doc/heartbeat-3.0.4
cp ha.cf haresources authkeys /etc/ha.d

cd /usr/share/doc/ldirectord-3.9.5
cp ldirectord.cf /etc/ha.d

二、首先,搭建Heartbeat服务器

(注 :两台服务器的配置完全相同)

1、主配置文件(/etc/ha.d/ha.cf):

debugfile /var/log/ha-debug     ##调试日志文件文件,取默认值
logfile /var/log/ha-log         ##系统运行日志文件,取默认值
logfacility local0              ##日志等级,取默认值
keepalive 2                     ##心跳频率,自己设定。1:表示 1 秒;200ms:表示 200 毫秒
deadtime 30                 ##节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡,自己设定
warntime 10                 ##发出警告时间,自己设定
initdead 120                    ##守护进程首次启动后应该等待 120 秒后再启动主服务器上的资源
udpport 694                 ##心跳信息传递的 udp 端口,使用端口 694 进行 bcast 和 ucast 通信 , 取默认值
bcast eth0                      ##采用 udp 广播播来通知心跳
auto_failback on                ##当主节点恢复后,是否自动切回
watchdog /dev/watchdog      ##这里有一个需要注意的点在下面讲解
node server1                    ##主节点名称
node server2                    ##副节点名称,注意顺序
ping 172.25.77.250              ##测试连通性,可以设置为本地网关,ping 的时候时要手动去测试连通性,和下面的ping一个ip组只能开启一个,要放活着的地址
respawn hacluster /usr/lib64/heartbeat/ipfail       ##注意是lib64,因为使用的是64位系统
apiauth ipfail gid=haclient uid=hacluster

有关watchdog出现的问题

对于操作系统自身出现的问题,Heartbeat也无法监控,如果主节点操作系统挂起,一方面可能导致服务中断,另一方面由于主节点资源无法释放,而备份节点却接管了主节点的资源,此时就发生了两个节点同时争用一个资源的状况。针对这个问题,就需要在linux内核中启用一个叫watchdog的模块,watchdog是一个Linux内核模块,它通过定时向/dev/watchdog设备文件执行写操作,从而确定系统是否正常运行,如果watchdog认为内核挂起,就会重新启动系统,进而释放节点资源。在linux中完成watchdog功能的软件叫softdog,softdog维护一个内部计时器,此计时器在一个进程写入/dev/watchdog设备文件时更新,如果softdog没有看到进程写入/dev/watchdog文件,就认为内核可能出了故障。watchdog超时周期默认是一分钟,可以通过将watchdog集成到Heartbeat中,从而通过Heartbeat来监控系统是否正常运行。

2、资源文件(/etc/ha.d/haresources):

最顶行添加:
server1 IPaddr::172.25.77.200/24/eth0 ldirectord httpd
//高可用配置,书写的就是和顺序就是启动配置 ip后面的是脚本的名称

3、认证文件(/etc/ha.d/authkeys)

注: 更改之后将文件的权限一定要设置为 600,这也是文件中明确说明的

auth 1          
1 crc               //基本的crc加密
#2 sha1 HI!
#3 md5 Hello!           //md5算法加密,后面跟的就是密码,也就是要加密的字符

4、配置 (/etc/ha.d/ldirectord.cf) :

5、配置 ip_forward

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

6、分别在主备心跳上启动 heartbeat 服务:

service heartbeat start    //启动heartbeat服务
//注意 : heartbeat 做好之后,将之前的服务和vip都关闭,然后启动,主机没问题再启动备机

7、分别在 realserver 上执行以下命令:配置 arp 机制,添加VIP

vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
ifconfig eth0:0 172.25.77.200 netmask 255.255.255.255 up
route add -host 172.25.77.200 dev eth0:0

三、在两个真实apache主机(Realserver)中添加监控页面:

  • 1、安装httpd服务
  • 2、编写网页主界面
    • server3:
      echo “ hostname -server 3 ” >> /var/www/html/index.html
    • server4:
      echo “ <h1>hostname</h1> ” >> /var/www/html/index.html
  • 3、开启apache服务:
    service httpd start

四、测试:

主机上访问:http://172.25.77.200
首先显示的是server3的发布页面:

刷新网页之后,显示server4的发布页面:

//看到页面在两个 realserver 上切换表示成功!

server1,2的测试是将server1挂掉,然后发现vip会自动添加到server2上,当server1重启开启时,vip又会回到server2(因为文件中支持了回切,并以server1为主),测试同上,就不再演示

  • 服务每次更改节点时,查看/var/log/messages时,可以发现 …/usr/libexec/heartbeat/send_arp ,这就是在发送arp数据,相等于通知更新了vip

当然这只是最基本的heartbeat的搭建,作为一个功能非常强大的软件,后面我们还会加上lvs,网络存储drbd,mysql数据库
共同实现一套完整的集群架构。

发布了55 篇原创文章 · 获赞 38 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/mon_star/article/details/78127730
今日推荐