【一】安装前环境设定
两台主机硬件环境(不必完全一致):
CPU:Xeon3G*2(EM64T)
MEM:2G
NIC:Intel1G*2
eth0:对外IP
eth1:对内IP(HA专用)
两台主机的eth1使用双机对联线直接连接。
分区方式:
Filesystem容量挂载点
/dev/sda29.7G/
/dev/sda645G/Datas
/dev/sda199M/boot
none2.0G/dev/shm
/dev/sda39.7G/opt
另外每台主机应预留500M的raw空间或者更多来作为共用空间被HA使用。
操作系统:
RedHatEnterprise4Update2(2.6.9-22EL)
预安装软件:
@XWindowSystem
@GNOMEDesktopEnvironment
@KDEDesktopEnvironment
@Editors
@EngineeringandScientific
@GraphicalInternet
@Text-basedInternet
@AuthoringandPublishing
@ServerConfigurationTools
@DevelopmentTools
@KernelDevelopment
@XSoftwareDevelopment
@GNOMESoftwareDevelopment
@KDESoftwareDevelopment
@AdministrationTools
@SystemTools
【二】安装前网络环境设定:
node1:主机名:servers201(HA01)
eth0:192.168.10.201//对外IP地址
eth1:10.0.0.201//HA心跳使用地址
node2:主机名:servers202(HA02)
eth0:192.168.10.202//对外IP地址
eth1:10.0.0.202//HA心跳使用地址
特别注意要检查以下几个文件:
/etc/hosts
/etc/host.conf
/etc/resolv.conf
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/nsswitch.conf
#vi/etc/hosts
node1的hosts内容如下:
127.0.0.1localhost.localdomainlocalhost
192.168.10.201servers201HA01
10.0.0.201HA01
10.0.0.202HA02
192.168.10.202server202
node2的hosts内容如下:
127.0.0.1localhost.localdomainlocalhost
192.168.10.202servers202HA02
10.0.0.202HA02
10.0.0.201HA01
192.168.10.201server201
#cat/etc/host.conf
orderhosts,bind
#cat/etc/resolv.conf
nameserver61.139.2.69//DNS地址
#cat/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=servers201//主机名
GATEWAY="192.168.10.1"//网关
GATEWAY="eth0"//网关使用网卡
ONBOOT=YES//启动时加载
FORWARD_IPV4="yes"//只允许IPV4
#cat/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.10.201
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
TYPE=Ethernet
IPV6INIT=no
#cat/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.201
NETMASK=255.255.255.0
TYPE=Ethernet
[node1]与[node2]在上面的配置中,除了
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
要各自修改外,其他一致。
配置完成后,试试在各自主机上ping对方的主机名,应该可以ping通:
/root#pingHA02
PINGHA02(10.0.0.202)56(84)bytesofdata.
64bytesfromHA02(10.0.0.202):icmp_seq=0ttl=64time=0.198ms
64bytesfromHA02(10.0.0.202):icmp_seq=1ttl=64time=0.266ms
64bytesfromHA02(10.0.0.202):icmp_seq=2ttl=64time=0.148ms
---HA02pingstatistics---
3packetstransmitted,3received,0%packetloss,time2002ms
rttmin/avg/max/mdev=0.148/0.204/0.266/0.048ms,pipe2
【三】安装HA与HA依赖包
rpm-Uvhlibnet-1.1.2.1-1.rh.el.um.1.i386.rpm//可以不装
rpm-Uvhheartbeat-pils-2.0.4-1.el4.i386.rpm
rpm-Uvhheartbeat-stonith-2.0.4-1.el4.i386.rpm
rpm-Uvhheartbeat-2.0.4-1.el4.i386.rpm
rpm-Uvhipvsadm-1.24-5.i386.rpm
【四】配置HA的各配置文件
配置心跳的加密方式:authkeys
#vi/etc/ha.d/authkeys
如果使用双机对联线(双绞线),可以配置如下:
#vi/etc/hc.d/authkeys
auth1
1crc
存盘退出,然后
#chmod600authkeys
配置心跳的监控:haresources
#vi/etc/ha.d/haresources
各主机这部分应完全相同。
server201IPaddr::192.168.10.200ipvsadmhttpd
指定server201调用ipvsadm启动http服务,系统附加一个虚拟IP192.168.10.200给eth0:0
这里如果server201宕机后,server202可以自动启动http服务,并新分配IP192.168.10.200给server202的eth0:0
配置心跳的配置文件:ha.cf
#vi/etc/ha.d/ha.cf
logfile/var/log/ha_log/ha-log.log##ha的日志文件记录位置。如没有该目录,则需要手动添加
bcasteth1##使用eth1做心跳监测
keepalive2##设定心跳(监测)时间时间为2秒
warntime10
deadtime30
initdead120
hopfudge1
udpport694##使用udp端口694进行心跳监测
auto_failbackon
nodeserver201##节点1,必须要与uname-n指令得到的结果一致。
nodeserver202##节点2
ping192.168.10.1##通过ping网关来监测心跳是否正常。
respawnhacluster/usr/lib64/heartbeat/ipfail
apiauthipfailgid=rootuid=root
debugfile/Datas/logs/ha_log/ha-debug.log
设置ipvsadm的巡回监测
ipvsadm-A-t192.168.10.200:80-srr
ipvsadm-a-t192.168.10.200:80-r192.168.10.201:80-m
ipvsadm-a-t192.168.10.200:80-r192.168.10.202:80-m
执行后进行监测:
#ipvsadm--list
如果返回结果与下相同,则设置正确。
IPVirtualServerversion1.2.0(size=4096)
ProtLocalAddress:PortSchedulerFlags
->RemoteAddress:PortForwardWeightActiveConnInActConn
TCP192.168.10.200:httprr
->server202:httpLocal100
->server201:httpMasq100
【五】HA服务的启动、关闭以及测试
启动HA:serviceheartbeatstart
关闭HA;serviceheartbeatstop
系统在启动时已经自动把heartbeat加载了。
使用http服务测试heartbeat
首先启动httpd服务
#servicehttpdstart
编辑各自主机的测试用html文件,放到/var/www/html/目录下。
启动node1的heartbeat,并执行这个指令进行监控:heartbeatstatus
【六】防火墙设置
heartbeat默认使用udp694端口进行心跳监测。如果系统有使用iptables做防火墙,应记住把这个端口打开。
#vi/etc/sysconfig/iptables
加入以下内容
-ARH-Firewall-1-INPUT-pudp-mudp--dport694-d10.0.0.201-jACCEPT
意思是udp694端口对对方的心跳网卡地址10.0.0.201开放。
#serviceiptablesrestart
重新加载iptables。