LVS 介紹:?
Linux Virtual Server(LVS)是一個(gè)基于Linux內(nèi)核的開(kāi)源軟件項(xiàng)目,用于構(gòu)建高性能、高可用性的服務(wù)器群集。LVS通過(guò)將客戶端請(qǐng)求分發(fā)到一組后端服務(wù)器上的不同節(jié)點(diǎn)來(lái)實(shí)現(xiàn)負(fù)載均衡,從而提高系統(tǒng)的可擴(kuò)展性和可靠性。
LVS的核心組件:
- IPVS(IP Virtual Server):IPVS是LVS的核心模塊,它實(shí)現(xiàn)了負(fù)載均衡的功能。IPVS模塊通過(guò)攔截傳入的流量并進(jìn)行調(diào)度,將請(qǐng)求分發(fā)給后端的實(shí)際服務(wù)器。它存儲(chǔ)和管理負(fù)載均衡配置,并在內(nèi)核空間進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā)。
-
負(fù)載均衡器 LB(Load Balancer):負(fù)載均衡器是LVS的中心組件,它是位于客戶端和后端服務(wù)器之間的設(shè)備或軟件。負(fù)載均衡器接收客戶端請(qǐng)求,并根據(jù)配置的負(fù)載均衡策略將請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器,以實(shí)現(xiàn)負(fù)載分發(fā)和高可用性。
- 后端服務(wù)器 RS(Real Server):后端服務(wù)器是LVS集群中實(shí)際處理客戶端請(qǐng)求的服務(wù)器節(jié)點(diǎn)。它們分擔(dān)負(fù)載并提供服務(wù)響應(yīng)。
-
負(fù)載均衡調(diào)度算法:LVS支持多種負(fù)載均衡調(diào)度算法,用于確定請(qǐng)求應(yīng)該轉(zhuǎn)發(fā)到哪個(gè)后端服務(wù)器上。常見(jiàn)的調(diào)度算法包括輪詢(xún)(Round Robin)、最少連接(Least Connection)、源地址哈希(Source IP Hash)等。通過(guò)選擇適當(dāng)?shù)恼{(diào)度算法,可以根據(jù)應(yīng)用需求在后端服務(wù)器之間平衡負(fù)載。
LVS的工作原理:
-
客戶端發(fā)送請(qǐng)求:
客戶端向LVS負(fù)載均衡器發(fā)送請(qǐng)求,請(qǐng)求的目標(biāo)是負(fù)載均衡器的虛擬IP(Virtual IP)地址。 -
負(fù)載均衡器接收請(qǐng)求:
負(fù)載均衡器接收到來(lái)自客戶端的請(qǐng)求,并根據(jù)預(yù)先配置的負(fù)載均衡算法選擇一個(gè)后端服務(wù)器來(lái)處理該請(qǐng)求。 -
負(fù)載均衡算法選擇后端服務(wù)器:
LVS支持多種負(fù)載均衡調(diào)度算法,例如輪詢(xún)(Round Robin)、最少連接(Least Connection)、源地址哈希(Source IP Hash)等。根據(jù)指定的算法,負(fù)載均衡器將請(qǐng)求轉(zhuǎn)發(fā)給一個(gè)后端服務(wù)器。選擇后端服務(wù)器時(shí)考慮服務(wù)器的負(fù)載情況、可用性和性能指標(biāo)。 -
請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器:
負(fù)載均衡器將客戶端請(qǐng)求轉(zhuǎn)發(fā)給選定的后端服務(wù)器。根據(jù)配置的調(diào)度算法,請(qǐng)求可能會(huì)被平均地分發(fā)到多個(gè)后端服務(wù)器上,從而實(shí)現(xiàn)負(fù)載均衡。 -
后端服務(wù)器處理請(qǐng)求:
后端服務(wù)器接收到來(lái)自負(fù)載均衡器的請(qǐng)求,并處理該請(qǐng)求。后端服務(wù)器執(zhí)行請(qǐng)求所需的任務(wù),并生成響應(yīng)。 -
響應(yīng)返回至客戶端:
后端服務(wù)器生成的響應(yīng)流量經(jīng)過(guò)負(fù)載均衡器,負(fù)載均衡器會(huì)將響應(yīng)的目標(biāo)地址重寫(xiě)為自己的地址,并將響應(yīng)返回給客戶端。 -
會(huì)話保持(可選):
為了保持會(huì)話的連貫性,LVS可通過(guò)會(huì)話保持功能使來(lái)自同一客戶端的請(qǐng)求始終被分發(fā)到同一后端服務(wù)器上。這可以通過(guò)IP地址、Cookie等方式實(shí)現(xiàn)。
LVS負(fù)載均衡方式:
- NAT(Network Address Translation)方式:負(fù)載均衡器位于前端與客戶端之間,調(diào)度器將客戶端請(qǐng)求的源IP地址和端口轉(zhuǎn)換為自己的IP地址和端口,并將請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器。后端服務(wù)器的響應(yīng)經(jīng)過(guò)調(diào)度器再轉(zhuǎn)發(fā)回客戶端。
- DR(Direct Routing)方式:負(fù)載均衡器位于前端與后端服務(wù)器之間,不會(huì)修改流量的目標(biāo)地址。調(diào)度器將客戶端請(qǐng)求的目標(biāo)IP地址和端口保持不變,直接將請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器。后端服務(wù)器的響應(yīng)不經(jīng)過(guò)調(diào)度器,直接返回給客戶端。
- TUN(IP Tunneling)方式:類(lèi)似于DR方式,負(fù)載均衡器位于前端與后端服務(wù)器之間,并使用IP隧道將請(qǐng)求從客戶端傳遞到后端服務(wù)器。負(fù)載均衡器將請(qǐng)求封裝在一個(gè)新的IP包中,并將其發(fā)送到目標(biāo)后端服務(wù)器上。后端服務(wù)器接收到請(qǐng)求后,解析IP隧道并響應(yīng)客戶端。也就是通過(guò)創(chuàng)建虛擬設(shè)備將數(shù)據(jù)包從調(diào)度器轉(zhuǎn)發(fā)到后端服務(wù)器。
LVS名詞解釋?zhuān)?/p>
- VS:Virtual Server 虛擬服務(wù)器,通常是分發(fā)器,負(fù)載均衡集群對(duì)外提供的IP+Por
- RS:Real Server 實(shí)際提供服務(wù)的真實(shí)服務(wù)器,可被DS劃分到一個(gè)或多個(gè)負(fù)載均衡組.
-
DS:Director Server 負(fù)載均衡器,將流量分發(fā)到后端的真實(shí)服務(wù)器上.
-
BDS:Backup Director Server,為了保證負(fù)載均衡器的高可用衍生出的備份.
- CIP:Client IP 客戶的客戶端IP。
- VIP:Virtual Server IP,VS的IP。client請(qǐng)求服務(wù)的DIP(destination IP address),定義在DS上,client或其網(wǎng)關(guān)需要有其路由
- DIP:Director IP 分發(fā)器的IP
- RIP:Real Server IP 真實(shí)服務(wù)器的IP
CIP <–> VIP == DIP <–> RIP 客戶端訪問(wèn)VIP,DIP將請(qǐng)求轉(zhuǎn)發(fā)到RIP
1、NAT(Network Address Translation):
NAT 是通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換的方法來(lái)實(shí)現(xiàn)調(diào)度的。
???
-
客戶端發(fā)送請(qǐng)求:客戶端向LVS負(fù)載均衡器發(fā)送請(qǐng)求,請(qǐng)求的目標(biāo)地址是VIP。
-
負(fù)載均衡器接收請(qǐng)求:負(fù)載均衡器接收到來(lái)自客戶端的請(qǐng)求,該請(qǐng)求VIP和CIP。
-
NAT轉(zhuǎn)換:NAT模式下,負(fù)載均衡器會(huì)將請(qǐng)求包的VIP進(jìn)行NAT轉(zhuǎn)換,將其替換為負(fù)載均衡器的RIP。這樣,在后續(xù)的網(wǎng)絡(luò)通信中,響應(yīng)流量將通過(guò)負(fù)載均衡器經(jīng)過(guò)NAT轉(zhuǎn)換返回給客戶端。
-
負(fù)載均衡算法選擇后端服務(wù)器:LVS負(fù)載均衡器根據(jù)預(yù)先配置的負(fù)載均衡算法選擇一個(gè)后端服務(wù)器來(lái)處理該請(qǐng)求。
-
請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器:負(fù)載均衡器將經(jīng)過(guò)NAT轉(zhuǎn)換后的請(qǐng)求轉(zhuǎn)發(fā)給選定的后端服務(wù)器。后端服務(wù)器接收到請(qǐng)求后,將其視為來(lái)自負(fù)載均衡器的請(qǐng)求。
-
后端服務(wù)器處理請(qǐng)求, 并生成響應(yīng)
-
響應(yīng)返回至客戶端:響應(yīng)經(jīng)過(guò)負(fù)載均衡器,負(fù)載均衡器進(jìn)行NAT轉(zhuǎn)換將響應(yīng)的RIP替換為VIP,然后將響應(yīng)返回給客戶端。
2、DR(Direct Routing):
DR通過(guò)修改目標(biāo)MAC地址來(lái)實(shí)現(xiàn)調(diào)度。DR 模式中,input經(jīng)過(guò)DR,output不經(jīng)過(guò)DR。為了響應(yīng)對(duì)整個(gè)群集的訪問(wèn),DS與RS都需要配置有VIP地址, 且DS與RS要處在同一網(wǎng)段。
?
-
客戶端發(fā)送請(qǐng)求:客戶端向LVS負(fù)載均衡器發(fā)送請(qǐng)求,請(qǐng)求的目標(biāo)地址是VIP。
-
負(fù)載均衡器接收請(qǐng)求,并根據(jù)預(yù)先配置的負(fù)載均衡算法選擇一個(gè)后端服務(wù)器來(lái)處理該請(qǐng)求。
-
負(fù)載均衡器修改目標(biāo)MAC地址:在DR模式下,負(fù)載均衡器會(huì)修改請(qǐng)求數(shù)據(jù)包的目標(biāo)MAC地址為所選后端服務(wù)器的MAC地址,并將數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務(wù)器。這樣,數(shù)據(jù)包越過(guò)負(fù)載均衡器,直接到達(dá)后端服務(wù)器。
-
后端服務(wù)器接收到來(lái)自負(fù)載均衡器的請(qǐng)求,并進(jìn)行相應(yīng)的處理和計(jì)算。
-
后端服務(wù)器生成響應(yīng),并將響應(yīng)發(fā)送回客戶端。在DR模式下,響應(yīng)數(shù)據(jù)包將直接發(fā)送到客戶端,繞過(guò)負(fù)載均衡器。
3、TUN(IP Tunneling):
????????在DR方式下,DS只修改數(shù)據(jù)包中數(shù)據(jù)鏈路層的MAC信息,IP信息不修改。于是DS通過(guò)MAC來(lái)定位RS,由此限制了DS和RS要處于同一網(wǎng)段。那么如果DS可以不通過(guò)MAC就可以定位到RS的話,也就不用限制RS和DS處于同一網(wǎng)段了。
????????TUN模式下,負(fù)載均衡器通過(guò)建立IP隧道,將請(qǐng)求和響應(yīng)數(shù)據(jù)通過(guò)隧道在負(fù)載均衡器和后端服務(wù)器之間進(jìn)行傳輸。IP隧道可以理解為IP in IP, 即發(fā)送方在IP頭的外部再包裝一個(gè)IP頭,接收方先解出第一層IP頭,然后再按照正常流程處理剩下的的IP數(shù)據(jù)包。
?
- 客戶端發(fā)送請(qǐng)求:客戶端向LVS負(fù)載均衡器發(fā)送請(qǐng)求,請(qǐng)求的目標(biāo)地址是VIP。
-
負(fù)載均衡器接收請(qǐng)求:負(fù)載均衡器接收到來(lái)自客戶端的請(qǐng)求,并根據(jù)預(yù)先配置的負(fù)載均衡算法選擇一個(gè)后端服務(wù)器來(lái)處理該請(qǐng)求。
- 負(fù)載均衡器建立隧道:在TUN模式下,負(fù)載均衡器會(huì)與所選后端服務(wù)器建立一個(gè)IP隧道,以便在負(fù)載均衡器和后端服務(wù)器之間傳輸請(qǐng)求和響應(yīng)數(shù)據(jù)。
-
負(fù)載均衡器轉(zhuǎn)發(fā)請(qǐng)求:負(fù)載均衡器將來(lái)自客戶端的請(qǐng)求打包,并通過(guò)隧道發(fā)送給后端服務(wù)器。
-
RS發(fā)現(xiàn)請(qǐng)求報(bào)文的IP地址是自己的eth0的IP地址,就剝掉IP隧道包頭。
-
RS處理請(qǐng)求,生成響應(yīng),并將響應(yīng)通過(guò)隧道發(fā)送回客戶端。
????????LVS架構(gòu)可以提供高性能和高可用性的負(fù)載均衡解決方案。通過(guò)將客戶端請(qǐng)求分發(fā)到后端服務(wù)器上的多個(gè)節(jié)點(diǎn),可以平衡系統(tǒng)負(fù)載并提供故障容錯(cuò)能力。同時(shí),LVS具有開(kāi)源、靈活和可定制的特點(diǎn),可以根據(jù)實(shí)際需求進(jìn)行配置和擴(kuò)展。
????????需要注意的是,LVS只提供負(fù)載均衡功能,并不處理應(yīng)用層的邏輯。應(yīng)用層的會(huì)話維護(hù)、數(shù)據(jù)同步等需要通過(guò)其他方式來(lái)實(shí)現(xiàn),如使用Session Persistence和數(shù)據(jù)庫(kù)復(fù)制等。
LVS NAT模式配置:?
環(huán)境說(shuō)明:
主機(jī)名稱(chēng) | ?網(wǎng)卡信息(ens160為nat、ens192為僅主機(jī)) | 安裝應(yīng)用? | 系統(tǒng) |
---|---|---|---|
Client客戶端 | 192.168.100.200(ens160) | 無(wú) | RHEL8 |
DS | DIP:192.168.253.142(ens160)–VIP:192.168.227.128(ens224)?? | ipvsadm | RHEL8 |
RS1 | RIP:192.168.253.143(ens160)–192.168.253.142 | httpd | RHEL8 |
RS2 | RIP:192.168.253.144(ens160)–192.168.253.142 | httpd | RHEL8 |
1、DR、RS1、RS2三臺(tái)主機(jī)都關(guān)閉防火墻和selinux
DS:
[root@DS ~]# systemctl stop firewalld
[root@DS ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@DR ~]# vim /etc/sysconfig/selinux
SELINUX=disabled
RS1
[root@RS1 ~]# systemctl stop firewalld
[root@RS1 ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@RS1 ~]# vi /etc/sysconfig/selinux
SELINUX=disabled
RS2
[root@RS2 ~]# systemctl stop firewalld
[root@RS2 ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@RS2 ~]# vi /etc/sysconfig/selinux
SELINUX=disabled
2、配置IP信息
DS:添加ens224網(wǎng)卡信息
[root@DR ~]# nmcli connection add con-name ens224 ifname ens224 type ethernet
Connection 'ens224' (922bcff0-35fd-43c2-a608-edb0d58ccec3) successfully added.
[root@DR ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
IPADDR=192.168.253.142
PREFIX=24
DNS1=8.8.8.8
[root@DR ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens224
IPADDR=182.168.227.128
PREFIX=24
DNS1=8.8.8.8
[root@DR ~]# systemctl restart NetworkManager
[root@DR ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@DR ~]# nmcli connection up ens224
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
RS1:?
[root@RS1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
IPADDR=192.168.253.143
PREFIX=24
GATEWAY=192.168.253.142
DNS1=8.8.8.8
[root@RS1 ~]# systemctl restart NetworkManager
[root@RS1 ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
RS2:
[root@RS2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
IPADDR=192.168.253.144
PREFIX=24
GATEWAY=192.168.253.142
DNS1=8.8.8.8
[root@RS2 ~]# systemctl restart NetworkManager
[root@RS2 ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
3、后端RS1和RS2部署WEB服務(wù)器
[root@RS1 ~]# yum -y install httpd
[root@RS1 ~]# echo RS1 > /var/www/html/index.html
[root@RS1 ~]# systemctl restart httpd
[root@RS1 ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@RS2 ~]# yum -y install httpd
[root@RS2 ~]# echo RS2 > /var/www/html/index.html
[root@RS2 ~]# systemctl restart httpd
[root@RS2 ~]# systemctl enable httpd
4、配置DS
4.1、開(kāi)啟IP轉(zhuǎn)發(fā)功能
[root@DR ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@DR ~]# sysctl -p
net.ipv4.ip_forward = 1
4.2、安裝ipvsadm并添加規(guī)則
[root@DR ~]# yum -y install ipvsadm
[root@DR ~]# ipvsadm -A -t 192.168.227.128:80 -s rr
[root@DR ~]# ipvsadm -a -t 192.168.227.128:80 -r 192.168.253.143:80 -m
[root@DR ~]# ipvsadm -a -t 192.168.227.128:80 -r 192.168.253.144:80 -m
[root@DR ~]# 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.227.128:80 rr
-> 192.168.253.143:80 Masq 1 0 0
-> 192.168.253.144:80 Masq 1 0 0
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# systemctl restart ipvsadm.service
[root@DR ~]# systemctl enable ipvsadm.service
Created symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service → /usr/lib/systemd/system/ipvsadm.service.
5、客戶端測(cè)試:?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-625476.html
[root@RS3 ~]# curl http://192.168.227.128
RS2
[root@RS3 ~]# curl http://192.168.227.128
RS1
[root@RS3 ~]# curl http://192.168.227.128
RS2
[root@RS3 ~]# curl http://192.168.227.128
RS1
配置信息轉(zhuǎn)載自:?LVS 教程文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-625476.html
到了這里,關(guān)于Linux lvs負(fù)載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!