Apache+heartbeat HA方案
   主从热备,当master 宕机自动切换到slave提供服务,直到master恢复后自动切换到master提供服务。
1、系统环境
Master: ha01
eth0:192.168.58.101
eth1:192.168.107.101
Slave: ha02
eth0:192.168.58.102
eth1:192.168.107.102
Virual IP :192.168.58.100
Httpd  安装系统时选择安装
Heartbeat
[url]http://www.linux-ha.org/download/[/url]   #此处为ha下载有各种系统安装包
libnet
 
2、软件安装
1)用tar安装
tar xvf /mnt/libnet.tar.gz -C /usr/src/
tar xvf /mnt/heartbeat-2.0.8.tar.gz -C /usr/src
cd /usr/src/libnet/
./configure &&make &&make install
cd ../heartbeat-2.0.8
./ConfigureMe configure &&make&&make install
groupadd -g 694 haclient
useradd -u 694 -g haclient hacluster
没有以上用户名启动服务会报错:
heartbeat[19932]: 2009/02/12_20:31:07 ERROR: Invalid user id name [hacluster]
*****************************************************************************
好奇害死猫!!
以下为不装libnet先装heartbeat时报错信息:
./ConfigureMe configure
configure: error: The following required components noted earlier are missing: libnet
*******************************************************************************
2)用rpm安装
heartbeat-pils-2.1.3-3.el5.centos.i386.rpm
heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm   
heartbeat-2.1.3-3.el5.centos.i386.rpm
*****************************************************************************
Cluster.pdf  P12
Node fencing – STONITH
*******************************************************************************
chkconfig –add heartbeat
chkconfig heartbeat on
chkconfig httpd off
3、配置文件
1copy 配置文件
cp /usr/share/doc/heartbeat-2.0.8/{ha.cf,haresources,authkeys} /etc/ha.d/
ha.cf :主要配置文档
haresources :资源文档,包括heartbeat服务启动时使用的资源。
   authkeys :安全验证
2、文件配置
   以下文件配置在masterslave下都一样
1/etc/hosts   写完保存自动生效。
192.168.58.101 ha01
192.168.58.102 ha02
   2ha.cf
   logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 5
warntime 3
initdead 10
udpport 694
bcast   eth1            # Linux
auto_failback on
watchdog /dev/watchdog
node ha01
node ha02
   3haresources
   ha01 IPaddr::192.168.58.100 httpd
4authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
验证等级,由低到高!!!
3、注意事项
1Master先启动后,再启动slave,否则直接执行failover了。
2service heartbeat start
Starting High-Availability services:
2009/02/12_23:57:57 INFO:  Resource is stopped
[  OK  ]
表明heartbeat正常运行。
4、测试
  1ping ha01 ha02
   PING ha01 (192.168.58.101) 56(84) bytes of data.
   PING ha02 (192.168.58.102) 56(84) bytes of data.
3)切换测试
ha01正常
测试命令
ha01
ha02
  ifconfig  
eth00 192.168.58.100
eth00
ps aux|grep heartbeat
master control process
FIFO reader
write: bcast eth1
read: bcast eth1
ps aux |grep httpd
httpd服务
httpd服务
 web打开192.168.58.100192.168.58.101正常
 
ha01宕机
测试命令
ha01
ha02
  ifconfig  
eth00
eth00 192.168.58.100
ps aux|grep heartbeat
master control process
FIFO reader
write: bcast eth1
read: bcast eth1
ps aux |grep httpd
httpd服务
httpd服务
web打开192.168.58.100192.168.58.102正常
ha01恢复
测试命令
ha01
ha02
  ifconfig  
eth00 192.168.58.100
eth00
ps aux|grep heartbeat
master control process
FIFO reader
write: bcast eth1
read: bcast eth1
ps aux |grep httpd
httpd服务
httpd服务
web打开192.168.58.100192.168.58.101正常
 
由于设备简陋只能人工估计。多次中断测试初步估计主机备机切换时间不足30
4107断网测试
中断107网段网线
测试命令
ha01
ha02
  ifconfig  
eth00 192.168.58.100
ps aux|grep heartbeat
master control process
FIFO reader
write: bcast eth1
read: bcast eth1
ps aux |grep httpd
httpd服务
Ping 192.168.58.100
不通超时
Web能同时打开 192.168.58.100192.168.58.101192.168.58.102
第三方机器测试:
ping 192.168.58.100
arp –a    查看mac地址
Interface: 192.168.58.1 --- 0x2
   Internet Address      Physical Address      Type
   192.168.58.100        00-0c-29-a5-e7-a4     dynamic
   192.168.58.101        00-0c-29-a5-e7-a4     dynamic
   192.168.58.102        00-0c-29-ec-f2-1f     dynamic
107网段恢复时,正常。
558.101断网测试
中断58.101网线
测试命令
ha01
ha02
  ifconfig  
eth00 192.168.58.100
ps aux|grep heartbeat
master control process
FIFO reader
write: bcast eth1
read: bcast eth1
ps aux |grep httpd
httpd服务
httpd服务
Web都打不开
解决方案一:
masterha01eth0网口才用bond技术,两个或两个以上网卡虚拟出一个网卡。
优点:
1、提高mastereth0bond0)端口带宽(N*100M),提高端口一的数据吞吐能力
2、假设单网卡全年故障时间是1天,哪么两个或两个以上网卡的故障时间是1/(N*365)天,大大降低故障出现率。
缺点:
1、  需要添置新的硬件,增加成本(一张网卡不到100元)。
Bond绑定网卡请参见bond文档。
解决方案2:(测试)
修改ha.cf配置文档,将bcast改为eth0
cat /etc/ha.d/ha.cf |grep -v "^#"   查看bcast
bcast  eth1            # Linux
修改后
Masterucast eth0 192.168.58.102
Slaveucast eth0 192.168.58.101
 
查看107网段数据包:
tcpdump -i eth1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
 
0 packets captured
0 packets received by filter
0 packets dropped by kernel
说明心跳已经修改到eth0端口。
tcpdump -i eth0 >log
01:03:54.007087 IP ha02.32780 > ha01.ha-cluster: UDP, length 167
01:03:55.924565 IP ha01.32781 > ha02.ha-cluster: UDP, length 167
01:03:56.055518 IP ha02.32780 > ha01.ha-cluster: UDP, length 167
01:03:57.928805 IP ha01.32781 > ha02.ha-cluster: UDP, length 167
01:03:58.083680 IP ha02.32780 > ha01.ha-cluster: UDP, length 167
优点:
1、  不需要添加新网卡,可以直接将机器上的双网卡绑定。
缺点:
1、  eth0端口数据通信量过大,在服务器访问量增大时,会降低访问速度。
2、  58网段容易造成数据冲突,增加交换机负担
5、数据存储
   1nfs共享存储
      添加一台NFS服务器来存储网站内容
2、  drbd备份存储
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2009-2-14
清蒸