linux之LVS的DR模式搭建以及配置高可用管理LVS(heartbeat,keepalive)

LVS/DR

Realserver:

172.25.44.6

172.25.44.7

Virtualserver:

VR3:172.25.44.3

VR5:172.25.44.5

Vip:172.25.44.100

Lvs和realserver必須在同一網段

########################

Virtualserver:

ip addr add 172.25.44.100/24 dev eth0   ##添加vip

ip addr show

yum install ipvsadm -y

ipvsadm -A -t 172.25.44.100:80 -s wlc   ##-A:添加一個虛擬服務; -t:tcp 服務;-s:算法

ipvsadm -a -t 172.25.44.100:80 -r 172.25.44.6:80 -g  ##g:gate

ipvsadm -a -t 172.25.44.100:80 -r 172.25.44.7:80 -g

ipvsadm -l

wKiom1gMu_LDvW4FAABs4kpqppo954.png

/etc/init.d/ipvsadm start

 

realserver:

rs6和rs7都進行下列配置

 

yum install httpd -y

vim /var/www/html/index.html  ##兩個服務端寫不同內容以便測試

/etc/init.d/httpd start

yum install arptables_jf -y

arptables -A IN -d 172.25.44.100 -j DROP

arptables -A OUT -s 172.25.44.100 -j mangle  --mangle-ip-s 172.25.44.6

arp協議不在對外廣播RS上有vip,目的是讓客戶機Client訪問VR上的vip。

 

測試;

物理機上用 arp -an |grep 172.25.44.100 檢查vip運行的服務器

瀏覽器訪問 172.25.44.100 反覆刷新網頁,每次出現的網頁不同則表示成功。

Lvs不具備健康檢查,當把一個RS6上的httpd服務停掉後,VR3仍會顯示兩個RS的策略,客戶在訪問的時候會仍會訪問到發生錯誤的RS6上.

如下圖在物理機上測試訪問vip:

wKiom1gMvNfiptWUAAC-QfpLKyc010.png

那麼lvs需要配置健康檢查,防止客戶訪問到錯誤的頁面

VR3需要下載軟件包

ldirectord-3.9.5-3.1.x86_64.rpm

cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/

vim /etc/ha.d/ldirectord.cf

wKiom1gMvOKQOrwuAACNPHH20N4224.png

fallback指的是當兩個RS都壞掉後,就直接指向本地的http服務,所以一般指向本地後網頁頁面應爲錯誤提示,提示用戶停止繼續訪問。

ipvsadm -C  ##清除策略

ipvsadm -l  ##顯示策略信息

 

/etc/init.d/ldirectord start

ipvsadm -l  ##檢查是否顯示策略

測試:

關閉RS7上的httpd服務

ipvsadm -l

wKiom1gMvO7ivEWtAABgJ35eFnk349.png

策略只顯示RS6,那麼客戶機在訪問時是否VR只將數據包扔給RS6,進行數據處理。

 

但是現在VR服務器只有一個,當VR發生問題時,則需要配置高可用集羣管理

現有兩種高可用集羣管理模式:heartbeatkeepalive

配置方法如下所述:

 

LVS/DR+HEARTBEAT

添加一臺VR5服務器,配置好heartbeats服務

VR3:172.25.44.3

VR5:172.25.44.5

VR3和VR5的heartbeat服務需要配置好(兩臺服務器本身不需要綁定vip)(heartbeat配置詳見上一文檔)

現在只需要改動

/etc/ha.d/haresources

wKioL1gMvSPw6X7BAAAxajc8DKI746.png

server5.example.com IPaddr::172.25.44.100/24/eth1 httpd ldirectord(實驗以server5作爲主機,server3作爲備機)

Heartbeat服務開啓時就可以自動開啓 httpd ldirectord服務所以ldirectord服務和httpd在實驗前處於關閉狀態。現在集羣配置完成

 

測試:

兩邊都打開heartbeat服務

/etc/init.d/heartbeat start

資源應先開啓在主節點server5上,查看vip,ldirectord開啓狀態,並看策略文件。

wKiom1gMvTPT_q-WAABMxKeBP5E774.png

關閉server5結點上的heartbeat服務

查看資源是否在server3上開啓,並查看服務是否正常運行。手動打開server5上的heartbeat服務,測試資源是否會回到server5上。

在測試過程中用arp -an | grep 172.25.44.100指令(在物理機上執行此指令)觀察vip的運行點是否與server3或server5匹配(mac地址)

Keepalives+LVS

(heartbeat,ldirtoctty都停止)

node3和node5上配置keepalives

 

Node5:

編譯原碼keepalived服務

tar zxf keepalived-1.2.24.tar.gz

yum install gcc openssl-devel -y ##安裝依賴軟件

cd keepalived-1.2.24

./configure --prefix=/usr/local/keepalived

make && make install

 

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/ /etc/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin

##建立軟連接

 

vim /etc/keepalived/keepalived.conf

wKioL1gMvYqwqVhKAAC6KdBvAzM469.png

  3   global_defs {

  4    notification_email {

  5    root@localhost

  6 }

  7    notification_email_from [email protected]

  8    smtp_server 127.0.0.1

 

 17   vrrp_instance VI_1 {

 18     state MASTER

 19     interface eth1

 20     virtual_router_id 51    ##取值0-255

 

 27     virtual_ipaddress {

 28         172.25.44.100

 29     }

 30 }

wKiom1gMvZiD0vtJAAB6opymEIE986.png

32 virtual_server 172.25.44.100 80 {

34     lb_algo wlc    ##wlc算法

35     lb_kind DR     ##DR模式

36     #persistence_timeout 50

 37     protocol TCP

 39     real_server 172.25.44.6 80 {

 40         weight 1

 41         TCP_CHECK {

 42             connect_timeout 3

 43             nb_get_retry 3

 44             delay_before_retry 3

 45         }

 46     }

 47     real_server 172.25.44.7 80 {

 48         weight 1

 49         TCP_CHECK {

 50             connect_timeout 3

 51             nb_get_retry 3

 52             delay_before_retry 3

 53         }

 54     }

 55

 56 }   ##56行以下內容全部刪除

 

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived  ###添加執行權限

scp -r /usr/local/keepalived/ 172.25.44.3:/usr/local   ##將編譯後的配置文件傳送到node3,node3上不必再進編譯工作

Node3:

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/ /etc/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

 

vim /etc/keepalived/keepalived.conf  ##只需要修改部分內容

 7    notification_email_from [email protected]

18     state BACKUP

 

 兩個節點都把keepalived配置好後,啓動服務

/etc/init.d/keepalived start        ##測試能否成功啓動

成功啓動後,測試:

1. 高可用測試:停止 master 上的 keepalived 服務,看 backup 是否接管。

2. 負載均衡測試:訪問 http://172.25.44.100,看到頁面在兩個 realserver 上切換表示成功!

你也可以通過 ipvsadm -Lnc 查看詳細連接情況!

3. 故障切換測試:任意關閉 realserver 上的 httpd 服務,Keepalived 監控模塊是否能及時發現(keepalived具備健康檢查),然後屏蔽故障節點,同時將服務轉移到正常節點來執行。

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章