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
/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:
那麼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
fallback指的是當兩個RS都壞掉後,就直接指向本地的http服務,所以一般指向本地後網頁頁面應爲錯誤提示,提示用戶停止繼續訪問。
ipvsadm -C ##清除策略
ipvsadm -l ##顯示策略信息
/etc/init.d/ldirectord start
ipvsadm -l ##檢查是否顯示策略
測試:
關閉RS7上的httpd服務
ipvsadm -l
策略只顯示RS6,那麼客戶機在訪問時是否VR只將數據包扔給RS6,進行數據處理。
但是現在VR服務器只有一個,當VR發生問題時,則需要配置高可用集羣管理。
現有兩種高可用集羣管理模式:heartbeat和keepalive
配置方法如下所述:
LVS/DR+HEARTBEAT
添加一臺VR5服務器,配置好heartbeats服務
VR3:172.25.44.3
VR5:172.25.44.5
VR3和VR5的heartbeat服務需要配置好(兩臺服務器本身不需要綁定vip)(heartbeat配置詳見上一文檔)
現在只需要改動
/etc/ha.d/haresources
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開啓狀態,並看策略文件。
關閉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
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 }
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具備健康檢查),然後屏蔽故障節點,同時將服務轉移到正常節點來執行。