本节将介绍linux群集的双机备份详细的配置步骤,这个有点类似windows 2003系统中NLB服务,即用两台相同的服务器对外提供服务,从而实现负载均衡,在这里使用的是虚拟IP来对外提供服务,需要明确的是,本节中介绍的双机备份同之前的linux群集的轮叫方式的负载均衡有着很大的区别,轮叫工作方式,如果IPVS服务器宕机了,所有的服务将不能正常的向外提供,而这里介绍的双机备份,即使宕了一台服务器,其他的服务器还是能够正常的使用虚拟IP对外提供服务的,所以可用性比较高点!
本例中,同样需要两张网卡,eth2用来检测心跳算法,也就是专门用来检测其他服务器是否存活用的,eth0可以用来连接外网,但真正不使用这个网卡的IP对外提供服务,尽管数据包经过了这个网卡。(下面来简单介绍下web1的配置步骤,web2基本雷同,这里就只配两台web服务器,也不知道能不能配多台,呵呵…)
[root@web1 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:81:CF:DC
inet addr:192.168.1.55 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe81:cfdc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24037 errors:0 dropped:0 overruns:0 frame:0
TX packets:27432 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1962127 (1.8 MiB) TX bytes:3588630 (3.4 MiB)
Interrupt:67 Base address:0x2000
eth2 Link encap:Ethernet HWaddr 00:0C:29:81:CF:F0
inet addr:192.168.0.55 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe81:cff0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10356 errors:0 dropped:0 overruns:0 frame:0
TX packets:10336 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12213192 (11.6 MiB) TX bytes:960947 (938.4 KiB)
Interrupt:67 Base address:0x2400
[root@web1 ~]# yum search heartbeat (通过yum服务搜索和安装heartbeat服务)
============================== Matched: heartbeat ==============================
heartbeat.i386 : heartbeat - The Heartbeat Subsystem for High-Availability Linux
heartbeat-devel.i386 : heartbeat development package
heartbeat-gui.i386 : Provides a gui interface to manage heartbeat clusters
heartbeat-ldirectord.i386 : Monitor daemon for maintaining high availability
: resources with ipvs (Linux Virtual Server}
heartbeat-pils.i386 : Provides a general plugin and interface loading library
heartbeat-stonith.i386 : Provides an interface to Shoot The Other Node In The
: Head
piranha.i386 : Cluster administation tools
[root@web1 ~]# yum -y install heartbeat
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package heartbeat.i386 0:2.1.3-3.el5.centos set to be updated
--> Processing Dependency: heartbeat-stonith = 2.1.3-3.el5.centos for package: heartbeat
--> Processing Dependency: heartbeat-pils = 2.1.3-3.el5.centos for package: heartbeat
--> Processing Dependency: libstonith.so.1 for package: heartbeat
--> Processing Dependency: PyXML for package: heartbeat
--> Processing Dependency: libpils.so.1 for package: heartbeat
--> Running transaction check
---> Package PyXML.i386 0:0.8.4-4 set to be updated
---> Package heartbeat-stonith.i386 0:2.1.3-3.el5.centos set to be updated
---> Package heartbeat-pils.i386 0:2.1.3-3.el5.centos set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================
Installing:
heartbeat i386 2.1.3-3.el5.centos extras 1.7 M
Installing for dependencies:
PyXML i386 0.8.4-4 base 1.1 M
heartbeat-pils i386 2.1.3-3.el5.centos extras 213 k
heartbeat-stonith i386 2.1.3-3.el5.centos extras 311 k
Transaction Summary
=============================================================================================================================
Install 4 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 3.3 M
Downloading Packages:
(1/4): heartbeat-pils-2.1.3-3.el5.centos.i386.rpm | 213 kB 00:01
(2/4): heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm | 311 kB 00:01
(3/4): PyXML-0.8.4-4.i386.rpm | 1.1 MB 00:06
(4/4): heartbeat-2.1.3-3.el5.centos.i386.rpm | 1.7 MB 00:09
-----------------------------------------------------------------------------------------------------------------------------
Total 173 kB/s | 3.3 MB 00:19
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : heartbeat-pils [1/4]
Installing : heartbeat-stonith [2/4]
Installing : PyXML [3/4]
Installing : heartbeat [4/4]
Complete!
[root@web1 ~]# rpm -ql heartbeat |grep /usr/share/doc (查找并配置相关配置文件如下)
/usr/share/doc/heartbeat-2.1.3
/usr/share/doc/heartbeat-2.1.3/AUTHORS
/usr/share/doc/heartbeat-2.1.3/COPYING
/usr/share/doc/heartbeat-2.1.3/COPYING.LGPL
/usr/share/doc/heartbeat-2.1.3/ChangeLog
/usr/share/doc/heartbeat-2.1.3/DirectoryMap.txt
/usr/share/doc/heartbeat-2.1.3/GettingStarted.html
/usr/share/doc/heartbeat-2.1.3/GettingStarted.txt
/usr/share/doc/heartbeat-2.1.3/HardwareGuide.html
/usr/share/doc/heartbeat-2.1.3/HardwareGuide.txt
/usr/share/doc/heartbeat-2.1.3/README
/usr/share/doc/heartbeat-2.1.3/Requirements.html
/usr/share/doc/heartbeat-2.1.3/Requirements.txt
/usr/share/doc/heartbeat-2.1.3/apphbd.cf
/usr/share/doc/heartbeat-2.1.3/authkeys
/usr/share/doc/heartbeat-2.1.3/faqntips.html
/usr/share/doc/heartbeat-2.1.3/faqntips.txt
/usr/share/doc/heartbeat-2.1.3/ha.cf
/usr/share/doc/heartbeat-2.1.3/haresources
/usr/share/doc/heartbeat-2.1.3/hb_report.html
/usr/share/doc/heartbeat-2.1.3/hb_report.txt
/usr/share/doc/heartbeat-2.1.3/heartbeat_api.html
/usr/share/doc/heartbeat-2.1.3/heartbeat_api.txt
/usr/share/doc/heartbeat-2.1.3/logd.cf
/usr/share/doc/heartbeat-2.1.3/rsync.html
/usr/share/doc/heartbeat-2.1.3/rsync.txt
/usr/share/doc/heartbeat-2.1.3/startstop
[root@web1 ~]# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
[root@web1 ~]# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
[root@web1 ~]# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
[root@web1 ~]# ls /etc/ha.d/
authkeys ha.cf harc haresources rc.d README.config resource.d shellfuncs
[root@web1 ~]# grep -v '^#' /etc/ha.d/ha.cf
logfile /var/log/ha-log 定义日志文件位置
logfacility local0
keepalive 2 定义心跳检测时间为2s
deadtime 30 死亡时间为30s
warntime 10
initdead 120
udpport 694 使用UDP端口694
bcast eth2 # Linux 使用网卡2进行心跳检测
ucast eth2 192.168.0.66 检测web2的IP地址(在此位置,web2需要相应的修改)
auto_failback on
node web1 web1的uname名字
node web2 web2的uname名字
ping 192.168.1.1 设置ping个外部IP,这里192.168.1.0/24代表外部网络
[root@web1 ~]# grep -v '^#' /etc/ha.d/authkeys
auth 1
1 crc
[root@web1 ~]# grep -v '^#' /etc/ha.d/haresources
web1 192.168.1.200 httpd 设置虚拟ip为192.168.1.200,监听httpd服务
[root@web1 ~]# cat /etc/hosts 添加hosts文件记录
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.55 web1
192.168.0.66 web2
[root@web1 /]# service httpd status 查看下apache服务没有开启
httpd is stopped
[root@web1 ~]# service heartbeat start 启动heartbeat服务
Starting High-Availability services:
2009/04/24_07:35:15 INFO: Resource is stopped
[FAILED]
heartbeat: udpport setting must precede media statementsheartbeat[3908]: 2009/04/24_07:35:16 ERROR: Bad permissions on
keyfile [/etc/ha.d/authkeys], 600 recommended.
heartbeat[3908]: 2009/04/24_07:35:16 ERROR: Authentication configuration error.
heartbeat[3908]: 2009/04/24_07:35:16 ERROR: Configuration error, heartbeat not started.
[root@web1 ~]# chmod 600 /etc/ha.d/authkeys 此处需要修改下authkeys文件的权限为600
[root@web1 ~]# service heartbeat start
logd is already running
Starting High-Availability services:
2009/04/24_07:35:45 INFO: Resource is stopped
[ OK ]
[root@web1 ~]# netstat -nupl |grep 694
udp 0 0 0.0.0.0:694 0.0.0.0:* 4048/heartbeat: wri
udp 0 0 0.0.0.0:694 0.0.0.0:* 4046/heartbeat: wri
[root@web1 ~]# ifconfig 查看下确实多了个虚拟IP
eth0 Link encap:Ethernet HWaddr 00:0C:29:81:CF:DC
inet addr:192.168.1.55 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe81:cfdc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25296 errors:0 dropped:0 overruns:0 frame:0
TX packets:29483 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2049469 (1.9 MiB) TX bytes:3814318 (3.6 MiB)
Interrupt:67 Base address:0x2000
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:81:CF:DC
inet addr:192.168.1.200 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:67 Base address:0x2000
eth2 Link encap:Ethernet HWaddr 00:0C:29:81:CF:F0
inet addr:192.168.0.55 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe81:cff0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10737 errors:0 dropped:0 overruns:0 frame:0
TX packets:10548 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12292107 (11.7 MiB) TX bytes:1008582 (984.9 KiB)
Interrupt:67 Base address:0x2400
[root@web1 ~]# service httpd status apache服务也启动了
httpd (pid 11168 11167 11164 11163 11162 11161 11160 11159 11158) is running...

[root@web2 ~]# service heartbeat start web2配置完了后启动heartbeat服务
Starting High-Availability services:
2009/04/25_07:28:23 INFO: Resource is stopped
[ OK ]
[root@web2 ~]# ifconfig 此时并没有出现虚拟IP
eth0 Link encap:Ethernet HWaddr 00:0C:29:7A:E1:59
inet addr:192.168.1.66 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7a:e159/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9641 errors:0 dropped:0 overruns:0 frame:0
TX packets:8824 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:880574 (859.9 KiB) TX bytes:1162127 (1.1 MiB)
Interrupt:51 Base address:0x2000
eth2 Link encap:Ethernet HWaddr 00:0C:29:7A:E1:6D
inet addr:192.168.0.66 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7a:e16d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9934 errors:0 dropped:0 overruns:0 frame:0
TX packets:9265 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10677865 (10.1 MiB) TX bytes:1073996 (1.0 MiB)
Interrupt:67 Base address:0x2400
[root@web1 ~]# service heartbeat stop 关闭下web1的heartbeat服务
Stopping High-Availability services:
[ OK ]
[root@web2 ~]# ifconfig 过几秒,就可以看到虚拟IP转到web2上了
eth0 Link encap:Ethernet HWaddr 00:0C:29:7A:E1:59
inet addr:192.168.1.66 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7a:e159/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10238 errors:0 dropped:0 overruns:0 frame:0
TX packets:9932 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:921510 (899.9 KiB) TX bytes:1283041 (1.2 MiB)
Interrupt:51 Base address:0x2000
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:7A:E1:59
inet addr:192.168.1.200 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:51 Base address:0x2000
eth2 Link encap:Ethernet HWaddr 00:0C:29:7A:E1:6D
inet addr:192.168.0.66 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7a:e16d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10033 errors:0 dropped:0 overruns:0 frame:0
TX packets:9380 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10698716 (10.2 MiB) TX bytes:1097978 (1.0 MiB)
Interrupt:67 Base address:0x2400
[root@web1 ~]# service heartbeat start web1再次启动heartbeat服务后,IP将转回web1
Starting High-Availability services:
2009/04/24_09:41:02 INFO: Resource is stopped
[ OK ]
[root@web2 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:7A:E1:59
inet addr:192.168.1.66 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7a:e159/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10996 errors:0 dropped:0 overruns:0 frame:0
TX packets:11322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:971704 (948.9 KiB) TX bytes:1434317 (1.3 MiB)
Interrupt:51 Base address:0x2000
eth2 Link encap:Ethernet HWaddr 00:0C:29:7A:E1:6D
inet addr:192.168.0.66 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7a:e16d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10113 errors:0 dropped:0 overruns:0 frame:0
TX packets:9473 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10715964 (10.2 MiB) TX bytes:1117734 (1.0 MiB)
Interrupt:67 Base address:0x2400
[root@web1 ~]# cat /var/log/ha-log 更详细的信息可以查看相应的日志
提示:需要在web1和web2的apache配置文件中的ServerName选项改成 ServerName *:80
本实验以http://www.boobooke.com/bbs/viewthread.php?tid=5284&extra=page%3D1为指导