怎樣正確搭建linux網站伺服器「linux網站伺服器搭建」

LVS是Linux Virtual Server的簡稱,也就是Linux虛擬伺服器,它是我國的章文嵩博士發起的一個開源項目,現在LVS已經是Linux標準內核的一部分。LVS主要用於多伺服器的負載均衡,它工作在網路層,可以實現一個高性能,高可用的伺服器群集,它具有良好的可靠性、可擴展性和可操作性,即使在集群的伺服器中某台伺服器無法正常工作,也不影響整體效果。官方站點:http://www.linuxvirtualserver.org。

Linux虛擬伺服器LVS詳解及部署配置實現Web業務訪問負載均衡

LVS體系架構

如上圖所示,LVS可分為三部分:

  1. Load Balancer:這是LVS的核心部分,位於整個集群系統的最前端,有一台或者多台負載調度器(Director
    Server)組成,它負責將客戶的請求按照一定的演算法分發到下一層(Server Array層)不同的應用伺服器(Real
    Server)進行處理,自己本身不做具體業務的處理。
  2. Server Array:該層負責具體業務,由一組實際運行應用服務的機器組成,Real
    Server可以是WEB伺服器、MAIL伺服器、FTP伺服器、DNS伺服器、視頻伺服器中的一個或者多個,每個Real
    Server之間通過高速的LAN或分布在各地的WAN相連接。在實際的應用中,上層的Director Server其實也可以同時兼任Real
    Server的角色。
  3. Shared Storage:為所有Real Server提供共享存儲空間和內容一致性的存儲區域,在物理上,一般由磁碟陣列設備組成。

LVS基本工作原理

LVS是工作在網路層,LVS通過控制IP來實現負載均衡。IPVS是其具體的實現模塊。IPVS的主要作用:安裝在Director Server上,在Director Server虛擬一個對外訪問的IP(VIP)。用戶訪問VIP,到達Director Server,Director Server根據一定的規則選擇一個Real Server,處理完成後然後返回給客戶端數據。

Linux虛擬伺服器LVS詳解及部署配置實現Web業務訪問負載均衡
  1. 當用戶向負載均衡調度器(Director Server)發起請求,調度器將請求發送至內核空間;
  2. PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數據包發往INPUT鏈;
  3. IPVS是工作在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和自己已定義好的集群服務進行比對,如果用戶請求的就是定義的集群服務,那麼此時IPVS會強行修改數據包里的目標IP地址及埠,並將新的數據包發往POSTROUTING鏈;
  4. POSTROUTING鏈接收數據包後發現目標IP地址剛好是自己的後端伺服器,那麼此時通過選路,將數據包最終發送給後端的伺服器。

LVS轉發類型

這些步驟產生了一些具體的問題,比如如何選擇具體的Real Server,Real Server如何返回給客戶端數據等等。IPVS為此有三種轉發類型:

  1. VS/NAT(Virtual Server via Network Address Translation)網路地址轉換,即網路地址翻轉技術實現虛擬伺服器。當請求來到時,Diretor
    server上處理的程序將數據報文中的目標地址(即虛擬IP地址)改成具體的某台Real Server,埠也改成Real
    Server的埠,然後把報文發給Real Server。Real Server處理完數據後,需要返回給Diretor
    Server,然後Diretor
    server將數據包中的源地址和源埠改成VIP的地址和埠,最後把數據發送出去。由此可以看出,用戶的請求和返回都要經過Diretor
    Server,如果數據過多,Diretor Server肯定會不堪重負。
  2. VS/TUN(Virtual Server via IP Tunneling)隧道模型,即IP隧道技術實現虛擬伺服器。它跟VS/NAT基本一樣,但是Real server是直接返回數據給客戶端,不需要經過Diretor server,這大大降低了Diretor server的壓力。
  3. VS/DR(Virtual Server via Direct Routing)直接路由模型,即用直接路由技術實現虛擬伺服器。跟前面兩種方式,它的報文轉發方法有所不同,VS/DR通過改寫請求報文的MAC地址,將請求發送到Real
    Server,而Real
    Server將響應直接返回給客戶端,免去了VS/TUN中的IP隧道開銷。這種方式是三種負載調度機制中性能最好的,應用比較廣泛。
Linux虛擬伺服器LVS詳解及部署配置實現Web業務訪問負載均衡

LVS-DR模型的工作原理:

  1. 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP(Client IP),目標IP為VIP;
  2. PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈;
  3. IPVS比對數據包請求的服務是否為集群服務,若是,將請求報文中的源MAC地址修改為DIP(Director
    Server IP)的MAC地址,將目標MAC地址修改RIP(Real Server
    IP)的MAC地址,然後將數據包發至POSTROUTING鏈。
    此時的源IP和目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,目標MAC地址為RIP的MAC地址;
  4. 由於DS和RS在同一個網路中,所以是通過二層來傳輸。POSTROUTING鏈檢查目標MAC地址為RIP的MAC地址,那麼此時數據包將會發至Real Server;
  5. RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之後,將響應報文通過lo介面傳送給eth0網卡然後向外發出。 此時的源IP地址為VIP,目標IP為CIP;
  6. 響應報文最終送達至客戶端。

LVS調度演算法

我們都知道Director Server要選擇不同的Real server,那麼它具體如何選擇Real Server以達到負載均衡的呢,IPVS支持十種調度方法。

一)靜態調度:

①RR(Round Robin):輪詢調度

輪詢調度演算法的原理是每一次把來自用戶的請求輪流分配給內部中的伺服器,從1開始,直到N(內部伺服器個數),然後重新開始循環。演算法的優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度

②WRR:weight:加權輪詢

由於每台伺服器的配置、安裝的業務應用等不同,其處理能力會不一樣。所以,我們根據伺服器的不同處理能力,給每個伺服器分配不同的權值,使其能夠接受相應權值數的服務請求。

③SH:source hashing:源地址散列

根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器。

④DH:Destination hashing:目標地址散列

根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器。

二)動態調度:

①LC(Least-Connection):最少連接

最少連接調度演算法是把新的連接請求分配到當前連接數最小的伺服器,最小連接調度是一種動態調度短演算法,它通過伺服器當前所活躍的連接數來估計伺服器的負載均衡。

②WLC(Weighted Least-Connection Scheduling):加權最少連接。

加權最小連接調度演算法是最小連接調度的超集,各個伺服器用相應的權值表示其處理性能。伺服器的預設權值為1,系統管理員可以動態地設置伺服器的許可權,加權最小連接調度在調度新連接時儘可能使伺服器的已建立連接數和其權值成比例。

③SED(Shortest Expected Delay):最短期望延遲

基於wlc演算法,簡單演算法:(active+1)*256/weight 【(活動的連接數+1)*256/除以權重】

④NQ(never queue):永不排隊(改進的sed)

無需隊列,如果有台realserver的連接數=0就直接分配過去,不需要再進行sed運算。

⑤LBLC(Locality-Based Least Connection):基於局部性的最少連接

基於局部性的最少連接調度演算法根據請求的目標IP地址找出該目標IP地址最近使用的RealServer,若該Real Server是可用的且沒有超載,將請求發送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於一半的工作負載,則用「最少鏈接」的原則選出一個可用的伺服器,將請求發送到該伺服器。

⑥LBLCR(Locality-Based Least Connections withReplication):帶複製的基於局部性最少鏈接

帶複製的基於局部性最少鏈均衡,該演算法根據請求的目標IP地址找出該目標IP地址對應的服接調度演算法也是針對目標IP地址的負載務器組,按「最小連接」原則從伺服器組中選出一台伺服器,若伺服器沒有超載,將請求發送到該伺服器;若伺服器超載,則按「最小連接」原則從這個集群中選出一台伺服器,將該伺服器加入到伺服器組中,將請求發送到該伺服器。

LVS具體配置操作

實驗環境三台Linux主機

Diretor server:192.168.52.20

Real server1:192.168.52.121

Real server2:192.168.52.122

下面我們VS/DR介紹詳細的配置過程:

在Real server 1和2上面,配置web服務。

yum install httpd -y #安裝http服務

echo 「This is 192.168.52.12x!!!」 > /var/www/html/index.html #配置兩台web文件用於測試顯示效果

systemctl start httpd #啟動http服務

通過瀏覽器輸入IP訪問效果如下。

Linux虛擬伺服器LVS詳解及部署配置實現Web業務訪問負載均衡

Diretor server上安裝LVS。

yum install ipvsadm -y

Director Server上綁定一個虛擬VIP地址192.68.52.250,此IP用於對外提供服務。

ifconfig ens33:0 192.168.52.250 broadcast 192.168.52.250 netmask 255.255.255.255 up

添加路由,訪問192.168.52.250都走ens33:0這塊網卡。

route add -host 192.168.52.250 dev ens33:0

啟用系統的包轉發功能。

echo “1”>/proc/sys/net/ipv4/ip_forward

如果之前配置過LVS,可先清除ipvsadm以前的設置。

ipvsadm -C

添加一個新的虛擬IP記錄192.168.52.250,設置演算法為rr輪詢演算法。
ipvsadm -A -t 192.168.52.250:80 -s rr

在新增的虛擬IP記錄中新增兩條real server記錄,-g即為使用VS/DR模式
ipvsadm -a -t 192.168.52.250:80 -r 192.168.52.121:80 -g
ipvsadm -a -t 192.168.52.250:80 -r 192.168.52.122:80 -g

啟用LVS服務。

ipvsadm

兩台real server上的配置:
在環回口上綁定了虛擬IP地址,並添加路由。

ifconfig ens33:0 192.168.52.250 broadcast 192.168.52.250 netmask 255.255.255.255 up

route add -host 192.168.52.250 dev lo:0
禁用本機的ARP請求。

echo “1”>/proc/sys/net/ipv4/conf/lo/arp_ignore
echo “2”>/proc/sys/net/ipv4/conf/lo/arp_announce
echo “1”>/proc/sys/net/ipv4/conf/all/arp_ignore
echo “2”>/proc/sys/net/ipv4/conf/all/arp_announce

最後在其他客戶端機子上面,訪問http://192.168.52.250/,則可以看到結果了,外部客戶端的請求被均衡的分配到兩台Real Server上,出現不同的界面。

Linux虛擬伺服器LVS詳解及部署配置實現Web業務訪問負載均衡

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/280184.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-20 18:54
下一篇 2024-12-20 18:54

相關推薦

發表回復

登錄後才能評論