您的位置:首页 > 其它

虚拟机搭建heartbeat

2015-06-07 16:24 302 查看
配置环境:

主机(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" 内核模块,用来生成实际的设备文件,如果系统中没 有这个内核模块,就需要指定此模块,重新编译内 核。编译完成输入"insmod
softdog"加载该模块。 然后输入"grep
misc /proc/devices"(应为10),输 入"cat
/proc/misc |grep watchdog"(应为 130)。最后,生成设备文件:"mknod /dev/watchdog
c 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,如下图所示:



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



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



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




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



总结:利用heartbeat提供高可靠方案主要思路是利用虚拟IP提供备选方案,通过主机之间心跳检测,判断主机是否能正常提供服务,如果检测到某个主机挂掉了,则没有挂掉的主机会获取虚拟IP,继续提供服务。从而保证服务的高可用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: