企業級負載均衡集羣-----LVS(二)-----DR模式下的健康檢查和DR模式之調度器高可用

企業級負載均衡集羣-----LVS(二)-----DR模式下的健康檢查和DR模式之調度器高可用

當後端服務器掛了…

1.爲什麼要做健康檢查呢?

如果我們的後端服務器掛了,那麼會出現什麼情況呢?下面我們通過實驗說明一下

第一步:

宕掉server2的apache
在這裏插入圖片描述
第二步:

再次測試:
在這裏插入圖片描述
總結:

從上面的實驗我們發現,如果後端真實服務器出現問題之後,當客戶去訪問時,會返回一個錯誤的頁面,返回錯誤的就是出現問題的後端服務器。所以我們需要對後端服務器做健康檢查,保證只返回正確的頁面提供給用戶。

那麼,我們應該怎樣操作才能保證不會出現問題呢?

2.實驗環境部署

給sever1配置高可用的yum源:
在這裏插入圖片描述
在這裏插入圖片描述

3.部署ldirectord

在這裏插入圖片描述

rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm 
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
cd /etc/ha.d/
ls

在這裏插入圖片描述

4.編輯 ldirectord的配置文件

vim ldirectord.cf

# Global Directives                 #全局設置
checktimeout=3                      #指定定real server出錯的時間間隔
checkinterval=1                     #指定ldirectord在兩次檢查之間的時間間隔
autoreload=yes                      #自動重載配置文件(選yes時,當配置文件發生變化,自動載入配置信息)
quiescent=no                        
#當一個節點在 checktimeout 設置的時間週期內沒有響應是它是 “ 靜止的 ” (它的權重爲0),當你設置了這個選項後,ldirectord 將 會從 IPVS 表中移除真實服務器而不是 “ 停止 ” 它,從 IPVS 表移除節點將中斷現有的客戶端連接,並使 LVS 丟掉所有的連接跟蹤記錄和持續連接模板,如果 你不將這個選項設置爲 no,當某個節點崩潰時,對某些客戶端計算機而言可能會顯示爲集羣關閉了,因爲在這個節點崩潰前這些客戶端計算機被分配給它了,而連接跟蹤記錄和程序連接模板仍然保留在Director上。
logfile="/var/log/ldirectord.log"   #設定ldirectord日誌輸出文件路徑


# Sample for an http virtual service
virtual=192.168.43.100:80              #VIP 地址和端口號
        real=192.168.43.72:80 gate      #指定RealServer地址和端口,同時設定LVS工作模式,gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式。
        real=192.168.43.73:80 gate      #當所有的real server節點不能工作時,web服務重定向的地址
        fallback=127.0.0.1:80 gate     #當所有的real server節點不能工作時,web服務重定向的地址
        service=http            #指定服務類型,對http服務做負載均衡
        scheduler=rr           #指定調度算法,這裏是rr(輪詢)算法
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp                       #指出該服務使用的協議:tcp、udp 或 fwm
        checktype=negotiate                 #指定Ldirectord的檢測類型,默認爲negotiate
        checkport=80                       #健康檢查使用的端口是 80
        request="index.html"
        #receive="Test Page"              #指定請求和應答字串
        #virtualhost=www.x.y.z            #虛擬服務器的名稱

在這裏插入圖片描述

5.清除ipvsadm策略&開啓ldirectord服務

在這裏插入圖片描述
我們沒有看到server2的策略,因爲之前我們宕掉了2

6.測試

宕掉server2 :
在這裏插入圖片描述
在這裏插入圖片描述
server2的策略自動消失

重新開啓server2:
在這裏插入圖片描述
在這裏插入圖片描述
server2 的策略自動添加上了

宕掉全部後端服務器
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
他就會訪問調度器server1的apache,所以我們在默認發佈頁面寫好內容
在這裏插入圖片描述
在這裏插入圖片描述

DR模式之調度器高可用

當調度器掛了…

1.keepalived

keepalived起初是爲LVS設計的,專門用來監控集羣系統中各個服務節點的狀態。如果某個服務器節點出現異常,或者工作出現故障,keepalived將監測到,並將出現的故障的服務器節點從集羣系統中剔除,這些工作全部是自動完成的,不需要人工干涉,需要人工完成的只是修復出現故障的服務節點。

keepalived保持存活,在網絡裏面即爲保持在線。也就是所謂的高可用或熱備,用來防止單點故障的發生(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)

特點:

  1. 主要提供 loadbalancing(負載均衡)和 high-availability(高可用)功能
  2. 負載均衡實現需要依賴Linux的虛擬服務內核模塊(ipvs)
  3. 高可用是通過VRRP協議實現多臺機器之間的故障轉移服務
  4. 採用多進程的設計模式,每個進程負責不同的功能

2.keepalived工作原理

keepalived是以VRRP協議爲實現基礎的,VRRP全程Virtual Router Redundancy Protocal,即虛擬路由冗餘協議。

VRRP 協議

  1. 用於實現路由器冗餘的協議
  2. 解決靜態路由單點故障問題
  3. 通過一種競選(election)協議來實現虛擬路由器的功能

虛擬路由冗餘協議,可以認爲是實現高路由高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由爲該vip),master會發組播,當backup受不到vrrp包時就認爲master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master這樣就可以保證路由器的高可用了。

3.keepalived高可用故障切換轉移原理

在keepalived服務正常工作時,主master節點會不斷地向備節點發送(多播的方式)心跳消息,用以告訴備backup節點自己還活着,當主master節點發生故障時,就無法發送心跳消息,備節點也就因此無法繼續檢測到來自主master節點的心跳了,於是調用自身的接管程序,接管主master節點的IP資源及服務。而主master節點恢復時,備backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢復到原來的備用角色。

4.安裝keepalived

此實驗需要4臺虛擬機,相對於之前的實驗多出一臺server4作爲backup節點

首先,在server1和server4中安裝編譯keepalived

1. tar zxf keepalived-2.0.20.tar.gz 
2. ls
3. cd keepalived-2.0.20
4. ls
5. yum install gcc openssl-devel -y		#解決依賴性
6. ./configure --prefix=/usr/local/keepalived --with-init=systemd	#編譯keepalived的源碼包
7. make && make install

在這裏插入圖片描述

在這裏插入圖片描述
在server1和server4中安裝編譯keepalived成功

在 server1 和 server4 上面製作軟連接方便keepalived的管理與設置:

1. ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
2. ln -s /usr/local/keepalived/etc/keepalived/ /etc/
3. ln -s /usr/local/keepalived/sbin/keepalived/ /sbin/

在這裏插入圖片描述
在這裏插入圖片描述

5.還原之前實驗部分內容

因爲keepalived也存在健康檢查,所以在server1中刪除VIP並關閉ldirectord服務:

1. systemctl stop ldirectord.service
2. systemctl disable ldirectord.service
3. ip addr del 172.25.254.100/32 dev eth0
4. ip addr show

在這裏插入圖片描述

6.keepalived的配置文件

在server1中:

[root@server1 keepalived-2.0.20]# cd /etc/keepalived/
[root@server1 keepalived]# ls
keepalived.conf  samples
[root@server1 keepalived]# vim keepalived.conf 

1 ! Configuration File for keepalived
  2        		  ## 全局配置 ##
  3 global_defs {                  					##全局定義塊
  4    notification_email {		   					##郵件通知
  5      root@localhost
  6    }          ## 設置郵件的發送地址 ##
  7    notification_email_from Alexandre.Cassen@firewall.loc
  8    smtp_server 127.0.0.1					    ##設置 smtp server 地址
  9    smtp_connect_timeout 30						##設置連接 smtp 服務器超時時間
 10    router_id LVS_DEVEL							##load balancer 的標識 ID,用於 email 警報
 11    vrrp_skip_check_adv_addr
 12 #   vrrp_strict
 13    vrrp_garp_interval 0
 14    vrrp_gna_interval 0
 15 }
 16 				## VRRPD配置 ##
 17 vrrp_instance VI_1 {
 18     state MASTER								#備機改爲 BACKUP,此狀態是由 priority 的值來決定的,當前priority 的值小於備機的值,那麼將會失去 MASTER 狀態
 19     interface eth0  							#HA 監測網絡接口
 20     virtual_router_id 51   						#主、備機的 virtual_router_id 必須相同,取值 0-255
 21     priority 100   								#主機的優先級,備份機改爲 50,主機優先級一定要大於備機
 22     advert_int 1     							#主備之間的通告間隔秒數
 23     authentication {
 24         auth_type PASS  						 #設置驗證類型,主要有 PASS 和 AH 兩種
 25         auth_pass 1111
 26     }
 27     virtual_ipaddress {    						##指定VIP,即切換到MASTER時,這些IP會被添加,切換到BACKUP時,這些IP會被刪除(傳給ip addr命令),所以每臺服務器可以不用綁定任何的虛擬地址。
 28         192.168.43.100
 29     }
 30 }
 31      ## 虛擬服務配置 ##
 32 virtual_server 192.168.43.100 80 {      #定義虛擬服務器
 33     delay_loop 3       					#定義虛擬服務器
 34     lb_algo rr   						#lvs 調度算法,這裏使用輪詢
 35     lb_kind DR							#LVS 是用 DR 模式
 36 #    persistence_timeout 50				#註釋掉
 37     protocol TCP  						#指定轉發協議類型,有 tcp 和 udp 兩種
 38 
 39     real_server 192.168.43.72 80 { 		#配置服務節點
 40         TCP_CHECK{  					##TCP方式的健康檢查,realserve 的狀態檢測設置部分,單位是秒
 41         weight 1						##默認爲10爲失效
 42         connect_port 80  				#重試次數
 43         connect_timeout 3				#重試間隔
 44 }
 45 }
 46 
 47 real_server 192.168.43.73 80 {
 48                 TCP_CHECK {
 49                 weight 1
 50                 connect_port 80
 51                 connect_timeout 3
 52 }
 53 }

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
server1的配置文件配置完成後,發給備用機server4並修改:
在這裏插入圖片描述
在這裏插入圖片描述

在server1和server4中開啓服務:

systemctl start keepalived

測試

開啓服務後在server1中可以看到VIP(自動分配vip地址)和寫好的策略(server4中也會有策略):

在這裏插入圖片描述
在這裏插入圖片描述

  1. server1正常工作時
    在這裏插入圖片描述

  2. server1宕掉時:
    在這裏插入圖片描述
    在這裏插入圖片描述
    發現並不會影響訪問

這時候,,,在server4中查看到VIP(vip地址漂移到server4):

發現server1的VIP消失了
在這裏插入圖片描述
在server4 中發現了VIP,,,

在這裏插入圖片描述

  1. 再次開啓server1:
    發現server1又重新配置上VIP
    在這裏插入圖片描述
    server4 VIP下線

在這裏插入圖片描述
在這裏插入圖片描述

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