Heartbeat實現LVS的故障轉移

2022-08-31 12:27:11 字數 3686 閱讀 8696

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服...