主页 > 入门基础 > RedHat AS4 + HeartBeat 双机热备方案

RedHat AS4 + HeartBeat 双机热备方案

目前,双机和集群采用的操作系统主要有UNIX、Linux、BSD及微软公司的Windows NT/2000。随着Linux的迅速发展,稳定性、安全性及功能的不断增强,人们对Linux的使用越来越广泛,Linux已成为服务器市场中的一个重 要操作系统,基于Linux的双机和集群系统也越来越多。
Linux集群的主要优点有:高可靠性、高性能、低成本等等。

1、概述


   

1.1 实现目的
 


双机热备份(Hot Standby)是一种软硬件相结合的高可靠性应用方案。双机热备系统由两台独立的服务器以及相应的控制软件构成,两台服务器在网络中表现为单一的系统, 对外表现为一个独立的网络IP,并以单一系统的模式进行控制和管理。该系统将两台服务器的数据和运行状态(包括硬盘数据和内存数据)进行镜像,可以实现两 台服务器之间的热备份,并能够做到无缝切换,从而对外提供稳定可靠的服务,实现双机系统的高可用性解决方案。 
 1.2  功能概述


双机热备份系统由相应的应用软件进行控制,操作系统和应用程序安装在两台服务器的系统盘上。每一台服务器分配一个固定的IP地址,此外还指定了一个独立 IP地址作为集群IP(cluster IP),该IP是双机系统对外提供服务的接口。

两台服务器一台成为主节点(Primary Server),另一台成为从节点(Standby Server),主节点与从节点之间保持固定时间间隔的心跳信号,通过心跳信号实现两个对等系统之间的周期性的握手,从而能够监视对方的运行状态,进行主 机及网络的故障检测。

在系统正常情况下,主节点占用系统资源并运行所有的服务,为信息系统提供支持,从节点通过心跳信号监视主节点的运行情况。一旦主节点发生故障(如主机故 障,网络故障,软件故障等),从节点就会自动接管(Take Over)主节点的资源和服务,继续支持信息的运营,从而保证整个双机系统能够不间断的运行(Non-Stop)。主节点在恢复运行后,又可以自动获取资 源并取代从节点。

 1.3 运行环境


在集群系统的实现方案中双机热备份系统是硬件配置最简单和价格最低廉的解决方案,通常镜像服务的硬件配置需要两台独立的服务器,每台服务器有独立的操作 系统硬盘和数据存贮硬盘,每台服务器有提供网络连接功能的网卡,此外还可以有一对完成内部连接和数据镜像功能的网卡。
双机系统的两台服务器拥有共享的数据存储空间(可以是一个数据存储硬盘或一台专门的数据存储服务器)。任何一台服务器在运行服务时,从共享的数据存储空间 内读取和存储数据。每台服务器的操作系统和应用程序文件存储在各自的本地存储空间上。
双机热备份系统采用内存镜像的技术,即把两台服务器的数据和运行状态(包括硬盘数据和内存数据)进行镜像。这个技术的优点是所有的应用程序和操作数据在两 台服务器上镜像同步,当主节点出现故障时,从节点可以在几乎没有延迟的情况下接管主节点运行的服务,从而实现无缝切换和热备份。该技术的缺点是,由于两台 服务器的内存完全一致,当由于系统应用程序带有缺陷而导致系统宕机时,两台服务器会同步宕机。
也可以在双机系统中使用第三方生产的磁盘阵列柜,在磁盘阵列柜中安装有磁盘阵列控制卡,阵列柜可以直接将柜中的硬盘配置成为逻辑盘阵。该结构不采用内存 镜像技术,因此需要有一定的切换时间,同时由于所有的数据全部存贮在磁盘阵列柜中,当主节点出现故障时,从节点接替主节点,从磁盘阵列柜中读取数据,所以 不会产生数据不同步的问题。由于这种方案不需要网络镜像同步,因此这种集群方案服务器的性能要比镜像服务器结构高出很多。
双机热备份系统的两台服务器通过内部局域网进行连接,通过周期性的心跳信号保持通信和进行相互监视。两台服务器之间可以采用多种连接方式,可以使用串口 线,也可以通过以太网ethernet进行连接,还可以采用并存的多种连接方式实现两台主机的多重互连。如果双机系统有冗余连接,在第一条通信路径失效的 情况下,控制软件可以尝试使用第二条通信路径进行连接。因此,为了避免不必要的失效切换,最好建立两种以上独立的物理路径,使用至少两种心跳。
双机热备份系统具有配置简单,使用方便,价格低廉等诸多优点,但由于镜像服务器需要采用网络方式镜像数据,通过镜像软件实现数据的同步,因此需要占用网 络服务器的CPU及内存资源,造成服务器的性能有所降低。

 1.4 软件需求


本方案仅讨论Redhat Linux系统下的双机热备份系统的实现,使用的双机控制软件是Linux-HA heartbeat。因此,除了安装操作系统及相关的应用服务程序之外,还需要安装heartbeat控制软件。
通过对heartbeat软件的配置,可以把两台服务器分别指定为主节点和从节点,指定心跳信号的时间间隔,指定cluster IP、子网掩码、广播地址、鉴权方式,还可以设置heartbeat启动的服务,该服务最终由双机系统通过cluster IP对外提供。
Heartbeat可以最大限度地保护用户端的应用连续性。用户的硬件资源(如网卡),软件资源(如操作系统、数据库管理系统、数据库应用系统、电子邮 件系统等)均能处于heartbeat容错软件的保护之下,当这些被保护的资源出现技术故障时, heartbeat容错软件可以随时实施系统资源的切换。因此,heartbeat真正实现了用户硬件或是软件资源发生故障时系统及应用层上的在线热切 换。
Heartbeat软件的特点有:
1. 不需增加额外硬件资源,纯软件方式实现双机容错,并且对双机无硬件配置要求。
2. 可支持DB2,Notes、Exchange、SQL Server、Sybase、Informix、Oracle、SAP等
多种系统的应用层热切换。
3. 支持共享磁盘阵列柜和内存镜像等多种方式,给用户提供了选择上的灵活性,
同时也能适应各种机型、网络结构、软件平台及应用系统。
4. 占用系统资源较少,不增加网络负荷,并且不会干扰具体应用程序的运行和操作。
真正实现无人值守,全自动地实现系统资源和应用服务的切换。

 1.5 方案说明
服务器Server A和Server B构成双机热备份系统的两台主机,并且分别作为主节点(Primary Server)和从节点(Standby Server)。两台主机均运行Linux-HA heartbeat,该软件成为双机热备系统的控制程序。
两台主机通过串口线、以太网等多种方式进行连接,传送数据和心跳信号,并互相进行状态监视。可以只使用一种连接方式(如以太网连接),但是多种连接方式 下的冗余路径可以保证双机连接的可靠性和服务质量。
数据库服务器或磁盘阵列柜是专门的数据存储和共享设备,两台服务器在运行时,均从该设备中读取和存储数据。这种方式可以有效地提高数据传输效率,提高双 机热备服务器的系统性能,并且能够保证两台服务器之间的数据同步。

 1.6 存在的问题
双机备份系统有两种配置方式,分别是“基于系统切换的双机系统”和“基于系统镜像的双机系统”,二者的区别是:
基于系统切换的双机系统仅仅把两台服务器的硬盘数据进行镜像,在主节点失效的情况下,从节点将进行系统一级的切换。该方式不能实现无缝切换,实现的是冷 备份。
基于系统镜像的双机系统把两台服务器的硬盘数据和内存数据都进行镜像。为保证完全的内存镜像,两台服务器之间需通过专用连接网段实时地保持一个连续的、 双向的镜像进程,该进程确保两台服务器之间的数据同步。一旦故障发生,无论任何一台服务器失效,失效服务器上的数据和应用,将立即切换到另一台
服务器上,从而使用户在没有中断的情况下可以继续使用双机系统提供的服务。该方式能够做到无缝切换,实现的是热备份。
本方案描述的heartbeat双机热备份系统是一种基于系统镜像的双机系统,实现方法是,主节点在出现故障的情况下,集群IP地址无缝地切换到从节 点,从而客户机对服务器的访问可以由从节点来支持。但是两台服务器之间并没有镜像进程完成彻底的内存镜像,因而主节点在故障时所运行的数据信息不能切换到 从节点,造成数据丢失以及服务中断。所以该方案不是严格意义上的系统镜像,实现的是服务一级的切换,并不能实现实时数据的切换。

2、具体实现步骤
一、安装两个 RedHat AS4 U5 系统,要求:
1. 关闭防火墙
2. seLinux设置为disable
3. 每台电脑需要配置两块网卡
注:我是在Ubuntu下用VirtualBox模拟实现的,虚拟网卡一定要用Host-only adapter连接模式。

二、保证两台电脑以下三个文件必须相同:(黑体粗字项之间用Tab键分隔)
1. /etc/hosts
[root@node1 ~]# vi /etc/hosts
#主节点的对外用IP地址 

    域名                              主机名
192.168.56.33 
           node1.example.com    node1
#心跳用IP地址 
               主机名
10.0.0.3 
                     node1

 

 

#从节点的对外用IP地址 

    域名                              主机名
192.168.56.66            node2.example.com    node2
#心跳用IP地址                主机名
10.0.0.6                     

node2

 

 

#保证 机器名 与 uname -n 命令 输出一致
#保证 两台电脑每块网卡能够ping通

2. /etc/host.conf
[root@node1 ~]# vi /etc/host.conf
order hosts,bind

3. /etc/resolv.conf
[root@node1 ~]# vi /etc/resolv.conf
# DNS地址如果为空可以根据当地dns输入
nameserver 192.168.0.1

注:/etc/host.conf 一般默认就是,/etc/resolv.conf 因实际地址配就是了!

三、在两台电脑上分别安装heartbeat软件包,按如下顺序安装:
1. heartbeat-gui-2.1.2-2.el4.centos.i386.rpm
2. heartbeat-pils-2.1.2-2.el4.centos.i386.rpm
3. heartbeat-stonith-2.1.2-2.el4.centos.i386.rpm
4. heartbeat-2.1.2-2.el4.centos.i386.rpm

四、配置 authkeys、ha.cf 和 haresources 三个文件:
1. 进入目录 /usr/share/doc/heartbeat-2.1.2/ 目录,
复制 authkeysha.cf 和 haresources 到 /etc/ha.d/ 目录进行配置。
注意:这三个文件在两台电脑里的内容必须一致。

2. 配置心跳的加密方式:(黑体粗字项之间用空格分隔)
使用双机对联线(网线为交叉线),配置如下:
[root@node1 ~]# vi /etc/ha.d/authkeys
# 添加如下内容在文件中:
auth 1
1 crc

存盘退出,然后必须修改文件权限:
[root@node1 ~]# chmod 600 authkeys

3. 配置心跳的配置文件:(黑体粗字项之间用空格分隔)
[root@node1 ~]# vi /etc/ha.d/ha.cf
# HeartBeat的日志文件记录位置,如没有该目录,则需要手动添加
logfile /var/log/ha-log
# 心跳IP用哪个网卡
bcast eth1
# 设定心跳监测时间为2秒
keepalive 2
# 超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中
warntime 6
# 超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡
deadtime 9
# 在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,
# 该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的两倍。
initdead 60
# 使用udp端口694 进行心跳监测
udpport 694
# heartbeat把两台主机分别为 主节点 和 从节点,
# 主节点在正常情况下占用资源并运行所有的服务,
# 遇到故障时把资源交给从节点并由从节点运行服务。
# 当auto_failback选项为on时,一旦主节点恢复运行,则自动恢复资源。
# 当auto_failback选项为 off 且 nice_failback选项为 on 时,
#  一旦主节点恢复运行,则不会自动恢复资源。
auto_failback off
nice_failback on

# 以下 主机名 必须要与 uname -n 命令得到的结果一致
# 主节点 对应的 主机名
node node1
# 从节点 对应的 主机名
node node2

4. 配置心跳的资源:(黑体粗字项之间用空格分隔)
[root@node1 ~]# vi /etc/ha.d/haresources
# 先指定主机名为node1的主机系统附加一个虚拟IP 192.168.56.30给eth0:0,
# 再指定主机名为node1的主机系统先启动httpd、再启动mysql,
# 关闭时先关闭mysql、再关闭httpd。
# 这里如果主机名为node1的主机宕机后,
# 主机名为node2的主机可以自动启动httpd和mysql服务,
# 并新分配IP 192.168.56.30给node2的eth0:0。
# 理论上应先启动 mysql 再启动 httpd,以防用户有请求而数据库没有准备好。
node1 192.168.56.30 mysql httpd

五、设置heartbeat启动系统时自启动:( 字母S和K为大写 )
[root@node1 ~]# cd /etc/rc.d/rc0.d
[root@node1 ~]# ln -s /etc/init.d/heartbeat K05heartbeat

[root@node1 ~]# cd /etc/rc.d/rc3.d
[root@node1 ~]# ln -s /etc/init.d/heartbeat S75heartbeat

[root@node1 ~]# cd /etc/rc.d/rc5.d
[root@node1 ~]# ln -s /etc/init.d/heartbeat S75heartbeat

[root@node1 ~]# cd /etc/rc.d/rc6.d
[root@node1 ~]# ln -s /etc/init.d/heartbeat K05heartbeat


说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!