shell解决服务器高可用

  HA(High Availability)高可用,有如下三种工作模式。
(1)主从方式 (非对称方式)
工作原理:主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享存储系统解决。
(2)双机双工方式(互备互援)   
工作原理:两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存储系统中。   
(3)集群工作方式(多服务器互备方式)   
工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。
       Linux下有不少工具可以提供高可用的功能,如vrrp,heartbeat。
       vrrp主机会定期广播自己依然活着“我是master,我还活着,平安无事”,而当备机接受不到“平安无事”的时候,会接管主机的ip地址,也就接管了主机提供的服务,然后开始喊“我成主机了,我活着,平安无事”
       heartbeat不使用广播而使用心跳,也就是在高可用服务器之间建立监控关系,避免了广播对网络的负担,功能也上更为强大,在接管ip的同时,还可以执行脚本。
       vrrp使用双机双工方式,但有些应用场景中并不适用,如mysql的高可用就不能使用vrrp。HA的三种模式中都有“共享存储“目的是解决数据一致性 的问题,mysql的数据文件即data目录如果建立在nfs服务上,启动慢不说,备机即便能起来也是不能使用的,一段时间以后备机上的mysql服务会 自动结束。由于服务器不是那么容易死掉的(在测试的时候为了简单,一般是让机器死掉),更多的时候是应用死掉。所以才有 heartbeat+DRBD+MYSQL的组合,利用的就是heartbeat的脚本执行功能(检测、资源回收)。
        我们在这里用shell脚本实现vrrp的主从方式 (非对称方式)功能。环境如下:
        web(主)             192.168.1.1      http服务
        web(备)             192.168.1.2      http服务
       
        实现思路:首先是状态监控,既然是http服务,我们就监控httpd的状态,使用curl -w %{http_code}获得。 备机上运行脚本,当curl获得的状态码不为200时,即主机已经死掉,我们就让备机接管主机ip。并使用arping命令更新局域网对主机ip的mac记录。

# /bin/bash
while true do
         code=`curl -o /dev/null -w %{http_code} http://192.168.1.1/ 2>/dev/null`
        if ! [ $code -eq 200 ];then
                ifconfig eth0 192.168.1.1
                arping -A -c 1 -I eth0 192.168.1.1
                kill -9 $$ #IP已经切换,脚本已经没有继续运行的必要,把自己杀掉。
        fi
        sleep 5
done

heartbeat实现:

主机运行:
#! /bin/bash
while true do
         code=`curl -o /dev/null -w %{http_code} http://192.168.1.1/ 2>/dev/null`
        if ! [ $code -eq 200 ];then
                /etc/init.d/httpd stop
                ifconfig eth0 down               
                kill -9 $$ #IP已经切换,脚本已经没有继续运行的必要,把自己杀掉。
        fi
        sleep 5
done

备机运行:
#! /bin/bash
while true do
         ping -c1 192.168.1.1 &>/dev/null
        if ! [ $? -eq 0 ];then
                /etc/init.d/httpd start
                ifconfig eth0 192.168.1.1               
                arping -A -c 1 -I eth0 192.168.1.1
                kill -9 $$ #IP已经切换,脚本已经没有继续运行的必要,把自己杀掉。
        fi
        sleep 5
done

       本文主要是介绍高可用的模式及实现原理。该脚本只是模拟vrrp、heartbeat的部分功能,有一些假设的前提条件,目的是为了让大家了解其工作原理,不像之前的事例可以用在生产环境。欢迎批评指教。希望对大家理解高可用有所帮助,更希望大家可以完善这个脚本,提出更好的解决方案,多说一句,脚本不是万能的,但没有脚本是万万不能的。
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值