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

[经验分享] 虚拟机搭建heartbeat

[复制链接]

尚未签到

发表于 2015-11-21 09:28:31 | 显示全部楼层 |阅读模式
  配置环境:
  主机(A) debian 7.4 (master)
  eth0 10.0.2.15       eth1 192.168.34.110
  主机(B) debian 7.5 (slave)
  eth0 10.0.2.16      eth1 192.168.34.134
  注:在虚拟机里面操作,默认情况下两个主机的eth0相同,可以通过sudo ifconfig eth0 ip-address指定IP地址。
  

  由于是虚拟机测试,我直接用的root权限做的处理。
  安装heartbeat
  apt-get install heartbeat
  安装完成之后在/usr/share/doc/heartbeat目录里找到ha.cf.gz、haresources.gz、authkeys.gz三个文件,解压后放到/etc/ha.d 目录下。注意,authkeys这个文件的权限必须是600,执行chmod 600 authkeys即可。
  1.ha.cf文件配置
#debugfile /var/log/ha-debug    #用于记录 heartbeat 的调试信息,这里不开启
logfile /var/log/ha-log                #指名heartbeat的日志存放位置。

logfacility   local0                       #如果未定义上述的日志文件,那么日志信息将送往local0(对应的#/var/log/messages),如果这 3 个日志文件都未定义,那么heartbeat 默认情况下 将在/var/log 下建立 ha-debug 和 ha-log 来记录 相应的日志信息。
bcast eth1                                #指明心跳使用以太网广播方式,并且是在eth1接口上 进行 广播。  
keepalive 2                                #发送心跳报文的间隔,默认单位为秒,如果你毫秒为单位,
那么需要在后面跟 ms 单位,如 1500ms 即代表 1.5s
deadtime 30                              #指定若备用节点在30秒内没有收到主节点的心跳信
号,则立即接管主节点的服务资源。

warntime 10                              #指定心跳延迟的时间为10秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一 个警告日志,但此时不会切换服务。发出最后的心跳 信息的间隔。
initdead 120                              
#在某些系统上,系统启动或重启之后需要经过一段时 网络才能正常工作,该选项用于解决这种情况产生 的时 间间隔。取值至少为deadtime的两倍。  
udpport 694                           
   #设置广播/单播通信使用的端口,694为默认使用的端口号

auto_failback off                         #用来定义当主节点恢复后,是否将服务自动切回。如 果不想启用,请设置为off,默认为on。heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on 的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点;如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节 点。
  watchdog/dev/watchdog         #该选项是可选配置,是通过Heartbeat来监控系统的 运行状态。使用该特性,需要在内核中载入"softdog" 内核模块,用来生成实际的设备文件,如果系统中没 有这个内核模块,就需要指定此模块,重新编译内 核。编译完成输入"insmodsoftdog"加载该模块。 然后输入"grepmisc /proc/devices"(应为10),输 入"cat/proc/misc |grep watchdog"(应为 130)。最后,生成设备文件:"mknod /dev/watchdogc 10 130" 。即可使用此功能。  
node debian7.4                                #主节点主机名,可以通过命令"uanme -n"查看。  
node debian7.5                                #备用节点主机名。  

ping 192.168.34.1                       #选择ping的节点,ping节点选择的越好,HA集群就
越强壮,可以选择固定的路由器作为ping节点,或者 应用服务器但是 最好不要选择集群中的成员作为ping 节点,ping节点 仅仅用来测试网络连接。

  2.haresources文件配置
  debian7.4 192.168.34.201/23/eth1 lighttpd (以nginx为例,让nginx服务和虚拟IP绑定,lighttpd安装 apt-get install nginx即可)
  其中debian7.4为主机名,可以通过uname –n查看;192.168.34.201为集群ip,23为掩码(ifconfig之后可以看到子网掩码,23的意思就是前面23位都是为1,IPV4地址是32位,23意味着子网掩码为255.255.254.0)

  3.authkeys文件配置
  authkeys文件用于设定Heartbeat的认证方式,共有3种可用的认证方式,即crc、md5和sha1。3种认证方式的安全性依次提高,但是 占用的系统资源也依次增加。如果Heartbeat集群运行在安全的网络上,可以使用crc方式;如果HA每个节点的硬件配置很高,建议使用sha1,这 种认证方式安全级别最高;如果是处于网络安全和系统资源之间,可以使用md5认证方式。这里我们使用crc认证方式,设置如下:
auth 3  
#1 crc  
#2 sha1 sha1_any_password  
3 md5 hello!#注意,这个配置必须主机直接保持一致


  配置文件配好之后,启动heartbeat
  /etc/init.d/heartbeat start (注意权限)
  启动之后,primary的机器会事先获取到虚拟IP,如下图所示:
   DSC0000.jpg

  这个时候就可以通过虚拟IP访问主机的nginx服务,如下图所示:
   DSC0001.jpg

  如果在这个时候,将primary主机的heartbeat kill掉,从backup主机的/var/log/message中可以看到如下内容
   DSC0002.jpg

  backup主机通过心跳检测,获知primary挂掉了,这样primary释放占用的虚拟IP,backup主机抢占虚拟IP,如下图所示:
   DSC0003.jpg

  这个时候再访问nginx,你会得到如下结果:
DSC0004.jpg

  

  总结:利用heartbeat提供高可靠方案主要思路是利用虚拟IP提供备选方案,通过主机之间心跳检测,判断主机是否能正常提供服务,如果检测到某个主机挂掉了,则没有挂掉的主机会获取虚拟IP,继续提供服务。从而保证服务的高可用。
  

运维网声明 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-141720-1-1.html 上篇帖子: 修改asmack源码,加上heartbeat机制 下篇帖子: heartbeat+ldirector 构建高可用LVS-DR集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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