在没有stonith设备下使用heartbeat实现高可用的原理和测试
来源:互联网 发布:单晶片编程 编辑:程序博客网 时间:2024/05/16 14:27
如何在使用Heartbeat做HA,但有没有stonith硬件设备,想尽可能地避免闹裂,使架构更稳定?很简单,使用冗余心跳线路,使用Ping 服务器等手段。
[client] 172.16.68.129
|
eth0 172.16.68.128
[router] eth1 172.16.0.254 <---------------------
eth2 10.1.1.19 |
| |
|vip:10.1.1.17 |
eth0 10.1.1.21 /————-[web1] 172.16.0.201---|
[Diretor] eth1 172.16.0.3
| 两条心跳线路 |
eth0 10.1.1.18
[Backup Diretor] eth1 172.16.0.2 |
\————-[web2] 172.16.0.202---|
http://www.upl.com –> 10.1.1.17
在双心跳线路的情况下,测试是否会发生资源切换:
ucast eth1 172.16.0.2
ucast eth2 192.168.40.2
1、拔掉主服务器上的电源
资源会切换到备机器
2、测试hb_standby
该指令执行成功,ipfail插件才能工作正常。
手工把资源切换到另外一个节点
/usr/share/heartbeat/hb_standby
手工把资源切换到本机
/usr/share/heartbeat/hb_takeover
3、关闭主服务上生产网络的网卡(vip所在网络)
不能简单判断是否切换,因为还要参考ping server所在网络。
参考思考题3
4、切断两台服务器之间的其中一条心跳线
不会切换。
5、切断两台服务器之间的所有心跳线
备机器由于接受到来自主机器的心跳信号,所以会接管资源,但主机器也不知道备机器已经拥有了资源,所以会出现“脑列”
6、杀死主服务器上所有的heartbeat进程
skill -9 heartbeat
会把资源强过去。主机器上面绑定的vip不会撤销。
正常情况下,如果是通过service heartbeat stop退出,那么退出前会把资源让给备机器,然后在结束进程。
解决:使用看门狗(soft watchdog)
两个节点相同的配置:
# service heartbeat stop
# vim ha.cf
watchdog /dev/watchdog
# service heartbeat start
加载软件看门狗模块
# modprobe softdog
设置看门狗的超时时间(如果超过该时间,heartbeat没有给狗设备信号,就重启计算机)
# echo “10″ > /proc/sys/kernel/panic
验证:在其中节点杀掉所有进程
# skill -9 heartbeat
7、两台服务器都重启
前提:要求heartbeat开机启动。
步骤: 先重启备机器,然后关闭主机器,紧接着备机器的heartbeat已经启动完成并且过来超过两分钟,然后再把主机器启动。
两分钟与 initdead=120
auto_failback=off:
备机器接管了资源,主机器启动后不会接管资源
auto_failback=on:
备机器接管了资源,主机器启动后会主动接管资源,告诉备机器让出资源。
单心跳线路下思考的:
生产网络在:A
心跳网络:B
Ping server
1、如果心跳网络和ping server是同一个网络,那么如果心跳网络有问题,会有什么现象?如何解决?
现象:双方都收不到心跳信号,认为对方已死,所以导致脑裂
解决:
方法1: 双心跳网络。
方法2:添加硬件的stonith(fence)。
原理:由一开始,就是由主机器发送心跳给备机器,心跳网络出问题,备机器认为主机器死了,然后备机器会发指令让stonith设备重启或者关闭主机器,方向是单向,只能备机器关闭主机器。
2、如果ping server是处于生产网络上的,而心跳网络现在出问题。又会现出什么现象?如何解决?
跟上面的结果是一样。解决方法也是一样。在这种情况,ping server不起作用。
结论:整个架构还是以心跳信号作为故障判断主要依据。
3、ping server处于生产网络,而心跳网络没有问题,但生产网络出现故障。会出现什么现象?
ping server 到底是什么一个角色?
作用: 辅助判断是否是出现网络故障。用到的插件ipfail.
如果节点node1与ping server失去联系(生产网络故障),该节点node1就会通过心跳网络问另外一个节点node2是否与ping server通信正常。如果另外一个节点node2能够通信正常,那么该节点node1就知道自己出现网络故障,就会把资源主动让给另一个节点node2
- 在没有stonith设备下使用heartbeat实现高可用的原理和测试
- Linux Heartbeat实现高可用集群及在VirtualBox虚拟环境下的测试
- CentOS 6.5环境下heartbeat高可用集群的实现及工作原理详解
- Linux高可用性方案之Heartbeat的Stonith配置(转)
- 使用HeartBeat实现高可用HA的配置过程详解
- linux高可用集群heartbeat实现http的高可用
- heartbeat实现Nginx高可用
- heartbeat实现Nginx高可用
- heartbeat -在Linux上实现高可用服务
- 使用Heartbeat在Linux搭建高可用(High-Availability)的集群服务
- Linux之Heartbeat实现服务器的高可用
- MySQL高可用介绍2-heartbeat测试
- heartbeat实现MySQL双机高可用
- heartbeat实现MySQL双机高可用
- Heartbeat+Haproxy实现负载均衡高可用
- HeartBeat 实现 HAproxy 双机高可用
- Heartbeat+Haproxy实现负载均衡高可用
- nfs+drbd+heartbeat实现高可用文件系统
- Nignx学习之前期调研
- CCTbleview
- VC++中使用ADO方式操作ACCESS数据库
- js调用android本地代码失败 兼容问题
- iOS 7 教程:定制iOS 7中的导航栏和状态栏
- 在没有stonith设备下使用heartbeat实现高可用的原理和测试
- android中sqlite distinct中使用多个字段的方法
- TFIDF算法
- JavaSE_正则表达式
- 基于容错的框架设计以及处理(T模块和S模块)
- 单片机嵌入式产生精确延时的一种方法
- IOS GCD学习和理解
- git cherry-pick command
- 一个失误引发的奇怪线程BUG