Linux上的heartbeat雙機(jī)熱備服務(wù)架設(shè)
【一】 安裝前環(huán)境設(shè)定
兩臺主機(jī)硬件環(huán)境(不必完全一致):
CPU: Xeon 3G *2 (EM64T)
MEM: 2G
NIC: Intel 1G *2
eth0: 對外IP
eth1: 對內(nèi)IP(HA專用)
兩臺主機(jī)的eth1使用雙機(jī)對聯(lián)線直接連接。
分區(qū)方式:
Filesystem 容量 掛載點(diǎn)
/dev/sda2 9.7G /
/dev/sda6 45G /Datas
/dev/sda1 99M /boot
none2.0G /dev/shm
/dev/sda3 9.7G /opt
另外每臺主機(jī)應(yīng)預(yù)留500M的raw空間或者更多來作為共用空間被HA使用。
操作系統(tǒng):
RedHat Enterprise 4 Update2 (2.6.9-22 EL)
預(yù)安裝軟件:
@ X Window System
@ GNOME Desktop Environment
@ KDE Desktop Environment
@ Editors
@ Engineering and Scientific
@ Graphical Internet
@ Text-based Internet
@ Authoring and Publishing
@ Server Configuration Tools
@ Development Tools
@ Kernel Development
@ X Software Development
@ GNOME Software Development
@ KDE Software Development
@ Administration Tools
@ System Tools
【二】安裝前網(wǎng)絡(luò)環(huán)境設(shè)定:
node1: 主機(jī)名:servers201 ( HA01 )
eth0: 192.168.10.201 //對外IP地址
eth1: 10.0.0.201 //HA心跳使用地址
node2: 主機(jī)名: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內(nèi)容如下:
127.0.0.1 localhost.localdomain localhost
192.168.10.201 servers201 HA01
10.0.0.201 HA01
10.0.0.202 HA02
192.168.10.202 server202
node2的hosts內(nèi)容如下:
127.0.0.1 localhost.localdomain localhost
192.168.10.202 servers202 HA02
10.0.0.202 HA02
10.0.0.201 HA01
192.168.10.201 server201
#cat /etc/host.conf
order hosts,bind
#cat /etc/resolv.conf
nameserver 61.139.2.69 //DNS地址
#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=servers201 //主機(jī)名
GATEWAY="192.168.10.1" //網(wǎng)關(guān)
GATEWAY="eth0" //網(wǎng)關(guān)使用網(wǎng)卡
ONBOOT=YES //啟動時(shí)加載
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
要各自修改外,其他一致。
配置完成后,試試在各自主機(jī)上ping對方的主機(jī)名,應(yīng)該可以ping通:
/root#ping HA02
PING HA02 (10.0.0.202) 56(84) bytes of data.
64 bytes from HA02 (10.0.0.202): icmp_seq=0 ttl=64 time=0.198 ms
64 bytes from HA02 (10.0.0.202): icmp_seq=1 ttl=64 time=0.266 ms
64 bytes from HA02 (10.0.0.202): icmp_seq=2 ttl=64 time=0.148 ms
--- HA02 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.148/0.204/0.266/0.048 ms, pipe 2
【三】安裝HA 與HA依賴包
rpm -Uvh libnet-1.1.2.1-1.rh.el.um.1.i386.rpm //可以不裝
rpm -Uvh heartbeat-pils-2.0.4-1.el4.i386.rpm
rpm -Uvh heartbeat-stonith-2.0.4-1.el4.i386.rpm
rpm -Uvh heartbeat-2.0.4-1.el4.i386.rpm
rpm -Uvh ipvsadm-1.24-5.i386.rpm
【四】 配置 HA的各配置文件
配置心跳的加密方式:authkeys
#vi /etc/ha.d/authkeys
如果使用雙機(jī)對聯(lián)線(雙絞線),可以配置如下:
#vi /etc/hc.d/authkeys
auth 1
1 crc
存盤退出,然后
#chmod 600 authkeys
配置心跳的監(jiān)控:haresources
#vi /etc/ha.d/haresources
各主機(jī)這部分應(yīng)完全相同。
server201 IPaddr::192.168.10.200 ipvsadm httpd
指定 server201調(diào)用ipvsadm啟動http服務(wù),系統(tǒng)附加一個虛擬IP 192.168.10.200 給eth0:0
這里如果server201宕機(jī)后,server202可以自動啟動http服務(wù),并新分配IP 192.168.10.200給server202的eth0:0[!--empirenews.page--]
配置心跳的配置文件:ha.cf
#vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log ## ha的日志文件記錄位置。如沒有該目錄,則需要手動添加
bcast eth1 ##使用eth1做心跳監(jiān)測
keepalive 2 ##設(shè)定心跳(監(jiān)測)時(shí)間時(shí)間為2秒
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694 ##使用udp端口694 進(jìn)行心跳監(jiān)測
auto_failback on
node server201 ##節(jié)點(diǎn)1,必須要與 uname -n 指令得到的結(jié)果一致。
node server202 ##節(jié)點(diǎn)2
ping 192.168.10.1 ##通過ping 網(wǎng)關(guān)來監(jiān)測心跳是否正常。
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=root uid=root
debugfile /Datas/logs/ha_log/ha-debug.log
設(shè)置ipvsadm的巡回監(jiān)測
ipvsadm -A -t 192.168.10.200:80 -s rr
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.201:80 -m
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.202:80 -m
執(zhí)行后進(jìn)行監(jiān)測:
#ipvsadm --list
如果返回結(jié)果與下相同,則設(shè)置正確。
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.200:http rr
-> server202:http Local 1 0 0
-> server201:http Masq 1 0 0
【五】 HA服務(wù)的啟動、關(guān)閉以及測試
啟動HA: service heartbeat start
關(guān)閉HA; service heartbeat stop
系統(tǒng)在啟動時(shí)已經(jīng)自動把heartbeat 加載了。
使用http服務(wù)測試 heartbeat
首先啟動httpd服務(wù)
#service httpd start
編輯各自主機(jī)的測試用html文件,放到/var/www/html/目錄下。
啟動node1的heartbeat,并執(zhí)行這個指令進(jìn)行監(jiān)控: heartbeat status
【六】 防火墻設(shè)置
heartbeat 默認(rèn)使用udp 694端口進(jìn)行心跳監(jiān)測。 如果系統(tǒng)有使用iptables 做防火墻,應(yīng)記住把這個端口打開。
#vi /etc/sysconfig/iptables
加入以下內(nèi)容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 10.0.0.201 -j ACCEPT
意思是udp 694端口對 對方的心跳網(wǎng)卡地址 10.0.0.201 開放。
#service iptables restart
重新加載iptables。