天天看點

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

LVS+KeepAlived+Nginx高可用實作方案

概念

LVS

  • 什麼是lvs

    LVS是Linux Virtual Server的簡寫,意即Linux虛拟伺服器,是一個虛拟的伺服器叢集系統。本項目在1998年5月由章文嵩博士成立,是中國國内最早出現的自由軟體項目之一。

  • 宗旨
    1. 使用叢集技術和Linux作業系統實作一個高性能、高可用的伺服器.
    2. 很好的可伸縮性(Scalability)
    3. 很好的可靠性(Reliability)
    4. 很好的可管理性(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)

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

安裝ipvsadm

用于檢視lvs轉發及代理情況的工具

隻需要在192.168.200.128及192.168.200.129上安裝即可

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

防火牆

直接關閉所有防火牆,這種方式僅僅用于測試;不推薦用于實際項目

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

配置nginx伺服器

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

192.168.1.130和192.168.1.131這兩台伺服器上配置即可

儲存并設定腳本的執行權限,執行腳本

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

如果看到紅框内的效果,說明腳本已經執行成功了

兩台虛拟機配置内容相同

配置keepalived

配置MASTER

進入192.168.200.128伺服器

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

配置BACKUP

進入192.168.200.129伺服器

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

配置注意項

router_id

後面跟的自定義的ID在同一個網絡下是一緻的

state

state後跟的MASTER和BACKUP必須是大寫;否則會造成配置無法生效的問題

interface

網卡ID:可以使用以下方式查詢

ip a

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

priority

主備優先級

MASTER中配置的priority必須比BACKUP大

authentication

主備之間的認證方式

一般使用PASS即可;主備的配置必須一緻;否則無法通訊,會導緻裂腦;密碼不能大于8位

virtual_ipaddress

配置的VIP;允許配置多個

啟動keepalived

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

如果網卡下出現192.168.200.200(VIP)說明主已經啟動成功

檢查備keepalived 啟動後的配置情況

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

備伺服器的網卡下沒有出現192.168.200.200(VIP)的ip,說明備服務正常

注:如果這裡也出現了VIP,那麼說明裂腦了,需要檢查防火牆是否配置正确;是否允許了vrrp的多點傳播通訊

LVS管理工具-ipvsadm

ipvsadm -Ln
           

檢視目前配置的虛拟服務和各個RS的權重

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

測試

正常代理轉發

使用windows主控端進行測試

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

請求虛拟IP檢視轉發的服務

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

KeepAlived高可用測試

停掉主keepalived

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

vip漂移至備伺服器

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

此時網頁通路192.168.200.200依然能夠正常通路

重新開機主keepalived

主服務恢複之後,vip又會自動漂移回主服務

LVS監控真實服務測試

檢視最新的虛拟ip對應的RealServer的情況

ipvsadm -l
           
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

可以看出192.168.200.130和192.168.200.131兩台正式服務都還在

測試停掉192.168.200.130

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

再次檢視虛拟ip對應的RealServer的情況

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

恢複192.168.1.130

lvs又會自動監控并加入192.168.1.130

LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案
LVS+KeepAlived+Nginx高可用實作方案LVS+KeepAlived+Nginx高可用實作方案

文章參考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