linux双机热备
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目前,双机和集群采用的操作系统主要有UNIX、Linux、BSD及微软公司的Windows NT/2000。
随着Linux的迅速发展,稳定性、安全性及功能的不断增强,人们对Linux的使用越来越广泛,Linux已成为服务器市场中的一个重要操作系统,基于Linux的双机和集群系统也越来越多。
Linux集群的主要优点有:高可靠性、高性能、低成本等等。
1.1 概述
1.1.1 实现目的
双机热备份(Hot Standby)是一种软硬件相结合的高可靠性应用方案。
双机热备系统由两台独立
的服务器以及相应的控制软件构成,两台服务器在网络中表现为单一的系统,对外表现为一个独
立的网络IP,并以单一系统的模式进行控制和管理。
该系统将两台服务器的数据和运行状态(包
括硬盘数据和内存数据)进行镜像,可以实现两台服务器之间的热备份,并能够做到无缝切换,
从而对外提供稳定可靠的服务,实现双机系统的高可用性解决方案。
1.1.2 功能概述
双机热备份系统由相应的应用软件进行控制,操作系统和应用程序安装在两台服务器的系统盘上。
每一台服务器分配一个固定的IP地址,此外还指定了一个独立IP地址作为集群IP(cluster IP),该IP是双机系统对外提供服务的接口。
两台服务器一台成为主节点(Primary Server),另一台成为从节点(Standby Server),主节
点与从节点之间保持固定时间间隔的心跳信号,通过心跳信号实现两个对等系统之间的周期性的
握手,从而能够监视对方的运行状态,进行主机及网络的故障检测。
在系统正常情况下,主节点占用系统资源并运行所有的服务,为信息系统提供支持,从节点通过
心跳信号监视主节点的运行情况。
一旦主节点发生故障(如主机故障,网络故障,软件故障等),
从节点就会自动接管(Take Over)主节点的资源和服务,继续支持信息的运营,从而保证整个双
机系统能够不间断的运行(Non-Stop)。
主节点在恢复运行后,又可以自动获取资源并取代从节点。
1.2 运行环境
1.2.1 硬件需求
在集群系统的实现方案中双机热备份系统是硬件配置最简单和价格最低廉的解决方案,通常镜像
服务的硬件配置需要两台独立的服务器,每台服务器有独立的操作系统硬盘和数据存贮硬盘,
每台服务器有提供网络连接功能的网卡,此外还可以有一对完成内部连接和数据镜像功能的网卡。
双机系统的两台服务器拥有共享的数据存储空间(可以是一个数据存储硬盘或一台专门的数据存
储服务器)。
任何一台服务器在运行服务时,从共享的数据存储空间内读取和存储数据。
每台服
务器的操作系统和应用程序文件存储在各自的本地存储空间上。
双机热备份系统采用内存镜像的技术,即把两台服务器的数据和运行状态(包括硬盘数据和内存
数据)进行镜像。
这个技术的优点是所有的应用程序和操作数据在两台服务器上镜像同步,当主
节点出现故障时,从节点可以在几乎没有延迟的情况下接管主节点运行的服务,从而实现无缝切
换和热备份。
该技术的缺点是,由于两台服务器的内存完全一致,当由于系统应用程序带有缺陷
而导致系统宕机时,两台服务器会同步宕机。
也可以在双机系统中使用第三方生产的磁盘阵列柜,在磁盘阵列柜中安装有磁盘阵列控制卡,阵
列柜可以直接将柜中的硬盘配置成为逻辑盘阵。
该结构不采用内存镜像技术,因此需要有一定的
切换时间,同时由于所有的数据全部存贮在磁盘阵列柜中,当主节点出现故障时,从节点接替主
节点,从磁盘阵列柜中读取数据,所以不会产生数据不同步的问题。
由于这种方案不需要网络镜
像同步,因此这种集群方案服务器的性能要比镜像服务器结构高出很多。
双机热备份系统的两台服务器通过内部局域网进行连接,通过周期性的心跳信号保持通信和进行
相互监视。
两台服务器之间可以采用多种连接方式,可以使用串口线,也可以通过以太网ethernet 进行连接,还可以采用并存的多种连接方式实现两台主机的多重互连。
如果双机系统有冗余连接,
在第一条通信路径失效的情况下,控制软件可以尝试使用第二条通信路径进行连接。
因此,为了
避免不必要的失效切换,最好建立两种以上独立的物理路径,使用至少两种心跳。
双机热备份系统具有配置简单,使用方便,价格低廉等诸多优点,但由于镜像服务器需要采用网络
方式镜像数据,通过镜像软件实现数据的同步,因此需要占用网络服务器的CPU及内存资源,造成
服务器的性能有所降低。
1.2.2 软件需求
本方案仅讨论Redhat Linux系统下的双机热备份系统的实现,使用的双机控制软件是Linux-HA heartbeat。
因此,除了安装操作系统及相关的应用服务程序之外,还需要安装heartbeat控制软件。
通过对heartbeat软件的配置,可以把两台服务器分别指定为主节点和从节点,指定心跳信号的时
间间隔,指定cluster IP、子网掩码、广播地址、鉴权方式,还可以设置heartbeat启动的服务,
该服务最终由双机系统通过cluster IP对外提供。
Heartbeat可以最大限度地保护用户端的应用连续性。
用户的硬件资源(如网卡),软件资源(如
操作系统、数据库管理系统、数据库应用系统、电子邮件系统等)均能处于heartbeat容错软件
的保护之下,当这些被保护的资源出现技术故障时, heartbeat容错软件可以随时实施系统资源
的切换。
因此,heartbeat真正实现了用户硬件或是软件资源发生故障时系统及应用层上的在线
热切换。
Heartbeat软件的特点有:
不需增加额外硬件资源,纯软件方式实现双机容错,并且对双机无硬件配置要求。
可支持DB2,Notes、Exchange、SQL Server、Sybase、Informix、Oracle 、SAP等多种系统的应用层热切换,支持共享磁盘阵列柜和内存镜像等多种方式,给用户提供了选择上的灵活性,同时也能适应各种机型、网络结构、软件平台及应用系统。
占用系统资源较少,不增加网络负荷,并且不会干扰具体应用程序的运行和操作。
真正实现无人值守,全自动地实现系统资源和应用服务的切换。
1.3.2 方案说明
服务器Server A和Server B构成双机热备份系统的两台主机,并且分别作为主节点(Primary Server)和从节点(Standby Server)。
两台主机均运行Linux-HA heartbeat,该软件成为双机热备系统的控制程序。
两台主机通过串口线、以太网等多种方式进行连接,传送数据和心跳信号,并互相进行状态监视。
可以
只使用一种连接方式(如以太网连接),但是多种连接方式下的冗余路径可以保证双机连接的可靠性和
服务质量。
数据库服务器或磁盘阵列柜是专门的数据存储和共享设备,两台服务器在运行时,均从该设备中读取和
存储数据。
这种方式可以有效地提高数据传输效率,提高双机热备服务器的系统性能,并且能够保证两
台服务器之间的数据同步。
1.4 存在的问题
双机备份系统有两种配置方式,分别是“基于系统切换的双机系统”和“基于系统镜像的双机系统”,
二者的区别是:
基于系统切换的双机系统仅仅把两台服务器的硬盘数据进行镜像,在主节点失效的情况下,从节点将进行系统一级的切换。
该方式不能实现无缝切换,实现的是冷备份。
基于系统镜像的双机系统把两台服务器的硬盘数据和内存数据都进行镜像。
为保证完全的内存镜像,两台服务器之间需通过专用连接网段实时地保持一个连续的、双向的镜像进程,该进程确保两台服务器之间的数据同步。
一旦故障发生,无论任何一台服务器失效,失效服务器上的数据和应用,将立即切换到另一台服务器上,从而使用户在没有中断的情况下可以继续使用双机系统提供的服务。
该方式能够做到无缝切换,实现的是热备份。
本方案描述的heartbeat双机热备份系统是一种基于系统镜像的双机系统,实现方法是,主节点在出现故障的情况下,集群IP地址无缝地切换到从节点,从而客户机对服务器的访问可以由从节点来支持。
但是两台服务器之间并没有镜像进程完成彻底的内存镜像,因而主节点在故障时所运行的数据信息不能切换到从节点,造成数据丢失以及服务中断。
所以该方案不是严格意义上的系统镜像,实现的是服务一级的切换,并不能实现实时数据的切换。
一:安装两个linux(rh4.5-32位)系统并关闭防火墙,selinux设置为disable,每台电脑需要配置两块网卡。
两台电脑分别为node1和node2
node1的ip地址分别为:
eth0:192.168.0.65
eth1:10.0.0.3 (心跳地址)
node2的ip地址分别为:
eth0:192.168.0.66
eth1:10.0.0.4 (心跳地址)
192.168.0.30(虚拟ip地址)
注意:保证两台电脑每块网卡能够ping通。
二:保证两台电脑以下文件必须相同
/etc/hosts
/etc/host.conf
/etc/resolv.conf
#vi /etc/hosts
node1的hosts内容如下:
ip地址域名机器名
192.168.0.65 node1
10.0.0.3 node1
192.168.0.66 node2
10.0.0.4 node2
(保证机器名和参数uname -n输出一致)
#vi /etc/host.conf
order hosts,bind
#vi /etc/resolv.conf
nameserver 202.96.209.133(DNS地址如果为空可以根据当地dns输入)
node2的hosts内容如下:
ip地址域名机器名
192.168.0.65 node1
10.0.0.3 node1
192.168.0.66 node2
10.0.0.4 node2
(保证机器名和参数uname -n输出一致)
#vi /etc/host.conf
order hosts,bind
#vi /etc/resolv.conf
nameserver 202.96.209.133(DNS地址如果为空可以根据当地dns输入)
三:在两台电脑上分别安装heartbeat软件包。
按如下顺序(这里的软件包可以通过/DownloadSoftware下载下载的时候
要针对各服务器的内核版本参数选择)
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
四:配置文件。
进入目录/usr/share/doc/heartbeat-2.1.2/目录,复制authkeys、ha.cf 和 haresources到
/etc/ha.d/目录进行配置。
(这三个文件在两台电脑里必须一致。
)配置如下:
A: 配置心跳的加密方式:authkeys
#vi /etc/ha.d/authkeys
使用双机对联线(网线为交叉线),配置如下:
#vi /etc/hc.d/authkeys
auth 1
1 crc
存盘退出,然后
#chmod 600 authkeys
修改文件权限(必须)
B: 配置心跳的配置文件:ha.cf
#vi /etc/ha.d/ha.cf
logfile /var/log/ha-log (ha的日志文件记录位置。
如没有该目录,则需要手动添加)
bcast eth1
keepalive 2 (设定心跳(监测)时间为2秒)
warntime 10 (超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
)
deadtime 30 (超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡)
initdead 120
(在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。
取值至少为deadtime的两倍。
)
udpport 694 (使用udp端口694 进行心跳监测)
ucast 备用节点的心跳网卡 IP (在备用节点上要换成主节点的参数两台电脑的3个配置文件就这一点不相同)
auto_failback on
#nice_failback on (这里2项保持默认也可以)
ping 设置为网关地址(外部网关地址)
(nice_failback 这一选项在此版本的heartbeat里没有,如果没有可以根据需要手工添加。
heartbeat 的两台主机分别为主节点和从节点,主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。
1:当auto_failback选项为on时,一旦主节点恢复运行,则自动恢复资源。
2:当auto_failback选项为off并且nice_failback选项为on时,一旦主节点恢复运行,则不会自动恢复资源。
此设置为第二种情况。
)
node node1 (节点1,必须要与 uname -n 指令得到的结果一致.)
node node2 (节点2)
C: 配置虚拟服务:haresources
#vi /etc/ha.d/haresources
在node-name resource1 resource2 … resourceN下写入
主节点名称虚拟的IP 以及需要启动的服务
node1 192.168.0.30 httpd mysql(先启动httpd再启动mysql,关闭时先关闭mysql再关闭httpd)指定node1启动httpd和mysql服务,系统附加一个虚拟IP 192.168.0.30给eth0:0。
这里如果node1宕机后,node2可以自动启动httpd和mysql服务,并新分配IP 192.168.0.30给node2的eth0:0.web服务的监听地址要设置为虚拟ip地址。
五:设置heartbeat自动启动(启动系统时启动)
cd /etc/rc.d/rc0.d
ln -s /etc/init.d/heartbeat K05heartbeat
cd /etc/rc.d/rc3.d
ln -s /etc/init.d/heartbeat S75heartbeat
cd /etc/rc.d/rc5.d
ln -s /etc/init.d/heartbeat S75heartbeat
cd /etc/rc.d/rc6.d
ln -s /etc/init.d/heartbeat K05heartbeat
(字母S和K为大写)
启动脚本为service heartbeat start
硬件:2台hpe800,一条心跳线用于串口信息的检测,一条交叉线用于UDP协议的通讯。
双网卡,一块用于连接交叉线,一块用于连接交换机。
软件:REDHAT 7.3(MANDRAKE 8.2测试也通过),heartbeat-0.4.9.1-1.i386.rpm
其它准备:HPE800(1),主机名:CLUSTER-101-SERVER ,IP地址:192.9.100.101
HPE800(2),主机名:CLUSTER-101-SERVER ,IP地址:192.9.100.101
虚拟主机名:CLUSTER-SERVER ,IP地址:192.9.100.100
从 网站下载最新的Heartbeat 软件包,目前的版本为heartbeat-0.4.9.1,分别解压:rpm –ivh heartbeat-0.4.9.1-1.i386.rpm。
忘记了一点:一定要修改文件authkeys的属性,否则服务起不来。
chmod 600 /etc/ha.d/authkeys。