虚拟机搭建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,继续提供服务。从而保证服务的高可用。
主机(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,继续提供服务。从而保证服务的高可用。
相关文章推荐
- Eclipse安装SVN插件
- iOS开发UI高级—19Quartz2D简单使用(一)
- 用C++实现多线程Mutex锁(Win32)
- 循环小数->分数备忘
- C#中Dictionary的用法及用途
- MIUI打开开发者usb调试方法
- 线性表接口
- 如何更安全的使用Block
- 再谈指针
- iOS开发UI高级—18Quartz2D简单介绍
- iOS开发UI高级—17Modal模态视图简单介绍
- 设计模式之 - 命令模式
- 【BZOJ】【3240】【NOI2013】矩阵游戏
- 遗传算法来控制进入一
- SSH实例(5)
- flume NG 配置及案例
- 高斯消元
- IOS网络请求封装与下拉刷新上托加载更多
- Codeforces 484E Sign on Fence(是持久的段树+二分法)
- PHP 学习笔记 01