日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux LB 集群知识、如何用 LVS 方式实现 LB 集群?

發(fā)布時(shí)間:2025/4/16 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux LB 集群知识、如何用 LVS 方式实现 LB 集群? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

LB負(fù)載均衡的目的是為了提高訪問(wèn)的并發(fā)性和服務(wù)器的性能。實(shí)現(xiàn) LB 的方式主要有軟件方式和硬件方式。軟件方式實(shí)現(xiàn)的軟件有LVS工作于傳輸層、nginx工作于應(yīng)用層haproxy工作于傳輸層和應(yīng)用層硬件方式實(shí)現(xiàn)的軟件有 BIG-IPF5,A10A10等。這里主要介紹軟件方式實(shí)現(xiàn) LB。

lvs方式實(shí)現(xiàn) LB原理部分

一、lvs介紹

lvsLinux Virtual Server,Linux虛擬服務(wù)是工作在第四層的一款軟件。是工作在內(nèi)核的netfilter模塊上的類似于iptables的工作模型。它是一個(gè)前端調(diào)度器Director,由它來(lái)具體實(shí)現(xiàn)負(fù)載均衡。它的工作原理如下圖

幾個(gè)概念說(shuō)明

cip請(qǐng)求客戶端的 ip 地址。

vip是lvs調(diào)度器的 ip 地址通常也是客戶端請(qǐng)求服務(wù)的的目標(biāo) ip 地址。

dip: 是directory和后端 real serveer 之間通信使用的 ip 地址。

rip: 是提供真正服務(wù)的real server的 IP 地址。

Director是lvs的前端調(diào)度器是ipvs的核心組件。

Real Server: 是后端真正提供服務(wù)的服務(wù)器。

lvs在內(nèi)核中是由ipvs實(shí)現(xiàn)具體的數(shù)據(jù)包轉(zhuǎn)發(fā)包括軟發(fā)到后端那個(gè)real server、響應(yīng)報(bào)文如何工作在netfilter的INPUT鏈上在此處決定是否進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā)。可以使用ipvsadm工具配置 ipvs 規(guī)則。

二、lvs的調(diào)度算法(Scheduler)

調(diào)度算法是在Directory轉(zhuǎn)發(fā)集群數(shù)包的時(shí)候使用的具體算法目的是為了選擇哪個(gè)后端Real Server服務(wù)器。ipvs代碼必須提供的調(diào)度方法。

如何查看自己的內(nèi)核是否支持ipvs功能以及支持的算法

常見(jiàn)的算法有如下

靜態(tài)方法僅考慮調(diào)度算法進(jìn)行調(diào)度

RR: round robin、WRR: weighted 輪詢 、加權(quán)輪詢實(shí)現(xiàn)了起點(diǎn)公平。新的連接請(qǐng)求被輪流分配至各RealServer算法的優(yōu)點(diǎn)是其簡(jiǎn)潔性它無(wú)需記錄當(dāng)前所有連接的狀態(tài)所以它是一種無(wú)狀態(tài)調(diào)度。輪叫調(diào)度算法假設(shè)所有服務(wù)器處理性能均相同不管服務(wù)器的當(dāng)前連接數(shù)和響應(yīng)速度。該算法相對(duì)簡(jiǎn)單不適用于服務(wù)器組中處理性能不一的情況而且當(dāng)請(qǐng)求服務(wù)時(shí)間變化比較大時(shí)輪叫調(diào)度算法容易導(dǎo)致服務(wù)器間的負(fù)載不平衡

SHSource Hash 源地址hash,目的是session保持。意義來(lái)源于同一源地址的CIP請(qǐng)求會(huì)被定向到同一RS。它根據(jù)請(qǐng)求的源IP地址作為散列鍵Hash Key從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器若該服務(wù)器是可用的且未超載將請(qǐng)求發(fā)送到該服務(wù)器否則返回空。它采用的散列函數(shù)與目標(biāo)地址散列調(diào)度算法的相同。除了將請(qǐng)求的目標(biāo)IP地址換成請(qǐng)求的源IP地址外它的算法流程與目標(biāo)地址散列調(diào)度算法的基本相似。在實(shí)際應(yīng)用中源地址散列調(diào)度和目標(biāo)地址散列調(diào)度可以結(jié)合使用在防火墻集群中它們可以保證整個(gè)系統(tǒng)的唯一出入口。

DH: Destination Hash 目標(biāo)地址Hash。是針對(duì)目標(biāo)IP地址的負(fù)載均衡但它是一種靜態(tài)映射算法通過(guò)一個(gè)散列Hash函數(shù)將一個(gè)目標(biāo)IP地址映射到一臺(tái)服務(wù)器。目標(biāo)地址散列調(diào)度算法先根據(jù)請(qǐng)求的目標(biāo)IP地址作為散列鍵Hash Key從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器若該服務(wù)器是可用的且未超載將請(qǐng)求發(fā)送到該服務(wù)器否則返回空。

動(dòng)態(tài)方法根據(jù)調(diào)度算法和當(dāng)前RS的負(fù)載情況進(jìn)行調(diào)度,講究結(jié)果公平

LC: Least Connection 最少連接 如何監(jiān)控一般情況是根據(jù)tcp協(xié)議的計(jì)數(shù)等相關(guān)信息判斷

??? Overhead = Active * 256 + Inactive 表示負(fù)載情況越小說(shuō)明負(fù)載越小,會(huì)優(yōu)先選擇

WLC: weigthed

??? Overhead = (Active * 256 + Inactive)/weight 默認(rèn)機(jī)制

SED: shortest expection dalay 最短期望連接

??? Overhead = (Actived + 1)/weight目的是為了讓權(quán)重大的優(yōu)先匹配。問(wèn)題權(quán)重小的可能一直空的。

NQ: Never Quene 工作機(jī)制是先每一個(gè) Real Server 都請(qǐng)求一次。

LBLC: locality-based Least connection

LBLCR:? Replicated LBLC,帶復(fù)制的LBLC

三、lvs的工作模型

工作模型可以這么理解就是 LB 的Real Server接收到報(bào)文到底以哪種方式響應(yīng)給客戶端。lvs原生態(tài)支持的類型有NAT網(wǎng)絡(luò)地址轉(zhuǎn)換、DR直接路由、TUN隧道。

NAT模型的工作原理

nat特點(diǎn) ? ? ?
1、RS使用私有地址網(wǎng)關(guān)為DIP ? ? ??
2、請(qǐng)求和響應(yīng)都要經(jīng)過(guò)direstor高負(fù)載時(shí)可能出現(xiàn)單點(diǎn)故障 ? ? ??
3、支持端口映射PNAT意思是director 和 real sever 的服務(wù)端口可以不在同一端口。 ? ? ??
4、RS可以使用任何操作系統(tǒng)

DR的原理大致如下

DR特點(diǎn) ? ? ?
1、要保證前端路由將目標(biāo)地址為VIP的報(bào)文統(tǒng)統(tǒng)發(fā)往Direstory,而不是RS ? ? ??
???? 1) 靜態(tài)地址綁定在前端路由器上配置一條靜態(tài)ARP地址解析將vip地址和DIP的MAC地址綁定。 ? ? ??
???? 2arptables?? 在realserver主機(jī)上設(shè)置arp解析規(guī)則只要收到vip地址的arp解析就不進(jìn)行解析 ? ? ??
???? 3)修改RS的內(nèi)核參數(shù)修改內(nèi)核參數(shù)arp_ignore arp_announce實(shí)現(xiàn)比解析vip的mac地址 ? ? ??
??????? 此時(shí)還要在 Real Server 添加一條靜態(tài)路由來(lái)實(shí)現(xiàn)響應(yīng)報(bào)文的源地址是vip

2、RS可以使用私有地址也可以使用公網(wǎng)地址 ? ? ?
3、RS跟Directory必須在同一物理網(wǎng)絡(luò)中。 ? ? ??
4、請(qǐng)求報(bào)文經(jīng)過(guò)Directory,但響應(yīng)報(bào)文必須不經(jīng)過(guò)Directory. ? ? ??
5、不支持端口映射 ? ? ??
6、RS可以使常見(jiàn)的OS支持arptables ? ? ??
7、RS的網(wǎng)關(guān)不會(huì)指向DIP

TUN的大致原理

TUN特點(diǎn)IP隧道 將IP首部通過(guò)IP首部隧道傳送 ? ? ?
1、rip,vip,dip全部是公網(wǎng)地址 ? ? ??
2、rs的網(wǎng)關(guān)不會(huì)指向DIP ? ? ??
3、不支持端口映射 ? ? ??
4、請(qǐng)求報(bào)文經(jīng)過(guò)Directory,但響應(yīng)報(bào)文必須不經(jīng)過(guò)Directory。 ? ? ??
5、各個(gè)real server 必須支持隧道

補(bǔ)充隨著互聯(lián)網(wǎng)的出現(xiàn)了lvs的第四種模型。



FullNat模型是基于NAT模型的擴(kuò)展可實(shí)現(xiàn)局域網(wǎng)內(nèi)可以有子網(wǎng)的情況。實(shí)現(xiàn)方式同時(shí)修改請(qǐng)求報(bào)文的源地址和目標(biāo)地址。

NAT的優(yōu)點(diǎn)1)可以隱藏內(nèi)部rip地址安全2)配置簡(jiǎn)單

四、ipvs配置工具ipvadm

ipvsadm是配置ipvs規(guī)則的工具和iptables類似。

常用的用法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #?1、添加集群 ipvsadm?-A|E?-t|u|f?service-address?[-s?scheduler]?[-p?[timeout]]?[-M?netmask]?\ [--pe?persistence_engine] ????-A?添加集群??-E?修改集群 ????-t?tcp?協(xié)議??-u?udpx協(xié)議??-f?防火墻標(biāo)記 ????service-address:指的是vip的地址 ????-s?指明調(diào)度算法默認(rèn)是wlc #?2、刪除一個(gè)集群服務(wù) ipvsadm?-D?-t|u|f?service-address #?3、清空所有的規(guī)則 ipvsadm?-C #?4、導(dǎo)入ipvs規(guī)則相當(dāng)于ipvsadm-restore ipvsadm?-R? #?5、保存ipvs規(guī)則等價(jià)于?ipvsadm-save ipvsadm?-S?[-n] #6、將real?server?加入到定義好的集群服務(wù)中去 ipvsadm?-a|e?-t|u|f?service-address?-r?server-address?[options] ????-a?-e?添加、修改real?server到指定的集群中 ????-r?指定?real?server?的IP地址 #?7、刪除集群中的指定的real?sever ipvsadm?-d?-t|u|f?service-address?-r?server-address #?8、查看配置好的?ipvs?規(guī)則常與?-n?一起使用 ipvsadm?-L|l?[options]

常與的option的有

1 2 3 4 --gatewaying???-g?DR模型也是默認(rèn)的lvs類型gatewaying --ipip????-i?TUN模型??ipip?encapsulation?(tunneling) --masquerading?-mNAT模型?masquerading?(NAT) -w?指明權(quán)重

四、防護(hù)墻標(biāo)記和持久連接

1、防護(hù)墻標(biāo)記

借助netfilter的mangle將作為集群服務(wù)的請(qǐng)求報(bào)文打標(biāo)記在PREROUTING鏈上完成。這樣做的目的后者說(shuō)是好處是只要是防火墻標(biāo)記相同的就可以認(rèn)為同一集群服務(wù)。例如在訪問(wèn)web服務(wù)時(shí)有用http協(xié)議的也有用https協(xié)議的此時(shí)就需要在director處定義2個(gè)集群服務(wù)這樣可以實(shí)現(xiàn)功能。但是管理起來(lái)不方便防火墻標(biāo)記就可以解決這樣的困擾。

具體做法(例如將http 和 https 服務(wù)定義成統(tǒng)一的集群服務(wù))

1)iptables -t mangle -A PREROUTING -d {vip} -p tcp -m mulitport --dports 80 -j MARK --set-mark 10

2)基于mark定義集群服務(wù)

?? ipvsadm -A -f 10 -s rr

?? ipvsadm -a -f 10 -r {rip} -g -w 1

2、持久連接

持久連接是無(wú)論使用什么調(diào)度算法持久連接都能保證指定的一段時(shí)間內(nèi)來(lái)自同一客戶端的請(qǐng)求始終低定向到同個(gè)RS,其調(diào)度基準(zhǔn)是集群服務(wù)。持久連接時(shí)基于內(nèi)核中的持久連接模板persistent template來(lái)實(shí)現(xiàn)的基于ssl點(diǎn)對(duì)點(diǎn)實(shí)現(xiàn)全程加密實(shí)現(xiàn)數(shù)據(jù)安全。

常見(jiàn)的持久連接類型

PCC:持久客戶端連接

在基于tcp或udp定義集群服務(wù)時(shí)其端口為0。表示將來(lái)自客戶端的所有請(qǐng)求都轉(zhuǎn)發(fā)到后端的RS。基于客戶端持久連接時(shí)來(lái)自同一個(gè)client的所有請(qǐng)求都被轉(zhuǎn)發(fā)到同一RS.

示例ipvsadm -A -t vip:0 -p 60 -p指定持久連接的時(shí)間

PPC:持久端口連接

僅針對(duì)某一特定的服務(wù)啟用的持久服務(wù)。單服務(wù)調(diào)度各個(gè)集群分開(kāi)調(diào)度。

示例ipvsadm -A -t vip:80 -s rr -p 60

PFM:持久防火墻標(biāo)記

持久防火墻標(biāo)記單服務(wù)調(diào)度。可以通過(guò)防火墻標(biāo)記來(lái)定義一個(gè)集群的多個(gè)端口。

示例ipvsadm -A -f 10 -p 60

實(shí)踐部分

一、示例NAT模型

實(shí)驗(yàn)原理如下實(shí)驗(yàn)實(shí)現(xiàn)的目標(biāo)是實(shí)現(xiàn)通過(guò)訪問(wèn)Director實(shí)現(xiàn)Discuz的訪問(wèn)。真正實(shí)現(xiàn)的discuz服務(wù)地后端的Real Sever從而實(shí)現(xiàn)負(fù)載均衡的效果。此時(shí)就必須要有單獨(dú)的文件服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器分別來(lái)存儲(chǔ)像圖片等的非結(jié)構(gòu)數(shù)據(jù)和像賬號(hào)、密碼等的結(jié)構(gòu)化數(shù)據(jù)。

環(huán)境

操作系統(tǒng)CentOS 6.5 安裝在VMware虛擬機(jī)上

配置步驟

在172.16.10.16

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 一、配置NFS服務(wù)器 #?1、安裝客戶端軟件 yum?install?-y?nfs-utils #?2、提供共享目錄 mkdir?/data setfacl?-m?u:48:rwx?/data?-R?(id為48的用戶是rpm方式安裝httpd時(shí)的apache用戶) #?vim?/etc/exports /data/?172.16.0.0/24(rw) #?3、啟動(dòng)服務(wù) /etc/init.d/nfs?start #?以后使用?exports?-ar 二、安裝mysql #1、安裝mysql軟件這里使用rpm安裝 yum?install?mysql?mysql-sever?-y #?2、初始化數(shù)據(jù)庫(kù)這里不再詳細(xì)說(shuō)明 #?3、授權(quán)用戶 mysql>?CREATE?DATABASE?discuz; mysql>?GRANT?ALL?ON?discuz.*?TO?discuz@'172.16.%.%'?IDENTIFIED?BY?'123456';

在172.16.10.22

1 2 3 4 5 6 7 一、配置ip地址和網(wǎng)關(guān)信息 #?臨時(shí)配置 ifconfig?eth0?172.16.10.22/16?up route?add?default?gw?172.16.10.9 #?也可使用永久配置如下

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 二、部署discuz服務(wù) #?1、安裝軟件 yum?install?httpd?php?php-mysql? #?2、掛載NFS服務(wù) mount?-t?nfs?172.16.10.16:/data?/var/www/html #?解壓?discuz?源代碼將解壓后的upload目錄復(fù)制到此目錄 cp?upload?/var/www/html?-r #?修改屬主屬組 chown?apache.apache?/var/www/html/upload?-R #?3、安裝discuz #?不在詳述安裝時(shí)需要注意編碼問(wèn)題和數(shù)據(jù)庫(kù)連接時(shí)的問(wèn)題。其他可根據(jù)提示解決。

在172.16.10.33?

在172.16.10.33可參照172.16.10.22步驟可完成。

在Director 上172.16.10.9 192.168.1.66

1 2 3 4 5 #?配置ipvs規(guī)則 ipvsadm?-A?-t?192.168.1.66:80?-s?rr ipvsadm?-a?-t?192.168.1.66:80?-r?172.16.10.22:80?-m?-w?1 ipvsadm?-a?-t?192.168.1.66:80??-r?172.16.10.33:80?-m?-w?1

注意real sever和director的172.16.10.9屬于同一局域網(wǎng)中在VMware中可以使用如下方式配置

配置完成驗(yàn)證結(jié)果

二、示例DR模型

1、vip和rip在相同的網(wǎng)絡(luò)內(nèi)

實(shí)驗(yàn)原理圖如下實(shí)現(xiàn)的目標(biāo)是web服務(wù)。

解釋

arp_announce:如何通告本地地址

??? 0表示有arp請(qǐng)求時(shí)會(huì)通告本機(jī)所有網(wǎng)卡的mac地址。 默認(rèn)

??? 2 表示僅通過(guò)網(wǎng)絡(luò)直連的接口的地址

arp_ignore:表示如何響應(yīng)接收到的arp請(qǐng)求

??? 0 表示請(qǐng)求的地址可以通過(guò)其他網(wǎng)卡響應(yīng)? 默認(rèn)。

??? 1 表示僅在請(qǐng)求的地址必須在請(qǐng)求報(bào)文接口進(jìn)行響應(yīng)

在172.16.10.33中

1 2 3 4 5 6 7 ifconfig?eth0?172.16.10.22/16?up?#?這個(gè)也可以寫(xiě)到配置文件 echo?1?>?/proc/sys/net/ipv4/conf/lo/arp_ignore echo?1?>?/proc/sys/net/ipv4/conf/all/arp_ignore echo?2?>?/proc/sys/net/ipv4/conf/lo/arp_announce echo?2?>?/proc/sys/net/ipv4/conf/all/arp_announce ifconfig?lo:0?172.16.10.20?netmask?255.255.255.255?broadcast?172.16.10.20 route?add?-host?172.16.10.20??dev?lo:0

在172.16.10.22中

此配置可參照172.16.10.33配置配置基本相同

在Director172.16.10.9 172.16.10.20中

1 2 3 ipvsadm?-A?-t?172.16.10.20:80?-s?rr ipvsadm?-a?-t?172.16.10.20:80?-r?172.16.10.22:80?-g?-w?1 ipvsadm?-a?-t?172.16.10.20:80?-r?172.16.10.33:80?-g?-w?1

實(shí)驗(yàn)結(jié)果

三、防火墻標(biāo)記和持久連接

實(shí)驗(yàn)拓?fù)鋱D如下,實(shí)驗(yàn)實(shí)現(xiàn)的目的是:使用防火墻標(biāo)記實(shí)現(xiàn)將80和443端口實(shí)現(xiàn)持久連接。

在192.168.1.201上

1、提供IP地址和網(wǎng)關(guān)

2、安裝軟件

httpd軟件和mod_ssl軟件

3、提供測(cè)試頁(yè)面和ssl證書(shū)

編輯/etc/httpd/conf.d/ssl.conf

4、啟動(dòng)服務(wù)即可

在192.168.1.202上

在192.168.1.202上的配置于192.168.1.201類似ip地址和測(cè)試頁(yè)面不同。

在192.168.1.50172.16.0.50上

1 2 3 4 5 6 iptables?-t?mangle?-A?PREROUTING?-d?172.16.0.50?-p?tcp?-m?multiport?\ --dports?80,443?-j?MARK?--set-mark?10 ipvsadm?-A?-j?10?-s?rr ipvsadm?-a?-f?10?-r?192.168.1.201?-m ipvsadm?-a?-f?10?-r?192.168.1.202?-m

補(bǔ)充說(shuō)明

如何獲得證書(shū)可以參照http://guoting.blog.51cto.com/8886857/1535032。這里說(shuō)明一點(diǎn)的是RealServer1和RealServer2使用相同的證書(shū)。

結(jié)果說(shuō)明

在訪問(wèn)web服務(wù)時(shí)最主要的一個(gè)功能是會(huì)話保持 session如何利用lvs實(shí)現(xiàn)呢

此時(shí)只需要修改ipvs的規(guī)則如下

1 2 3 ipvsadm?-A?-f?10?-s?rr?-p?60 ipvsadm?-a?-f?10?-r?192.168.1.201?-m?-w?1? ipvsadm?-a?-f?10?-r?192.168.1.202?-m?-w?1

此時(shí)在訪問(wèn)到一個(gè)RealServer時(shí)會(huì)話會(huì)保持一段時(shí)間結(jié)果如下

至此所有配置完成。










本文轉(zhuǎn)自 羊木狼 51CTO博客,原文鏈接:http://blog.51cto.com/guoting/1550809,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Linux LB 集群知识、如何用 LVS 方式实现 LB 集群?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。