阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

407次阅读
没有评论

共计 16140 个字符,预计需要花费 41 分钟才能阅读完成。

– 本文大纲

  • 简介

  • 什么是高可用集群

  • Heartbeat 工作原理

  • 基于 heartbeat v1 实现双机热备

一、简介

Heartbeat 是 Linux-HA 工程的一个组件,自 1999 年开始到现在,发布了众多版本,是目前开源 Linux-HA 项目最成功的一个例子,在行业内得到了广泛的应用, 随着 Linux 在关键行业应用的逐渐增多,它必将提供一些原来由 IBM 和 SUN 这样的大型商业公司所提供的服务,这些商业公司所提供的服务都有一个关键特性,就是高可用集群。
 

推荐阅读

Linux 高可用(HA)集群之 heartbeat 基于 crm 进行资源管理详解 http://www.linuxidc.com/Linux/2013-08/89167.htm

Heartbeat+httpd+NFS 实现高可用的 Web 服务器 http://www.linuxidc.com/Linux/2013-08/88520.htm

Linux 高可用(HA)集群之 Heartbeat 详解 http://www.linuxidc.com/Linux/2013-08/88521.htm

Linux 高可用性方案之 Heartbeat 的 CRM 配置 http://www.linuxidc.com/Linux/2012-05/60838.htm

高可用集群 Heartbeat v1 实例 http://www.linuxidc.com/Linux/2013-09/90757.htm

LVS+heartbeat+ldirectord 高可用负载均衡集群解决方案 http://www.linuxidc.com/Linux/2011-09/42911.htm

二、什么是高可用集群

高可用集群,英文原文为 High Availability Cluster,简称 HA Cluster,是指以减少服务中断(如因服务器宕机等引起的服 务中断)时间为目的的服务器集群技术。简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。
高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损 失。它通过保护用户的业务程序对外不间断提供的服务,把因软件 / 硬件 / 人为造成的故障对业务的影响降低到最小程度。如果某个节点失效,它的备援节点将在几 秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。
只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。

三、Heartbeat 工作原理

heartbeat(Linux-HA)的工作原理:heartbeat 最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务

四、基于 heartbeat v1 实现双机热备

注:

配置高可用的前提:

  • 所有节点的主机名一定要与 uname - n 的结果一致
  • 所有节点的时间必须一致
  • 各节点间能基于 ssh 密钥认证通信
1、配置过程:
规划:
node1 essun.node1.com 192.168.1.109
node2 essun.node2.com 192.168.1.123

nfs 服务器 www.directory.com 192.168.1.118(同时也是集群节点的 ping 状态检测)

2、node1 配置部分

⑴、主机信息部分

vim /ect/hosts

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

1
#uname -n

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

1
#vim /etc/sysconfig/network

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

每一个节点都要这类似这样的设置

 

⑵、时间同步
在每一个节点上执行:
ntpdate cn.pool.ntp.org(要可以上网才可以)
⑶、ssh 密钥认证
在第一个节点上执行
1
2
#ssh-keygen -t rsa -P ''
#ssh-copy-id -i .ssh/id_rsa.pub root@essun.node2.com

将公钥送达到每一个节点上,(每一个节点都要如此做)

2、安装软件包
yum install perl-TimeDate net-snmp-libs libnet PyXML
注:libnet 是在 epel 源中,所以要下载EPEL源安装包即可

 

http://download.Fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html
下载对应的版本就可以的。
rpm -ivh epel-release-6-8.noarch.rpm

之后就可以使用 yum 安装 EPEL 中的包了

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

1
#rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm

 

两个节点都要如此安装。
3、配置 heartbeat
  • 信息层

  • 资源管理器

  • 资源代理

第一步: 配置 HMAC 所使用的密码串算法(使用的是单向加密)
heartbeart 心跳信号信息监听于 UDP694 端口, 心跳信息传输方式: 可以是单播,多播和组播,还可以基于串行线缆传输心跳信号
配置文件所在的位置 /etc/ha.d

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

其实这里并没有配置文件,它仅提供一个配置模板,存放于

 

1
2
[root@essun ha.d]# rpm -ql heartbeat |grep ha.cf
/usr/share/doc/heartbeat-2.1.4/ha.cf

在这个目录中我们将用到三个文件

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@essun heartbeat-2.1.4]#pwd
/usr/share/doc/heartbeat-2.1.4
[root@essun heartbeat-2.1.4]# ls
apphbd.cf HardwareGuide.txt
authkeys haresources
AUTHORS hb_report.html
ChangeLog hb_report.txt
COPYING heartbeat_api.html
COPYING.LGPL heartbeat_api.txt
DirectoryMap.txt logd.cf
faqntips.html README
faqntips.txt Requirements.html
GettingStarted.html Requirements.txt
GettingStarted.txt rsync.html
ha.cf rsync.txt
HardwareGuide.html startstop

 

authkeys:用于 HMAC 信息加密的认证机制与认证密码(此文件的权限必须为 600,否则 heartbeat 无法启动)
haresources:此文件用于定义资源
将此目录中的三个文件复制到 /etc/ha.d 目录下
1
#cp /usr/share/doc/heartbeat-2.1.4/{authkeys,haresources,ha.cf} /etc/ha.d/ -a

 

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-04/100635p2.htm

配置信号算法认证所使用的密钥

 

1
2
3
4
5
#vim /etc/ha.d/authkeys
auth 2 # 认证算法
#1 crc
2 sha1 HI! # 认证所使用的算法
#3 md5 Hello!

或使用 openssl 生成随机数

1
2
[root@essun ha.d]# openssl rand -hex 8
7d4d4401f3d151dc

改变此文件的权限:

1
2
3
[root@essun ha.d]# chmod 600 authkeys
[root@essun ha.d]# ll authkeys
-rw------- 1 root root 643 Apr 18 00:01 authkeys
第二步,设置核心配置文件 ha.cf
注:此文件中的如果 #号后面有个空格或一个制表符,表示其行是注释信息,如果在#号后直接接的是字符表示是参数,将# 号删除开启对应的参数功能。
1、heartbeat 记录日志的方式有两种,可以指定文件,也可以借助于 rsyslog.conf 日志配置文件来记录日志,默认是借助于 rsyslog 来记录日志的

配置属性信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@essun ha.d]# grep -v "#" /etc/ha.d/ha.cf |grep -v "^$"
logfile /var/log/ha-log
keepalive 1000ms
deadtime 8
warntime 3
udpport 694
mcast eth0 225.0.32.1 694 1 0
auto_failback on
node essun.node1.com
node essun.node2.com
ping 192.168.1.118
compression bz2
compression_threshold 2
[root@essun ha.d]#
以上参数注解:
logfile /var/log/ha-log
指明 heartbaet 的日志存放位置
keepalive 1000ms
指定心跳使用间隔时间为 1 秒(即每两秒钟在 eth0 上发送一次广播)
deadtime 8
指定备用节点在 8 秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源
warntime 3
指定心跳延迟的时间为 3 秒。当 3 秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务
udpport 694
设置广播通信使用的端口,694 为默认使用的端口号。
auto_failback on
用来定义当主节点恢复后,是否将服务自动切回,heartbeat 的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为 on 的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项设置为 off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点
mcast eth0 225.0.32.1 694 1 0
采用网卡 eth0 的 Udp 多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast 和 mcast 分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。
essun.node1.com
主节点主机名,可以通过命令“uanme –n”查看。
essun.node2.com
备用节点主机名
ping 192.168.1.118
选择 ping 的节点,ping
节点选择的越好,HA 集群就越强壮,可以选择固定的路由器作为 ping 节点,但是最好不要选择集群中的成员作为 ping 节点,ping 节点仅仅用来测试网络连接
compression bz2
对传输的数据进行压缩,是可选项
compression_threshold 2
表示小于 2k 将不予以压缩

在 node1 和 node2 中安装 http 服务并对其进行访问测试

node1

1
2
3
4
5
[root@essun download]# echo "192.168.1.109" > /var/www/html/index.html
[root@essun download]# service httpd start
Starting httpd: [OK]
[root@essun download]# curl http://192.168.1.123
192.168.1.123

node2

 

1
2
3
4
5
[root@essun ha.d]# echo "192.168.1.123"> /var/www/html/index.html
[root@essun ha.d]# service httpd start
Starting httpd: [OK]
[root@essun ha.d]# curl http://192.168.1.109
192.168.1.109

 

如果测试没有问题将两节点的服务停止,并开机一定不能自动启动(做高可用集群,各节点上的服务要统一由集群资源管理器来调度)
node1

 

 

1
2
3
[root@essun download]# service httpd stop
Stopping httpd: [OK]
[root@essun download]# chkconfig httpd off

node2

1
2
3
[root@essun ha.d]# service httpd stop
Stopping httpd: [OK]
[root@essun ha.d]# chkconfig httpd off

 

第三步,定义集群资源管理器
注:

 

1
2
3
4
5
6
7
8
9
10
[root@essun ha.d]# cd resource.d/
[root@essun resource.d]# ls
apache ICP LinuxSCSI Raid1
AudibleAlarm ids LVM SendArp
db2 IPaddr LVSSyncDaemonSwap ServeRAID
Delay IPaddr2 MailTo WAS
Filesystem IPsrcaddr OCF WinPopup
hto-mapfuncs IPv6addr portblock Xinetd
[root@essun resource.d]# pwd
/etc/ha.d/resource.d

 

这里定义资源所调用脚本(RA: 资源代理)
RA 有四种类型
heartbeat legacy: heartbeat 的传统类型
LSB:/etc/rc.d/init.d/*
OCF: Open Cluster Framework
provider: pacemaker
linbit
STONITH

而在 /etc/ha.d/resource.d 中定义的就是传统类型的,如果在此目录没有对应的资源代理则将查找 LSB 类型的 RA(其目录为 /etc/rc.d/init.d/*)

1
2
#vim /etc/ha.d/haresources
essun.node1.com 192.168.1.110/24/eth0 httpd

 

第一段表示集群更倾向那一个节点;
第二段表示一个集群资源 ip 地址,掩码,网卡
第三段表示定义有服务资源为 http
此条记录真正的意义为:
通过集群 ip192.168.1.110 优先访问 essun.node1.com 的节点上的 http 服务。如果此节点宕机,则转移到第二个节点上(在 ha.cf 中定义的节点),如果后来 essun.node1.com 从新上线,则还在将集群资源夺回来(也是在 ha.cf 中定义的)

将三个配置文件同步到所有节点上(我这里只有 node1 和 node2)

1
2
3
4
[root@essun ha.d]# scp -p ha.cf authkeys haresources node1:/etc/ha.d/
ha.cf 100% 10KB 10.4KB/s00:00
authkeys 100% 643 0.6KB/s00:00
haresources 100% 5905 5.8KB/s00:00

到 node1 上查看一下

 

1
2
3
[root@essun ha.d]# ls
authkeys harc rc.d resource.d
ha.cf haresources README.config shellfuncs

 

所有文件都同步过来了

在两个节点上启动集群管理器

1
2
3
4
5
6
7
8
9
[root@essun ha.d]# service heartbeat start
Starting High-Availability services:
2014/04/18_01:25:32 INFO: Resource is stopped
Done.
[root@essun ha.d]# ssh essun.node2.com 'service heartbeat start'
Starting High-Availability services:
2014/04/18_01:26:45 INFO: Resource is stopped
Done.
[root@essun ha.d]#

 

注:最好是在同一个节点上启动 heartbeat 服务
查看一下日志

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#tail -40 /var/log/ha-log
heartbeat[3647]: 2014/04/18_01:25:32 info: Configuration validated. Starting heartbeat 2.1.4
heartbeat[3648]: 2014/04/18_01:25:32 info: heartbeat: version 2.1.4
heartbeat[3648]: 2014/04/18_01:25:32 info: Heartbeat generation: 1397754809
heartbeat[3648]: 2014/04/18_01:25:32 info: glib: UDP multicast heartbeat started for group 225.0.32.1 port 694 interface eth0 (ttl=1 loop=0)
heartbeat[3648]: 2014/04/18_01:25:32 info: glib: ping heartbeat started.
heartbeat[3648]: 2014/04/18_01:25:32 info: G_main_add_TriggerHandler: Added signal manual handler
heartbeat[3648]: 2014/04/18_01:25:32 info: G_main_add_TriggerHandler: Added signal manual handler
heartbeat[3648]: 2014/04/18_01:25:32 info: G_main_add_SignalHandler: Added signal handler for signal 17
heartbeat[3648]: 2014/04/18_01:25:32 info: Local status now set to: 'up'
heartbeat[3648]: 2014/04/18_01:25:33 info: Link 192.168.1.118:192.168.1.118 up.
heartbeat[3648]: 2014/04/18_01:25:33 info: Status update for node 192.168.1.118: status ping
heartbeat[3648]: 2014/04/18_01:25:39 info: Link essun.node2.com:eth0 up.
heartbeat[3648]: 2014/04/18_01:25:39 info: Status update for node essun.node2.com: status up
harc[3660]: 2014/04/18_01:25:39 info: Running /etc/ha.d/rc.d/status status
heartbeat[3648]: 2014/04/18_01:25:39 info: Comm_now_up(): updating status to active
heartbeat[3648]: 2014/04/18_01:25:39 info: Local status now set to: 'active'
heartbeat[3648]: 2014/04/18_01:25:40 info: Status update for node essun.node2.com: status active
harc[3678]: 2014/04/18_01:25:40 info: Running /etc/ha.d/rc.d/status status
heartbeat[3648]: 2014/04/18_01:25:50 info: remote resource transition completed.
heartbeat[3648]: 2014/04/18_01:25:50 info: remote resource transition completed.
heartbeat[3648]: 2014/04/18_01:25:50 info: Initial resource acquisition complete (T_RESOURCES(us))
IPaddr[3729]: 2014/04/18_01:25:50 INFO: Resource is stopped
heartbeat[3693]: 2014/04/18_01:25:50 info: Local Resource acquisition completed.
harc[3779]: 2014/04/18_01:25:50 info: Running /etc/ha.d/rc.d/ip-request-resp ip-request-resp
ip-request-resp[3779]: 2014/04/18_01:25:50 received ip-request-resp 192.168.1.100/24/eth0 OK yes
ResourceManager[3798]: 2014/04/18_01:25:50 info: Acquiring resource group: essun.node1.com 192.168.1.100/24/eth0 httpd
IPaddr[3824]: 2014/04/18_01:25:50 INFO: Resource is stopped
ResourceManager[3798]: 2014/04/18_01:25:50 info: Running /etc/ha.d/resource.d/IPaddr 192.168.1.100/24/eth0 start
IPaddr[3921]: 2014/04/18_01:25:50 INFO: Using calculated netmask for 192.168.1.100: 255.255.255.0
IPaddr[3921]: 2014/04/18_01:25:50 INFO: eval ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
IPaddr[3892]: 2014/04/18_01:25:50 INFO: Success
ResourceManager[3798]: 2014/04/18_01:25:51 info: Running /etc/init.d/httpdstart

– 本文大纲

  • 简介

  • 什么是高可用集群

  • Heartbeat 工作原理

  • 基于 heartbeat v1 实现双机热备

一、简介

Heartbeat 是 Linux-HA 工程的一个组件,自 1999 年开始到现在,发布了众多版本,是目前开源 Linux-HA 项目最成功的一个例子,在行业内得到了广泛的应用, 随着 Linux 在关键行业应用的逐渐增多,它必将提供一些原来由 IBM 和 SUN 这样的大型商业公司所提供的服务,这些商业公司所提供的服务都有一个关键特性,就是高可用集群。
 

推荐阅读

Linux 高可用(HA)集群之 heartbeat 基于 crm 进行资源管理详解 http://www.linuxidc.com/Linux/2013-08/89167.htm

Heartbeat+httpd+NFS 实现高可用的 Web 服务器 http://www.linuxidc.com/Linux/2013-08/88520.htm

Linux 高可用(HA)集群之 Heartbeat 详解 http://www.linuxidc.com/Linux/2013-08/88521.htm

Linux 高可用性方案之 Heartbeat 的 CRM 配置 http://www.linuxidc.com/Linux/2012-05/60838.htm

高可用集群 Heartbeat v1 实例 http://www.linuxidc.com/Linux/2013-09/90757.htm

LVS+heartbeat+ldirectord 高可用负载均衡集群解决方案 http://www.linuxidc.com/Linux/2011-09/42911.htm

二、什么是高可用集群

高可用集群,英文原文为 High Availability Cluster,简称 HA Cluster,是指以减少服务中断(如因服务器宕机等引起的服 务中断)时间为目的的服务器集群技术。简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。
高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损 失。它通过保护用户的业务程序对外不间断提供的服务,把因软件 / 硬件 / 人为造成的故障对业务的影响降低到最小程度。如果某个节点失效,它的备援节点将在几 秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。
只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。

三、Heartbeat 工作原理

heartbeat(Linux-HA)的工作原理:heartbeat 最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务

四、基于 heartbeat v1 实现双机热备

注:

配置高可用的前提:

  • 所有节点的主机名一定要与 uname - n 的结果一致
  • 所有节点的时间必须一致
  • 各节点间能基于 ssh 密钥认证通信
1、配置过程:
规划:
node1 essun.node1.com 192.168.1.109
node2 essun.node2.com 192.168.1.123

nfs 服务器 www.directory.com 192.168.1.118(同时也是集群节点的 ping 状态检测)

2、node1 配置部分

⑴、主机信息部分

vim /ect/hosts

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

1
#uname -n

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

1
#vim /etc/sysconfig/network

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

每一个节点都要这类似这样的设置

 

⑵、时间同步
在每一个节点上执行:
ntpdate cn.pool.ntp.org(要可以上网才可以)
⑶、ssh 密钥认证
在第一个节点上执行
1
2
#ssh-keygen -t rsa -P ''
#ssh-copy-id -i .ssh/id_rsa.pub root@essun.node2.com

将公钥送达到每一个节点上,(每一个节点都要如此做)

2、安装软件包
yum install perl-TimeDate net-snmp-libs libnet PyXML
注:libnet 是在 epel 源中,所以要下载EPEL源安装包即可

 

http://download.Fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html
下载对应的版本就可以的。
rpm -ivh epel-release-6-8.noarch.rpm

之后就可以使用 yum 安装 EPEL 中的包了

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

1
#rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm

 

两个节点都要如此安装。
3、配置 heartbeat
  • 信息层

  • 资源管理器

  • 资源代理

第一步: 配置 HMAC 所使用的密码串算法(使用的是单向加密)
heartbeart 心跳信号信息监听于 UDP694 端口, 心跳信息传输方式: 可以是单播,多播和组播,还可以基于串行线缆传输心跳信号
配置文件所在的位置 /etc/ha.d

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

其实这里并没有配置文件,它仅提供一个配置模板,存放于

 

1
2
[root@essun ha.d]# rpm -ql heartbeat |grep ha.cf
/usr/share/doc/heartbeat-2.1.4/ha.cf

在这个目录中我们将用到三个文件

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@essun heartbeat-2.1.4]#pwd
/usr/share/doc/heartbeat-2.1.4
[root@essun heartbeat-2.1.4]# ls
apphbd.cf HardwareGuide.txt
authkeys haresources
AUTHORS hb_report.html
ChangeLog hb_report.txt
COPYING heartbeat_api.html
COPYING.LGPL heartbeat_api.txt
DirectoryMap.txt logd.cf
faqntips.html README
faqntips.txt Requirements.html
GettingStarted.html Requirements.txt
GettingStarted.txt rsync.html
ha.cf rsync.txt
HardwareGuide.html startstop

 

authkeys:用于 HMAC 信息加密的认证机制与认证密码(此文件的权限必须为 600,否则 heartbeat 无法启动)
haresources:此文件用于定义资源
将此目录中的三个文件复制到 /etc/ha.d 目录下
1
#cp /usr/share/doc/heartbeat-2.1.4/{authkeys,haresources,ha.cf} /etc/ha.d/ -a

 

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-04/100635p2.htm

查看一下 node1 是否添加网卡正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@essun heartbeat2]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:1E:F8:F9
inet addr:192.168.1.109 Bcast:255.255.255.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe1e:f8f9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:52073 errors:0 dropped:0 overruns:0 frame:0
TX packets:25502 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:35207636 (33.5 MiB) TX bytes:8188830 (7.8 MiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:1E:F8:F9
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:708 errors:0 dropped:0 overruns:0 frame:0
TX packets:708 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:62304 (60.8 KiB) TX bytes:62304 (60.8 KiB)

访问一下集群 IP 地址看一下是不是 node1 的 ip 地址

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

从此处看是没有问题,看一下是否能够完成切换。

在 node2 上将 heartbeat 服务停止,(在一个正常的节点上停止另一个节点,模拟故障)再次访问一下会出现什么情况?

1
2
3
4
[root@essun ha.d]# ssh node1 'service heartbeat stop'
Stopping High-Availability services:
Done.
[root@essun ha.d]#

刷新一下页面,看一下效果

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

顺利的切换到 node2 上了。如果 node1 从新上线,会不会将集群资源夺回去呢,来看一下效果

在节点 node1 重新启动 heartbeat 服务,模拟主机重新上线

1
2
3
4
5
[root@essun heartbeat2]# service heartbeat start
Starting High-Availability services:
2014/04/18_01:41:17 INFO: Resource is stopped
Done.
[root@essun heartbeat2]#

重新刷新一下页面,看一下效果

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

node1 重新上线后,所有的集群资源又都夺回来了

第四步、在 directory 创建共享,给两了集群节点提供文件共享

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@www /]# yum install -y nfs*
[root@www /]# mkdir -pv /www/share
mkdir: created directory `/www`
mkdir: created directory `/www/share`
[root@www /]# echo -e "/www/share\t192.168.0.0(rw)" > /etc/exports
[root@www /]# cat /etc/exports
/www/share192.168.0.0(rw)
[root@www /]# setfacl -m u:apache:rwx /www/share/
[root@www /]# echo "<h1> 此站点来自于 NFS</h1>"> /www/share/index.html
[root@www /]# cat /www/share/index.html
<h1> 此站点来自于 NFS</h1>
[root@www /]# service nfs start
Starting NFS services: [OK]
Starting NFS quotas: [OK]
Starting NFS mountd: [OK]
Starting NFS daemon: [OK]
Starting RPC idmapd: [OK]
[root@www /]#

停止前端所有的集群节点

1
2
3
4
5
6
7
8
9
[root@essun heartbeat2]# uname -n
essun.node1.com
[root@essun heartbeat2]# service heartbeat stop
Stopping High-Availability services:
Done.
[root@essun heartbeat2]# ssh node2 'service heartbeat stop'
Stopping High-Availability services:
Done.
[root@essun heartbeat2]#
在集群资源管理器中添加上 nfs 资源

在 node1 上修改 /etc/ha.d/haresources

1
2
#vim /etc/ha.d/haresources
essun.node1.com 192.168.1.100/24/eth0 Filesystem::192.168.1.118:/www/share::/var/www/html::nfs httpd
注:
多个资源间是有先后顺序的,必须要按其顺序来引用资源代理,比如此处:
如果 httpd 要使用 nfs 文件系统,就必须先挂载后使用
Filesystem::192.168.1.118:/www/share::/var/www/html::nfs
参数传递间隔符是:: 资源代理的名字必须要与资源代理(脚本)名相同,区分大小写
第一段表示资源代理的类型
第二段表示为运端的 NFS 文件共享的目录
第三段表示要挂载的位置
第四段为文件系统的类型
启动 node1 测试下
1
2
3
4
[root@essun heartbeat2]# service heartbeat start
Starting High-Availability services:
2014/04/18_02:44:50 INFO: Resource is stopped
Done.

刷新页面试试

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

停止 node1 节点,将 node2 启动后,它的页面应该还是其 IP 地址所在的页面

1
2
3
4
5
6
7
8
[root@essun heartbeat2]# ssh node2 'service heartbeat start'
Starting High-Availability services:
2014/04/18_02:50:42 INFO: Resource is stopped
Done.
[root@essun heartbeat2]# service heartbeat stop
Stopping High-Availability services:
Done.
[root@essun heartbeat2]#

结果如下,如果我将 node1 上的 haresources 同步到 node2 上,那么结果将与 node1 相同。

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

同步一下试试。

 

1
2
3
4
5
6
7
8
9
10
[root@essun heartbeat2]# ssh node2 'service heartbeat stop'
Stopping High-Availability services:
Done.
[root@essun heartbeat2]# scp /etc/ha.d/haresources node2:/etc/ha.d/
haresources 100% 6006 5.9KB/s00:00
[root@essun heartbeat2]# ssh node2 'service heartbeat start'
Starting High-Availability services:
2014/04/18_02:54:00 INFO: Resource is stopped
Done.
[root@essun heartbeat2]#

刷新一下试试

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

注:
此时我的 node1 并没有启动。
如果想要模拟故障也并不是非要停止 heartbeat 服务,只要使用 /usr/share/heartbeat/ 下的 hb_standby 脚本同样也可以做到(hb_takeover 可以实现重新启动)。

以上操作实际上是对同组资源顺序引用说明,既然属于同组,就可以实现同进同退,达到无障碍切换。

==================== 基于 heartbeat v1 双机集群演示完毕 =====================================

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计16140字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7985144
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...