lvs是2023年5月由章文嵩博士發起和領導的優秀的集群解決方案,許多商業的集群產品,比如redhat的piranha,turbolinux公司的turbo cluster等,都是基於lvs的核心**的。在現實的應用中,lvs得到了大量的部署。
1.3 用heartbeat實現lvs的高可用性
lvs可以對apache等服務實現負載均衡,lvs與ldirectord搭配使用也可以實現apache等服務的故障轉移,但是lvs自己本身沒有冗餘機制,因此需要借助第三方工具heartbeat來實現。
1.3.1 heartbeat簡介
heartbeat最核心包括兩個部分:心跳監測部分和資源接管部分。心跳監測可以通過網路鏈路和串列埠進行,而且支援冗餘鏈路,它們之間相互傳送報文來告訴對方自己當前的狀態,如果在指定的時間內未受到對方傳送的報文,那麼就認為對方失效,這時需啟動資源接管模組來接管執行在對方主機上的資源或者服務。
1.3.2 heartbeat安裝
建立使用者
groupadd haclient
useradd hacluster -g haclient
先安裝libnet
rpm -ivh libnet-1.1.2.1-2.1.i386.rpm
再安裝heartbeat
tar jxvf heartbeat-stable-2-1-stable-2.1.4.tar.bz2
cd heartbeat-stable-2-1-stable-2.1.4
./configureme install --enable-all
1.3.3 配置lvs drector的冗餘熱備
假設伺服器a,b的公網ip分別是:
a 192.168.100.10
b 192.168.100.4
集群虛ip: 192.168.100.200
1.3.3.1 設定伺服器a,b的hostname為test10及test4
如不是請修改/etc/sysconfig/network的hostname部分,並執行
#hostname test10 以立即生效。
在/etc/hosts加入兩行:
192.168.100.10 test10
192.168.100.4 test4
1.3.3.2 修改伺服器a,b的/etc/sysctl.conf檔案,加入如下5行,並執行
#sysctl -p 以立即生效。
net.ipv4.ip_forward = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2
1.3.3.3 以root進入伺服器a,執行以下配置:
在/etc/init.d/heartbeat中的#!/bin/sh後插入一行:
ifconfig lo:100 192.168.100.200 netmask 255.255.255.255 up
#chkconfig heartbeat --level 35 on
#cd /etc/ha.d 進入集群配置檔案目錄
#vi authkeys 建立集群認證檔案
auth 3
3 md5 ha_2009
#chmod 600 authkeys 必要的操作
#vi ha.cf 建立集群節點檔案
logfile /var/log/ha.log
#logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 80
mcast eth0 231.231.231.231 694 1 0
##有雙網絡卡最好做個兩台機器最好做交叉線連線,eth0 改eth1
#ucast eth0 192.168.100.4 #(test10直接指向對端ip,test4的化ucast eth0 192.168.100.10)
ping 192.168.100.2
auto_failback on
node test10
node test4
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
集群中有兩個節點test10及test4,通過多播ip通訊(主要用於超過2個節點)
ping 192.168.100.2 閘道器ping檢測
#vi /etc/ha.d/resource.d/vip.sh 建立我們自己的集群ip切換shell指令碼
#!/bin/sh
case "$4" in
start)
ifconfig lo:100 down
ifconfig $1:100 $2 netmask $3 up
;; stop)
ifconfig $1:100 down
ifconfig lo:100 $2 netmask 255.255.255.255 up
;; esac
/etc/ha.d/resource.d/sendarp 192.168.100.200/eth0 start
最後一行通知其他連線過這台伺服器的客戶機vip已經變更,mac需要更新。
提供了lvs集群備用節點在迴路位址監聽集群虛ip以用於應用伺服器。
#chmod +x resource.d/vip.sh
#vi haresources 建立集群資源檔案
test10 ldirectord::ldirectord.cf lvssyncdaemonswap::master vip.sh::eth0::192.168.100.200::255.255.255.0
注:ldirectord是用於管理lvs配置實現apache的故障轉移,ldirectord.cf檔案的建立,請檢視《使用lvs+ldirectord實現web伺服器的負載均衡及故障轉移及其效能測試.doc》
1.3.3.4 在伺服器b上進行第2、3步操作,scp也可。
1.3.4 測試
1、在伺服器a、b上分別執行service heartbeat start 啟動集群軟體,
及執行service httpd start啟動apache。
2、在伺服器a、b上分別執行:
#echo "website a">/var/www/html/index.html
#echo "website b">/var/www/html/index.html
3、在伺服器a、b上分別執行ifconfig
正常的話, 在伺服器a上出現eth0:100 ip:192.168.100.200
在伺服器b上出現l0:100 ip:192.168.100.200
在伺服器a上執行service heartbeat stop,結果是:
在伺服器a上出現lo0:100 ip:192.168.100.200
在伺服器b上出現eth0:100 ip:192.168.100.200
在伺服器a上執行service heartbeat start將恢復正常情況。
通過heartbeat搭建lvs高可用性集群
首先,在主 備節點上配置lvs資訊,一般通過ldirectord配置 在搭建director server的雙機熱備系統之前,首先需要在兩台主機上安裝heartbeat軟體,安裝軟體後在 etc ha.d ha.cf產生主配置檔案 1.配置heartbeat的主配置檔案 etc ha.d ha.cf...
heartbeat 斷網轉移的實現 ipfail
heartbeat中的ipfail外掛程式是實現斷網轉移的,就是比如主伺服器的網絡卡壞掉了,必須自動切換到另外一台機器上面去。首先有兩台機器,機器a和機器b,每台機器上面都是兩張網絡卡,eth0和eth1 一 配置 機器a 主 eth1 10.0.0.8用於心跳通訊 機器b 備 eth0 192.1...
用heartbeat實現應用高可用
一 準備 1.機器 test03 10.0.0.232 test04 10.0.0.233 主 二 工具安裝 1.安裝heartbeat heartbeat 管理虛擬ip的高可用和服務 安裝步驟 apt get install drbd8 utils heartbeat y 啟動heartbeat服...