LVS 負載均衡-DR

1. LVS 簡介

1.1 什么是LVS

LVS(Linux Virtual Server) 是一個高度可擴展且高可用的服務器, 構(gòu)建在真實服務器集群上的, load balancer(負載均衡) 在linux 操作系統(tǒng)上運行, 服務器集群的體系結(jié)構(gòu)對用戶透明, 并且用戶就像是在于 單個高性能的虛擬服務器交互一樣,

1.2 服務器集群系統(tǒng)

傳統(tǒng)的沒有集群的的服務器 如果性能不足, 就需要使用 '對稱多處理'(Symmetric Multi-Processor 簡稱SMP) 是由多個CPU, 和通過總線共享的內(nèi)存和I/O 部件組成的計算機系統(tǒng), SMP 是一種低并行的結(jié)構(gòu), 是通常所說的'緊耦合多處理系統(tǒng)', 該系統(tǒng)的可擴展能力是有限的, 優(yōu)點是 單一的系統(tǒng), 有共享的內(nèi)存和I/O, 且易編程.

由于SMP 擴展能力有限, SMP 不能夠滿足高可升縮, 高可用網(wǎng)絡服務中 負載能力不斷增長需求. 隨著負載增長, 會導致服務器不斷升級,

  • 這種服務器有以下幾種不足:
    • 升級繁瑣, 機器切換會使服務中, 并且原有計算資源浪費
    • 越高端單服務器, 升級花費越大
    • SMP 服務器 發(fā)生單點故障(Single Point of Failure)時, 服務器或應用軟件失效, 導致整個服務中斷.

通過高性能網(wǎng)絡或局域網(wǎng)服務器幾圈稱為高可升縮, 高可用網(wǎng)絡服務的有效結(jié)構(gòu),

  • 這種松耦合的服務器集群的有點:
    • 性能: 網(wǎng)絡服務工作負載通常是大量相互獨立的任務, 通過一組服務器分別操作, 可以獲得很高的性能
    • 性價比: 通過組 服務器集群可以使用大規(guī)模的低成本的服務器.
    • 可伸縮性: 集群系統(tǒng)中節(jié)點數(shù)目可以增長到成千上萬個, 伸縮性遠超過單個超級計算機.
    • 高可用性: 在硬件和軟件上都有冗余, 通過檢測硬件故障, 將故屏蔽, 由存活節(jié)點提供服務, 實現(xiàn)服務的高可用性.
  • 服務器集群系統(tǒng)可以實現(xiàn)可伸縮性服務也存在很多需要的操作.
    • 透明性(Transperncy)
      • 如果高效的使用多個獨立服務器組成松耦合的集群系統(tǒng)構(gòu)建成一個虛擬的服務器, 客戶端在于集群交互式, 需要感受像是在與一臺高性能服務器交互一樣, 客戶端不需要任何修改, 部分服務的切入和切出 不會中斷服務.
    • 性能(Performance)
      • 性能需要線性提升, 需要設計很好的軟硬件體系結(jié)構(gòu), 消除系統(tǒng)性能提升時的瓶頸, 降幅在劇呢很難過調(diào)度到各個服務器上,
    • 高可用性(Availability)
      • 需要設計實現(xiàn)很好的系統(tǒng)資源和故障的檢測和處理系統(tǒng), 發(fā)現(xiàn)一個模塊失敗時, 要這個模塊上提供服務遷移到其他模塊上理想狀態(tài)下, 這種遷移是 實時, 自動的.
    • 可管理性(Manageability)
      • 需要使系統(tǒng)易管理, 就像管理單一系統(tǒng)一樣,

1.3 IP 蓄力服務器軟件IPVS

在調(diào)度器實現(xiàn)技術中, IP 負載均衡技術是效率最高的, 在已有的IP 負載均衡技術中 有通過負載均衡技術中 又通過網(wǎng)絡地址轉(zhuǎn)換 NAT(Network Address Translation) 將一組服務器構(gòu)建成一個高性能, 高可用的虛擬服務器, 稱為 VS/NAT 技術, 大多數(shù)商業(yè)化的IP 負載均衡調(diào)度都是使用該方法, 如 LocalDirector, F5的 Big/IP 等等.
由于NAT 缺點和網(wǎng)絡非對稱性, 就有了通過IP隧道的方法 VS/TUN(IP Tunneling), 和通過直接路由 實現(xiàn)虛擬服務器的方法 VS/DR(Direct Routing), 可以極大提升系統(tǒng)的伸縮性, 所以IPVS 軟件實現(xiàn)了這三種IP 負載均衡技術, 原理如下:

  1. Virtual Server via Network Address Translation(VA/NAT)

    • 通過網(wǎng)絡地址轉(zhuǎn)換, 調(diào)度器重寫請求報文的目標地址, 根據(jù)設定的調(diào)度算法, 將請求分配到后端真實服務器上, 真實服務器的響應報文通過調(diào)度器時, 報文源地址會被重寫, 返回給客戶端, 完成負載調(diào)度過程.
  2. Virtual Server via IP Tunneline(VS/TUN)

    • 采用NAT 技術時由于請求和響應報文都需要經(jīng)過調(diào)度器重寫, 客戶端請求越來越多時, 調(diào)度器的處理能力會稱為系統(tǒng)瓶頸, 為解決該問題, 調(diào)度器會把請求報文通過隧道發(fā)到真實服務器, 而真實服務器直接返回給客戶端, 調(diào)度器只處理了請求報文, 一般服務器響應報文會比請求報文大很多, 所以采用 VS/TUN 技術, 集群的吞吐量可以提高很多倍.
  3. Virtual Server via Direct Routing(VS/DR)

    • VS/DS 通過改寫請求報文的MAC 地址. 將請求發(fā)送到真實服務器, 二診室服務IQ響應直接返回給客戶端, 和 VS/TUN技術一樣, VS/DR 技術可以極大提高集群系統(tǒng)的伸縮性, 這種發(fā)發(fā)沒有VS/TUN 的開銷, 隊及群眾真實服務器也米誒有必要的 IP 隧道協(xié)議要求, 但是要求的是 調(diào)度器與真實服務器必須在同一個網(wǎng)段中.

1.4 LVS 調(diào)度器 負載輪詢算法

  1. 輪詢(Round Robin)

    • 調(diào)度器通過'輪詢' 算法將外度請求順序輪流分配到真實服務器上, 均勻的對待每一個服務器, 不管其實際連接數(shù) 或者系統(tǒng)負載.
  2. 加權(quán)輪詢(Weighted Round Robin)

    • 調(diào)度器通過 '加權(quán)輪詢' 調(diào)度算法根據(jù)真實服務器不同的處理能力來調(diào)度訪問請求. 可以保證處理更多的訪問流量, 調(diào)度器可以自動詢問真實服務器的負載情況, 并動態(tài)調(diào)節(jié)其權(quán)值.
  3. 最少連接數(shù)(Laster Connections)

    • 調(diào)度器通過'最少連接數(shù)' 調(diào)度算法動態(tài)將網(wǎng)絡請求調(diào)度到已建立的鏈接最少的服務器上, 如果集群系統(tǒng)的真實服務器具有相近的系統(tǒng)性能, 采用'最小鏈接'算法可以較高的均衡負載.
  4. 加權(quán)最少連接(Weighted Laster Connections)

    • 在集群系統(tǒng)中如果服務器性能差異較大, 調(diào)度器采用'加權(quán)最少連接' 調(diào)度算法可以優(yōu)化 負載均衡性能, 調(diào)度器可以自動詢問真實服務器負載情況, 并動態(tài)調(diào)整權(quán)值.
  5. 基于局部性的最小連接(Locality-Based Least Connections)

    • 該調(diào)度算法是針對目標IP 地址的負載均衡, 目前主要用于Cache 集群, 該算法根據(jù)請求的目標IP最近使用的服務器, 如果該服務器時可用的, 并且沒有超載, 那么將會將請求轉(zhuǎn)發(fā)到該服務器, 如果服務器不存在, 或者服務器超載, 則采用'最少連接'原則.
  6. 帶復制的基于局部的最少連接(Locality-Based Least Connections with Replication)

    • 該算法也是針對目標IP 地址的負載均衡, 目前用于 Cache 集群系統(tǒng)中, 和 LBLC 不同的是它 要維護一個目標IP 地址到一組服務器的映射, 而LBLC 維護的是一個目標IP 地址到到一臺服務器的映射, 如果服務器沒有超載, 將請求發(fā)送到服務器, 如果服務器超載則 按照 最小連接.
  7. 目標地址散列(Destination Hashing)

    • 該算法根據(jù)請求目標IP 地址, 作為散列鍵(Hash Key) 從靜態(tài)分配找到對應的服務器, 如果該服務器可用, 就會將請求發(fā)送到該服務器.
  8. 源地址散列(Source Hashing)

    • 該算法是根據(jù)源IP 地址, 作為散列鍵(Hash Key)

1.5 LVS 體系結(jié)構(gòu)

LVS 設計時考慮到系統(tǒng)的透明性, 可伸縮性, 高可用性, 易管理性, 采用了三層結(jié)構(gòu)

  • 負載調(diào)度器(Load Balancer), 是整個系統(tǒng)對外的前端機, 負責將客戶的請求發(fā)送到一組服務器上執(zhí)行, 讓客戶認為是來自一個IP 地址的(稱為VIP)
    -服務器池(Server pool), 一組正真執(zhí)的客戶請求的服務器, 執(zhí)行的服務器有 Web, Mail, FTP, DNS 都可以.
  • 共享存儲(shared storage), 為服務器池提供一個共享的存儲區(qū), 這樣很容易讓服務器擁有相同的內(nèi)容, 提供相同的服務. 如數(shù)據(jù)庫.

2. LVS 集群的搭建(VS/NAT)

2.1 環(huán)境說明

主機名         IP地址        軟件
node10009   192.168.10.9    LVS
            192.168.20.9
node10011   192.168.20.11   nginx
node10012   192.168.20.12   nginx

VIP         192.168.10.3

2.2 安裝ipvsadm 工具

[fangfc@node10009 ~]$ sudo yum -y install ipvsadm
....
Installed:
  ipvsadm.x86_64 0:1.27-7.el7                                                                                                
Complete!
[fangfc@node10009 ~]$ 
  • ipvs 工具是一個LVS 的管理工具,
  • 常用參數(shù):
-A  --Add-service       在內(nèi)核的虛擬服務器表中添加一條新的虛擬服務器記錄, 新增一臺新的虛擬服務器
-E  --edit-service      編輯內(nèi)核虛擬服務器表中的一條虛擬服務器記錄
-D  --delete-service    刪除 虛擬服務器表 中的一條記錄
-C  --clear             清除 所有記錄
-R  --restore           恢復 規(guī)則(恢復到上一次保存)              
-S  --save              保存 規(guī)則, 

-a  --add-server        新怎一條 真實服務器 的記錄(增加一臺真實服務器)
-e  --edit-server       編輯一條 真實服務器記錄
-d  --delete-server     刪除一條 真實服務器記錄
-L/-l   --list          顯示列表
-n  --numberic          數(shù)字形式顯示端口號
-c  --connection        顯示ipvs 目前存在的連接,  也可以用于分析調(diào)度情況
-Z  --zero              將轉(zhuǎn)發(fā)消息統(tǒng)計清零
-p  --persistent        配置持久化時間
--set top tcp udp       配置三個時間
-r  --real-server       真實的服務器
-t/-u                   tcp/udp 協(xié)議的虛擬服務
-g/-m/-i                LVS 模式 DR/NAT/TUN
-w                      配置真實服務器的權(quán)重
-s                      配置負載均衡算法, 如 rr, wrr, lc
--timeout               顯示配置的 超時時間
--stats                 顯示歷史轉(zhuǎn)發(fā)消息統(tǒng)計(累加值)
--rate                  顯示轉(zhuǎn)發(fā)速率信息(瞬時)

2.3 集群搭建

  1. LB 上設置
  • 搭建步驟
1.  在 eth0 綁定網(wǎng)卡 VIP 地址
2.  清除當前LVS規(guī)則
3.  設置 tcp, tcpfin, udp 鏈接超時時間
4.  添加虛擬服務, -t指定虛擬服務的IP 端口, -s 指定調(diào)度算法, 
5.  將虛擬服務關聯(lián)到真實服務上, 
  • 配置VIP地址
[root@node10009 ~]# ip addr add 192.168.10.3/24 dev ens33
[root@node10009 ~]# ip a s ens33 | grep inet
    inet 192.168.10.9/24 brd 192.168.10.255 scope global ens33
    inet 192.168.10.3/24 scope global secondary ens33
    inet6 fe80::20c:29ff:fe8f:4e4a/64 scope link 
[root@node10009 ~]# 
  • 配置轉(zhuǎn)發(fā)
[root@node10009 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward
[root@node10009 ~]# vim /etc/sysctl.conf 
  • 配置lvs
[root@node10009 ~]# ipvsadm -C
[root@node10009 ~]# ipvsadm --set 30 5 60 
[root@node10009 ~]# ipvsadm -A -t 192.168.10.3:80 -s rr -p 20
[root@node10009 ~]# ipvsadm -a -t 192.168.10.3:80 -r 192.168.10.11:80 -m
[root@node10009 ~]# ipvsadm -a -t 192.168.10.3:80 -r 192.168.10.12:80 -m
[root@node10009 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.3:80 rr persistent 20
  -> 192.168.10.11:80             Masq    1      0          0         
  -> 192.168.10.12:80             Masq    1      0          0         
[root@node10009 ~]# 
  1. Real Server 設置
  • 所有的 Real Server 配置DR 模式都需要 配置 網(wǎng)關為 LB 的內(nèi)網(wǎng)ip
  • node10011
[fangfc@node10011 ~]$ ip route
default via 192.168.20.9 dev ens34 proto static metric 100 
192.168.20.0/24 dev ens34 proto kernel scope link src 192.168.20.11 metric 100 
[fangfc@node10011 ~]$ 
[fangfc@node10011 ~]$ ip a show ens34 | grep inet
    inet 192.168.20.11/24 brd 192.168.20.255 scope global noprefixroute ens34
    inet6 fe80::5a3a:3ec1:9021:6f0c/64 scope link noprefixroute 
[fangfc@node10011 ~]$ 
  • node10012
[root@node10012 ~]# ip route
default via 192.168.20.9 dev ens34 proto static metric 100 
192.168.20.0/24 dev ens34 proto kernel scope link src 192.168.20.12 metric 100 
[root@node10012 ~]# ip a show ens34 | grep inet
    inet 192.168.20.12/24 brd 192.168.20.255 scope global noprefixroute ens34
    inet6 fe80::dcae:3aca:a26:ea64/64 scope link noprefixroute 
[root@node10012 ~]# 

2.4 測試

001.png
002.png
003.png

END

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容