LVS+KeepAlived+Nginx高可用實作方案
概念
LVS
-
什麼是lvs
LVS是Linux Virtual Server的簡寫,意即Linux虛拟伺服器,是一個虛拟的伺服器叢集系統。本項目在1998年5月由章文嵩博士成立,是中國國内最早出現的自由軟體項目之一。
- 宗旨
- 使用叢集技術和Linux作業系統實作一個高性能、高可用的伺服器.
- 很好的可伸縮性(Scalability)
- 很好的可靠性(Reliability)
- 很好的可管理性(Manageability)。
-
特點
可伸縮網絡服務的幾種結構,它們都需要一個前端的負載排程器(或者多個進行主從備份)。我們先分析實作虛拟網絡服務的主要技術,指出IP負載均衡技術是在負載排程器的實作技術中效率最高的。在已有的IP負載均衡技術中,主要有通過網絡位址轉換(Network Address Translation)将一組伺服器構成一個高性能的、高可用的虛拟伺服器,我們稱之為VS/NAT技術(Virtual Server via Network Address Translation)。在分析VS/NAT的缺點和網絡服務的非對稱性的基礎上,我們提出了通過IP隧道實作虛拟伺服器的方法VS/TUN (Virtual Server via IP Tunneling),和通過直接路由實作虛拟伺服器的方法VS/DR(Virtual Server via Direct Routing),它們可以極大地提高系統的伸縮性。VS/NAT、VS/TUN和VS/DR技術是LVS叢集中實作的三種IP負載均衡技術。
KeepAlived
-
什麼是keepAlived
keepalived是一個類似于layer3, 4 & 5交換機制的軟體,也就是我們平時說的第3層、第4層和第5層交換。Keepalived是自動完成,不需人工幹涉。
-
簡介
Keepalived的作用是檢測伺服器的狀态,如果有一台web伺服器當機,或工作出現故障,Keepalived将檢測到,并将有故障的伺服器從系統中剔除,同時使用其他伺服器代替該伺服器的工作,當伺服器工作正常後Keepalived自動将伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工幹涉,需要人工做的隻是修複故障的伺服器。
為什麼要使用
當我們的伺服器意外挂了之後,我們要怎麼做?
當然是找一台新的機器,替代現有的機器,然後做新的環境部署,端口映射,域名解析等等一系列的工作,再将服務重新啟動;但是如果這一系列的操作都是手動完成的,那麼等你把這些工作搞好,可能服務已經停止個把小時了
但是如果使用了KeepAlived之後,然後提前将備用機準備好,當主的機器挂掉之後,自動将VIP給你切換到備用機,并且以郵件的形式告訴你說主服務已經挂了,你得趕緊恢複起來;這時候你就可以慢慢的去找主服務的問題,這時候并不會影響到你的正常業務運作。
準備
虛拟機(CentOS 7)
準備了4台虛拟機,用于測試
主機 | ip | 作用 |
主機1 | 192.168.200.128 | Keepalived Master |
主機2 | 192.168.200.129 | Keepalived Backup |
主機3 | 192.168.200.130 | Nginx1 |
主機4 | 192.168.200.131 | Nginx2 |
無 | 192.168.200.200 | VIP |
軟體安裝
在192.168.1.128及192.168.1.129上安裝keepalived
在192.168.1.130及192.168.1.131上安裝nginx(這裡我做的是lnmp)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1MTN5MDNzcTMyITMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
安裝ipvsadm
用于檢視lvs轉發及代理情況的工具
隻需要在192.168.200.128及192.168.200.129上安裝即可
防火牆
直接關閉所有防火牆,這種方式僅僅用于測試;不推薦用于實際項目
配置nginx伺服器
192.168.1.130和192.168.1.131這兩台伺服器上配置即可
儲存并設定腳本的執行權限,執行腳本
如果看到紅框内的效果,說明腳本已經執行成功了
兩台虛拟機配置内容相同
配置keepalived
配置MASTER
進入192.168.200.128伺服器
配置BACKUP
進入192.168.200.129伺服器
配置注意項
router_id
後面跟的自定義的ID在同一個網絡下是一緻的
state
state後跟的MASTER和BACKUP必須是大寫;否則會造成配置無法生效的問題
interface
網卡ID:可以使用以下方式查詢
ip a
priority
主備優先級
MASTER中配置的priority必須比BACKUP大
authentication
主備之間的認證方式
一般使用PASS即可;主備的配置必須一緻;否則無法通訊,會導緻裂腦;密碼不能大于8位
virtual_ipaddress
配置的VIP;允許配置多個
啟動keepalived
如果網卡下出現192.168.200.200(VIP)說明主已經啟動成功
檢查備keepalived 啟動後的配置情況
備伺服器的網卡下沒有出現192.168.200.200(VIP)的ip,說明備服務正常
注:如果這裡也出現了VIP,那麼說明裂腦了,需要檢查防火牆是否配置正确;是否允許了vrrp的多點傳播通訊
LVS管理工具-ipvsadm
ipvsadm -Ln
檢視目前配置的虛拟服務和各個RS的權重
測試
正常代理轉發
使用windows主控端進行測試
請求虛拟IP檢視轉發的服務
KeepAlived高可用測試
停掉主keepalived
vip漂移至備伺服器
此時網頁通路192.168.200.200依然能夠正常通路
重新開機主keepalived
主服務恢複之後,vip又會自動漂移回主服務
LVS監控真實服務測試
檢視最新的虛拟ip對應的RealServer的情況
ipvsadm -l
可以看出192.168.200.130和192.168.200.131兩台正式服務都還在
測試停掉192.168.200.130
再次檢視虛拟ip對應的RealServer的情況
恢複192.168.1.130
lvs又會自動監控并加入192.168.1.130
文章參考https://blog.csdn.net/lupengfei1009/article/details/86514445?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161094810816780262557396%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161094810816780262557396&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-86514445.first_rank_v2_pc_rank_v29&utm_term=centos7keepalived%20lvs%20nginx