Heartbeat实现Nginx热备

Heartbeat实现热备原理:

与keepalived运用vrrp协议不同,heartbeat利用串口和ip实现心跳监控,节点会检查配置文件中的网络联通性,如果网络不通,则主节点的ipfail会执行切换,关闭主节点上的Nginx并释放虚拟ip;此时备用节点将接管虚拟ip,并将此节点上的nginx启动,这样就实现了nginx的热备。

虚拟ip:192.168.3.233

主节点:

hostname usvr-124

eth0:192.168.3.124

eth0:0:192.168.8.124  用于监测心跳

/etc/hosts

192.1683.126  usvr-126

备用节点:

hostname usvr-126

eth0:192.168.3.126

eth0:0:192.168.8.126 用于监测心跳

/etc/hosts

192.1683.124  usvr-124

1.需要在两台机器上各自添加对方的host。

2.主备节点需要时间同步。

--------------------------------------分割线 --------------------------------------

相关阅读

基于Heartbeat V1实现Web服务双机热备

Heartbeat实现Web服务的高可用群集

Heartbeat+LVS+Ldirectord高可用负载均衡解决方案

DRBD+Heartbeat+NFS高可用性配置笔记

Heartbeat基于CRM使用NFS对MySQL高可用

Heartbeat高可用httpd基于Resources简单配置

--------------------------------------分割线 --------------------------------------

1.heartbeat安装:

wget Fedora-epel/6/i386/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum -y install heartbeat*

安装完成后会在/etc/ha.d建立相关目录

[root@usvr-124 ha.d]# rpm -q heartbeat -d
/usr/share/doc/heartbeat-3.0.4/AUTHORS
/usr/share/doc/heartbeat-3.0.4/COPYING
/usr/share/doc/heartbeat-3.0.4/COPYING.LGPL
/usr/share/doc/heartbeat-3.0.4/ChangeLog
/usr/share/doc/heartbeat-3.0.4/README
/usr/share/doc/heartbeat-3.0.4/apphbd.cf
/usr/share/doc/heartbeat-3.0.4/authkeys
/usr/share/doc/heartbeat-3.0.4/ha.cf
/usr/share/doc/heartbeat-3.0.4/haresources

/usr/share/man/man1/cl_status.1.gz
/usr/share/man/man1/hb_addnode.1.gz
/usr/share/man/man1/hb_delnode.1.gz
/usr/share/man/man1/hb_standby.1.gz
/usr/share/man/man1/hb_takeover.1.gz
/usr/share/man/man5/authkeys.5.gz
/usr/share/man/man5/ha.cf.5.gz
/usr/share/man/man8/apphbd.8.gz
/usr/share/man/man8/heartbeat.8.gz

将相关配置文件copy到/etc/ha.d中即可

2.heartbeat配置

主节点配置:

(1)主配置文件(ha.cf)

#debugfile /var/log/ha-debug
logfile /var/log/ha-log    #指名heartbeat的日志存放位置。
#crm yes      #是否开启Cluster Resource Manager(集群资源管理)功能。
#bcast eth1    #指明心跳使用以太网广播方式,并且是在eth1接口上进行广播。
keepalive 2    #指定心跳间隔时间为2秒(即每两秒钟在eth1上发送一次广播)。
deadtime 30 #指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源。
warntime 10 #指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务。
initdead 120 #在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。 
udpport 694    #设置广播通信使用的端口,694为默认使用的端口号。
#baud 19200    #设置串行通信的波特率。
#serial /dev/ttyS0   #选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。
ucast eth0 192.168.8.126 #采用网卡eth0的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址。
#mcast eth0 225.0.0.1 694 1 0 #采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。
auto_failback on #用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点。
#stonith baytech /etc/ha.d/conf/stonith.baytech   # stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。
#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    usvr-124    #主节点主机名,可以通过命令“uanme –n”查看。
node    usvr-126  #备用节点主机名。
ping 192.168.3.1 #选择ping的节点,ping 节点选择的越好,HA集群就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接。
respawn hacluster /usr/lib64/heartbeat/ipfail #该选项是可选配置,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动重新启动。最常用的进程是ipfail,此进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络的连通性。其中hacluster表示启动ipfail进程的身份。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6e6b7418fe679a6b07794f52a5f48ae6.html