LVS(三)lvs+keeplive
一 場景引入1
??????? 我們知道LVS僅僅是做根據調度算法和策略來做負載均衡的,LVS本身只是調度后端服務器,并不管后端服務器的死活,想想這樣一個場景:如果由于由于某種原因,后端服務器掛掉,而調度服務器卻不知道,還一個勁頭的給其發送請求,后端服務器此時不響應數據,而客戶端會處于等待的狀態(直到超時),客戶體驗不好!
??????? 說明:后續有時間了再模擬這個場景(后端某個服務關閉,觀察實驗現象)!
??????? 引出了我們今天要講解的心跳檢查(heartbeat),通俗點就是前端服務器檢查后端服務器的存活,進而采取某種策略!
??????? 說明:由于DR模式最常見,所以我們以此種模式進行講解!
二? lvs+directord
(1)directord的簡單理解
?????????? directord 對lvs策略的動態維護:ldirectord是監視集群節點(真實服務器),并從集群中自動移除節點,我們需要使用ldirectord程序,這個程序在啟動時自動建立IPVS表(不用手動建立了),然后監視集群節點的健康情況,在發現失效節點時將其自動從IPVS表中移除。
(1)第一次安裝出現的問題
yum install -y ldirectord-3.9.5-3.1.x86_64.rpm Error: Package: ldirectord-3.9.5-3.1.x86_64 (/ldirectord-3.9.5-3.1.x86_64)Requires: resource-agents說明:安裝包從官網下載即可!
原因:沒有使用系統自帶的高可用套件,缺乏依賴,yum源進行配置(所需安裝軟件在光盤上就可以,不需要額外配置yum源!
# 自帶附加高可用源 [HighAvailability] name="HighAvailability" baseurl=http://172.25.2.250/rhel7.3/addons/HighAvailability gpgcheck=0(2)正式安裝
yum install -y ldirectord-3.9.5-3.1.x86_64.rpm rpm -ql ldirectord-3.9.5-3.1.x86_64 # 查詢 cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/(3)編寫配置文件
# 虛擬VIP-->核心配置文件! virtual=172.25.2.100:80real=172.25.2.201:80 gatereal=172.25.2.202:80 gatefallback=127.0.0.1:80 gateservice=httpscheduler=rr#persistent=600#netmask=255.255.255.255protocol=tcpchecktype=negotiatecheckport=80request="index.html"# 注意:一定要將其注釋!#receive="Test Page"#virtualhost=www.x.y.z檢測:開啟ldirectord服務,然后通過ipvsadm -l 來看是否有IPVS表的規則!
注意:還是手動寫VIP,只是通過配置文件的形式幫助我們生成ipvs規則表!
補充:還得手動開啟服務!
理解:并不管理資源!
ip addr add 172.25.2.100/24 dev eth0 #配置VIP(由于是DR模式,所以三個都需要配置)(4)后端服務器的配置
VIP(手動配置)和ARP策略
arptables -A INPUT -d 172.25.2.100 -j DROP arptables -A OUTPUT -s 172.25.2.100 -j mangle --mangle-ip-s 172.25.2.201# 兩個后端服務器一樣注意:服務必須自己開啟!
(5)測試
測試1:兩個后端服務器均開啟Apach服務,然后客戶端測試看是否輪詢!
測試2:其中一個后端服務器關閉服務,觀察此服務器是否被IPVS表移出,以及客戶端測試的內容!
測試3:其中一個后端服務器有開啟服務,觀察此服務器是否被IPVS表添加,以及客戶端測試的內容!
測試4:前端服務器也安裝httpd軟件,并開啟服務,看后端服務器掛掉的時候,前端服務器會不會頂上去!
說明:在其它后端服務器都掛了的情況下,前端調度器也可以作為臨時服務器,但是一般時間很短!
配置文件的詳細解釋
原理
二:場景引入
???? 假如:lvs調度服務器掛掉了呢,是不是整個就癱瘓了,怎么辦?總得防患于未然,添加lvs的備用機,如何監控呢?
???? 引入:我們今天要講解的keepalived
???? 注意:做實驗之前一定要事先關閉selinux和firewalld !
???? keepalived百度百科
? (1)源碼編譯安裝
#(1)說明:第三方的包-->源碼安裝 # 最好進入一個目錄! tar -zxf keepalived-2.0.6.tar.gz cd keepalived-2.0.6 #(2)安裝依賴的軟件 yum install gcc openssl-devel -y #(3)編譯-->6|7的區別 ./configure --prefix=/usr/local/keepalived --with-init=systemd #核心:Use IPVS Framework是否是Yes #(4)安裝 make && make install #(5)進入對應的目錄-->設置軟鏈接 cd /usr/local/keepalived/ 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 /sbin/ #(6)安裝郵件軟件 yum install -y mail #看是否發生報錯信息!# 說明:用的也是高可用的包!??? 說明:主和備用的安裝方式一致!
(2)? 對配置文件進行配置
安裝之前做一些清理工作
????? 1)IPVS規則的清理(-C)
????? 2)VIP的手動刪除--->會自動生成此VIP
配置文件參數的說明!
# 全局配置 global_defs {notification_email {#(1)節點宕機了給誰發送郵件!-->本機的root用戶(安裝mail軟件,看是否發送郵件)root@localhost}#(2)發送人的名稱notification_email_from keeplived@loclhost#(3)發送的服務器-->本機smtp_server 172.0.0.1#(4)指定smtp連接超時時間smtp_connect_timeout 30router_id LVS_DEVEL#(5)運行keepalived機器的一個標識!vrrp_skip_check_adv_addr#(6)必須注釋#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0 }vrrp_instance VI_1 {#(1)主節點的標識state MASTER #BACKUP(備用的標識)interface eth0#(2)說明:主和備用的必須一致virtual_router_id 51#(3)優先級,越大越優先啟動priority 100 #說明:備用的必須小于100advert_int 1 # 檢查間隔authentication {auth_type PASS #認證方式(密碼認證)auth_pass 1111 #認證的密碼}#(4)虛擬VIP-->不用手動創建(可以創建多個,對應不同的服務)virtual_ipaddress {172.25.2.100} } # 虛擬服務的相關配置-->理解成IPVS表規則 virtual_server 172.25.2.100 80 {delay_loop 6 # 當rs報錯時候,嘗試多少次之后才會發送郵件告知!lb_algo rr # 負載均衡的算法(10種)lb_kind DR # 默認時NAT模式(這里選擇DR)#persistence_timeout 50 #注釋(保持連接的時間)protocol TCPreal_server 172.25.2.201 80 {TCP_CHECK {connect_port 80weight 1connect_timeout 3}}real_server 172.25.2.202 80 {TCP_CHECK {connect_port 80weight 1connect_timeout 3}} }說明:備用只修改state和proprity
后端服務器的配置
ip addr add 172.25.2.100/24 dev eth0 arptables -A INPUT -d 172.25.2.100 -j DROP arptables -A OUTPUT -s 172.25.2.100 -j mangle --mangle-ip-s 172.25.2.201注意:要配置VIP,因為后端服務器和前端控制器是想對獨立的
重啟之后的現象-->主
備用
測試1:后端服務器關閉和開啟,看IPVS表的變化
說明:這里省略
測試2:主LB關閉keepalived服務,看IPVS表和VIP的走向
測試3:主LB開啟keeplalived服務
說明:keepalived備機在主機宕機的情況會自動接管了資源,但待keepalived主機恢復正常的時候,主機會重新接管資源!
小知識:IP/32表示是一個集群!
補充測試:看mail是否有郵件發送
總結
以上是生活随笔為你收集整理的LVS(三)lvs+keeplive的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 中参数传递是传值还是引用?
- 下一篇: AC自动机:多模式串匹配实现敏感词过滤