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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LVS实现web服务的负载均衡

發(fā)布時(shí)間:2025/4/5 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LVS实现web服务的负载均衡 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本節(jié)索引


  • Ipvsadm工具介紹

  • Web服務(wù)的負(fù)載均衡

  • 實(shí)現(xiàn)http與https的同時(shí)調(diào)度


1 ipvsadm工具


我們知道LVS項(xiàng)目已提供了一個(gè)實(shí)現(xiàn)可伸縮網(wǎng)絡(luò)服務(wù)的Linux Virtual Server框架。在LVS框架中,提供了含有三種"IP負(fù)載均衡技術(shù)"的IP虛擬服務(wù)器軟件"IPVS"、"基于內(nèi)容請(qǐng)求分發(fā)的內(nèi)核Layer-7交 換機(jī)KTCPVS"和"集群管理軟件"。這里主要說說”IP負(fù)載均衡技術(shù)”他的管理工具就是ipvsadm。

1)ipvsadm語法

ipvsadm?-A|E?-t|u|f?service-address?[-s?scheduler]?[-p?[timeout]]?[-M?netmask]?[-b?sched-flags]ipvsadm?-D?-t|u|f?service-addressipvsadm?-Cipvsadm?-Ripvsadm?-S?[-n]ipvsadm?-a|e?-t|u|f?service-address?-r?server-address?[-g|i|m]?[-w?weight]?[-x?upper]?[-y?lower]ipvsadm?-d?-t|u|f?service-address?-r?server-addressipvsadm?-L|l?[options]ipvsadm?-Z?[-t|u|f?service-address]ipvsadm?--set?tcp?tcpfin?udpipvsadm?--start-daemon?state?[--mcast-interface?interface]?[--syncid?syncid]ipvsadm?--stop-daemon?stateipvsadm?-h

2)Ipvsadm選項(xiàng)介紹

選項(xiàng)
說明
-A (--add-service)在內(nèi)核的虛擬服務(wù)器列表中添加一條新的虛擬IP記錄。也就是增加一臺(tái)新的虛擬服務(wù)器。虛擬IP也就是虛擬服務(wù)器的IP地址。
-E (--edit-service)編輯內(nèi)核虛擬服務(wù)器列表中的一條虛擬服務(wù)器記錄
-D (--delete-service)刪除內(nèi)核虛擬服務(wù)器列表中的一條虛擬服務(wù)器記錄
-C (--clear)清除內(nèi)核虛擬服務(wù)器列表中的所有規(guī)則
-R (--restore)恢復(fù)虛擬服務(wù)器規(guī)則
-S (--save)保存虛擬服務(wù)器規(guī)則,輸出為-R 選項(xiàng)可讀的格式
-a (--add-server)在內(nèi)核虛擬服務(wù)器列表的一條記錄里添加一條新的Real Server記錄。也就是在一個(gè)虛擬服務(wù)器中增加一臺(tái)新的Real Server
-e (--edit-server)編輯一條虛擬服務(wù)器記錄中的某條Real Server記錄
-d (--delete-server)刪除一條虛擬服務(wù)器記錄中的某條Real Server記錄
-L|-l –list顯示內(nèi)核中虛擬服務(wù)器列
-t說明虛擬服務(wù)器提供的是tcp服務(wù),此選項(xiàng)后面跟如下格式:[virtual-service-address:port] or [real-server-ip:port]
-u說明虛擬服務(wù)器提供的是udp服務(wù),此選項(xiàng)后面跟如下格式:[virtual-service-address:port] or [real-server-ip:port]
-f fwmar說明是經(jīng)過iptables標(biāo)記過的服務(wù)類型
-s此選項(xiàng)后面跟LVS使用的調(diào)度算法;有這樣幾個(gè)選項(xiàng):rr|wrr|lc|wlc|lblc|lblcr|dh|sh。默認(rèn)的調(diào)度算法是: wlc
-p? [timeout]在某個(gè)Real Server上持續(xù)的服務(wù)時(shí)間。也就是說來自同一個(gè)用戶的多次請(qǐng)求,將被同一個(gè)Real Server處理。此參數(shù)一般用于有動(dòng)態(tài)請(qǐng)求的操作中,timeout的默認(rèn)值為360s(幫助文檔寫的是300s)。例如:-p 100,表示持續(xù)服務(wù)時(shí)間為00s。
-r指定Real Server的IP地址,此選項(xiàng)后面跟如下格式:[real-server-ip:port]
-g (--gatewaying)指定LVS 的工作模式為直接路由模式(此模式是LVS 默認(rèn)工作模式)
-i (-ipip)指定LVS 的工作模式為隧道模式
-m (--masquerading)指定LVS 的工作模式為NAT模式
-w (--weight) weight指定Real Server的權(quán)值
-c (--connection)顯示LVS目前的連接信息 例如:ipvsadm -L -c
-L --timeout顯示“tcp tcpfin udp”的timeout值,如:ipvsadm -L --timeout
-L --daemon顯示同步守護(hù)進(jìn)程狀態(tài),例如:ipvsadm -L –daemon
-L? --stats顯示統(tǒng)計(jì)信息,例如:ipvsadm -L –stats
-L? --rate顯示速率信息,例如:ipvsadm -L? --rate

3)說明: 保存添加的虛擬ip記錄和ipvsadm的規(guī)則可以使用service ipvsadm save,還可以用-S或--save。清除所有記錄和規(guī)則除了使用-C,還以使用--clear。


2 web服務(wù)的負(fù)載均衡


1)實(shí)驗(yàn)準(zhǔn)備:準(zhǔn)備4臺(tái)虛擬機(jī)

@@一臺(tái)作為VS服務(wù)器

@@一臺(tái)作為客戶端

@@兩臺(tái)主機(jī)作為web服務(wù)器,當(dāng)然了,不只是web服務(wù)器。這里只是為了實(shí)驗(yàn)方便,web服務(wù)最常見,??

2)網(wǎng)絡(luò)拓?fù)浼暗刂芬?guī)劃

3)環(huán)境配置

為了實(shí)驗(yàn)?zāi)茼樌麑?shí)現(xiàn),關(guān)閉防火墻和selinux;注意這只是實(shí)驗(yàn)環(huán)境中。

[root@vin?~]#?iptables?-F?????????#?清空防火墻規(guī)則 [root@vin?~]#?setenforce?0????????#?臨時(shí)禁用selinux [root@vin?~]#

4)web服務(wù)器配置

為了讓我們看清楚LVS是如何調(diào)度的,我們特意將兩臺(tái)web服務(wù)器的index.html頁面設(shè)置的不一樣。

@@安裝服務(wù):

[root@vin?~]#?yum?install?httpd?-y? [root@vin?~]#?echo?"Linux?web1"?>?/var/www/html/index.html???#?修改主頁,web2的主頁內(nèi)容修改為L(zhǎng)inux?web2

@@設(shè)置路由:只留一個(gè)網(wǎng)卡并且將網(wǎng)關(guān)指向Director

[root@vin?~]#?route?-n Kernel?IP?routing?table Destination?????Gateway?????????Genmask?????????Flags?Metric?Ref????Use?Iface 192.168.14.0????0.0.0.0?????????255.255.255.0???U?????0??????0????????0?ens33 0.0.0.0?????????192.168.14.77???0.0.0.0?????????UG????0??????0????????0?ens33

5)VS調(diào)度器設(shè)置

@@ 安裝ipvsadm工具

[root@vin?~]#?yum?install?ipvsadm?-y????????#?yum安裝,不過我已經(jīng)安裝了 Loaded?plugins:?fastestmirror Loading?mirror?speeds?from?cached?hostfile Package?ipvsadm-1.27-7.el7.x86_64?already?installed?and?latest?version Nothing?to?do? [root@vin?~]#?mount?/dev/sr0?/mnt?????????????#?掛載光盤 mount:?/dev/sr0?is?write-protected,?mounting?read-only [root@vin?~]#?rpm?-ivh?/mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm???????#?rpm安裝 [root@vin?~]#

@@ 開啟核心轉(zhuǎn)發(fā)功能

[root@vin?~]#?echo?1?>?/proc/sys/net/ipv4/ip_forword

@@ 定義集群服務(wù)

[root@vin?~]#?ipvsadm?-A?-t?172.18.14.100:80?-s?wrr [root@vin?~]#?ipvsadm?-a?-t?172.18.14.100:80?-r?192.168.14.55?-m?-w?3?????#?定義web1的權(quán)重為3 [root@vin?~]#?ipvsadm?-a?-t?172.18.14.100:80?-r?192.168.14.66?-m?-w?1?????#?定義web2的權(quán)重為1(默認(rèn)也是1;可省略) [root@vin?~]#?ipvsadm?-Ln?????????????????????????#?查看幾區(qū)服務(wù)????? IP?Virtual?Server?version?1.2.1?(size=4096) Prot?LocalAddress:Port?Scheduler?Flags->?RemoteAddress:Port???????????Forward?Weight?ActiveConn?InActConn TCP??172.18.14.100:80?wrr->?192.168.14.55:80?????????????Masq????3??????0??????????0?->?192.168.21.66:80?????????????Masq????1??????0??????????0

6)測(cè)試

在客戶端使用for循環(huán)向VIP發(fā)起http訪問請(qǐng)求

[root@vint?~]#?for?i?in?{1..10};do?curl?Linux?web1 Linux?web1 Linux?web2 Linux?web2 Linux?web2 Linux?web1 Linux?web2 Linux?web2 Linux?web2 Linux?web1 Linux?web2

7)結(jié)果分析

觀察訪問結(jié)果,我們發(fā)現(xiàn),LVS根據(jù)我們的算法WRR(加權(quán)輪詢)及對(duì)應(yīng)的權(quán)重(3,1)進(jìn)行了調(diào)度。

?

3 實(shí)現(xiàn)http與https同時(shí)調(diào)度


方案一:同過添加兩個(gè)集群服務(wù),分別針對(duì)http和https的訪問

1)原理剖析:

要實(shí)現(xiàn)http(上面我們已經(jīng)實(shí)現(xiàn)了)與https的調(diào)度,我們第一步要做的就是:為兩臺(tái)服務(wù)提供CA證書,而且這兩個(gè)服務(wù)器上的CA證書必須完全相同(可以采取先給一個(gè)授權(quán),在復(fù)制到另外一臺(tái)服務(wù)器上),這里我們可以使用Director作為根CA的頒發(fā)機(jī)構(gòu)來頒發(fā)證書,也可以使用web服務(wù)器的自簽名證書。然后我們?cè)赩S服務(wù)器上在添加一個(gè)用于https進(jìn)行調(diào)度的集群服務(wù),從而實(shí)現(xiàn)調(diào)度。

2)在web服務(wù)器上實(shí)現(xiàn)https服務(wù)

@@生成證書:這里就不在說怎么實(shí)現(xiàn)CA了,請(qǐng)參考博客:http://vinsent.blog.51cto.com/13116656/1964034

3)VS上添加集群服務(wù)

[root@vin?~]#?ipvsadm?-A?-t?172.18.14.100:443?-s?wrr [root@vin?~]#?ipvsadm?-a?-t?172.18.14.100:443?-r?192.168.14.55?-m?-w?3?????#?定義web1的權(quán)重為3 [root@vin?~]#?ipvsadm?-a?-t?172.18.14.100:443?-r?192.168.14.66?-m?-w?1?????#?定義web2的權(quán)重為1(默認(rèn)也是1;可省略) [root@vin?~]#?ipvsadm?-Ln?????????????????????????#?查看幾個(gè)集群服務(wù)????? IP?Virtual?Server?version?1.2.1?(size=4096) Prot?LocalAddress:Port?Scheduler?Flags->?RemoteAddress:Port???????????Forward?Weight?ActiveConn?InActConn TCP??172.18.14.100:80?wrr->?192.168.14.55:80?????????????Masq????3??????0??????????0?->?192.168.21.66:80?????????????Masq????1??????0??????????0 TCP??172.18.14.100:443?wrr->?192.168.14.55:443?????????????Masq????3??????0??????????0?->?192.168.21.66:443?????????????Masq????1??????0??????????0

4)測(cè)試

[root@vint?~]#?for?i?in?{1..10};do?curl?http://172.18.14.100;curl


方案二:使用防火墻標(biāo)記,實(shí)現(xiàn)http與https的統(tǒng)一調(diào)度。

1)明晰思路

上面實(shí)現(xiàn)了http與https通過LVS的調(diào)度分別按相應(yīng)算法調(diào)度,但是他們的調(diào)度依然各是各的,我們?cè)趺茨茏孷S服務(wù)將http與https能夠看成一個(gè)服務(wù)進(jìn)行調(diào)度呢,此時(shí)我們想到了Netfilter中的MANGLE表,我們可以在防火墻上做策略,讓訪問我的https和http服務(wù)的請(qǐng)求給他們打上標(biāo)記MARK,這樣,在調(diào)度的時(shí)候,我們只需要根據(jù)MARK實(shí)現(xiàn)調(diào)度即可,至于他是究竟是http還是https我們便不在關(guān)心。

2)在VS上配置iptables規(guī)則

[root@vint?~]#?iptables?-F [root@vint?~]#?iptables?-F?-t?nat????#?保證防墻上沒有其他規(guī)則干擾;注意:這只是實(shí)驗(yàn)環(huán)境 [root@vint?~]#?iptables?-A?-t?mangle?PREROUTING?-p?tcp?-m?multiport?--dport?80,443?\ >-d?172.18.14.100?-j?MARK?--set-mark?10

3)設(shè)置LVS集群服務(wù)

由于我們將二者集合起來調(diào)度,在Director看來,http訪問與https訪問都是同一個(gè)服務(wù),所以我們想清空原有的集群服務(wù),在重新添加集群服務(wù)。

[root@vint?~]#?ipvsadm?-C [root@vint?~]#?ipvsadm?-Ln?????????#?確保規(guī)則清除 IP?Virtual?Server?version?1.2.1?(size=4096) Prot?LocalAddress:Port?Scheduler?Flags->?RemoteAddress:Port???????????Forward?Weight?ActiveConn?InActConn???? [root@vint?~]#?ipvsadm?-Z?????????#?清空計(jì)數(shù)器 [root@vin?~]#?ipvsadm?-A?-t?-f?10?-s?wrr [root@vin?~]#?ipvsadm?-a?-t?-f?-r?192.168.14.55?-m?-w?3?????#?定義web1的權(quán)重為3 [root@vin?~]#?ipvsadm?-a?-t?-f?-r?192.168.14.66?-m?-w?1?????#?定義web2的權(quán)重為1(默認(rèn)也是1;可省略)

4)測(cè)試

[root@vint?~]#?for?i?in?{1..10};do?curl?http://172.18.14.100;curl?https://172.18.14.100;done


筆者便簽


感謝您能讀到最后,如果這篇文章能讓你有所收獲,那將是我的榮幸,如果沒能幫到你,那就在送你一句話,與君共勉:If a thing is worth doing it is worth worth doing well ---- 事情值得做,就值得好好做。



轉(zhuǎn)載于:https://blog.51cto.com/vinsent/1975378

總結(jié)

以上是生活随笔為你收集整理的LVS实现web服务的负载均衡的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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