LVS(Linux Virtual Server)Linux 虛擬服務(wù)器介紹及配置(負載均衡系統(tǒng))
更新時間:2012年05月31日 23:32:57 作者:
LVS(Linux Virtual Server) 是Unix-like系統(tǒng)中的一個虛擬服務(wù)器,是國內(nèi)貢獻給開源組織的一個最優(yōu)秀的項目之一
一,簡介
LVS(Linux Virtual Server) 是Unix-like系統(tǒng)中的一個虛擬服務(wù)器,是國內(nèi)貢獻給開源組織的一個最優(yōu)秀的項目之一。LVS在Unix-like系統(tǒng)中
是作為一個前端(Director)存在的,又稱為調(diào)度器,它本身不提供任何的服務(wù),只是將通過互聯(lián)網(wǎng)進來的請求接受后再轉(zhuǎn)發(fā)給后臺運行的真正的
服務(wù)器(RealServer)進行處理,然后響應給客戶端。
LVS有兩個重要的組件:一個是IPVS,一個是IPVSADM。ipvs是LVS的核心組件,它本身只是一個框架,類似于iptables,工作于內(nèi)核空間中。
ipvsadm 是用來定義LVS的轉(zhuǎn)發(fā)規(guī)則的,工作于用戶空間中。
LVS有三種轉(zhuǎn)發(fā)類型:
1.LVS-NAT模型,稱為網(wǎng)絡(luò)地址轉(zhuǎn)換,實現(xiàn)起來比較簡單。
2.LVS-DR模型,稱為直接路由模型,應用比較廣泛。
3.LVS-TUN模型,稱為隧道模型。
二、LVS的三種模型的工作屬性:
1.LVS-NAT模型的工作屬性或特:
(1).所有的RealServer集群節(jié)點和前端調(diào)度器Director都要在同一個子網(wǎng)中
(2).通常情況下RealServer的IP地址(以下簡成RIP)為私有地址,便于RealServer集群節(jié)點之間進行通信
(3).通常情況下前端的Director有兩個IP地址,一個為VIP,是虛擬的IP地址,客戶端向此IP地址發(fā)起請求。
一個是DIP,是真正的Director的IP地址,RIP的網(wǎng)關(guān)要指向Director的DIP。
(4).這種模型可以實現(xiàn)端口映射
(5).RealServer的操作系統(tǒng)可以是任意操作系統(tǒng)
(6).前端的Director既要處理客戶端發(fā)起的請求,又要處理后臺RealServer的響應信息,將RealServer響應的信息再轉(zhuǎn)發(fā)給客戶端
(7).前端Director很容易成為整個集群系統(tǒng)性能的瓶頸。
2.LVS-DR模型的工作屬性或特征:此種模型通過MAC地址轉(zhuǎn)發(fā)工作,如何轉(zhuǎn)發(fā)后面將會介紹。
(1).所有的RealServer集群節(jié)點和前端調(diào)度器Director都要在同一個物理網(wǎng)絡(luò)中
(2).RIP可以使用公網(wǎng)的IP
(3).RIP的網(wǎng)關(guān)不能指向DIP
(4).前端的Director只處理客戶端的請求,然后將請求轉(zhuǎn)發(fā)給RealServer,由后臺的RealServer直接響應客戶端,不再經(jīng)過Director
(5).此種模型不支持端口映射
(6).RealServer可以使用大多數(shù)的操作系統(tǒng)
(7).此種模型的性能要優(yōu)于LVS-NAT
3.LVS-TUN模型的基本工作屬性或特征
(1).RealServer服務(wù)器與前端的Director可以在不同的網(wǎng)絡(luò)中
(2).RIP一定不能是私有IP
(3).前端的Director只處理客戶端的請求,然后將請求轉(zhuǎn)發(fā)給RealServer,由后臺的RealServer直接響應客戶端,不再經(jīng)過Director
(4).此種模型也不支持端口映射
(5).RealServer只能使用哪些支持IP隧道的操作系統(tǒng)
三。LVS Scheduling Method LVS的調(diào)度方法:
1.Fixed Scheduling Method 靜態(tài)調(diào)服方法
(1).RR 輪詢
(2).WRR 加權(quán)輪詢
(3).DH 目標地址hash
(4).SH 源地址hash
2.Dynamic Scheduling Method 動態(tài)調(diào)服方法
(1).LC 最少連接
(2).WLC 加權(quán)最少連接
(3).SED 最少期望延遲
(4).NQ 從不排隊調(diào)度方法
(5).LBLC 基于本地的最少連接
(6).LBLCR 帶復制的基于本地的最少連接
四、ipvsadm組件定義規(guī)則的格式:
1.定義集群服務(wù)格式:
(1).添加集群服務(wù):
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-M netmask]
-A: 表示添加一個新的集群服務(wù)
-E: 編輯一個集群服務(wù)
-t: 表示tcp協(xié)議
-u: 表示udp協(xié)議
-f: 表示firewall-Mark,防火墻標記
service-address: 集群服務(wù)的IP地址,即VIP
-s 指定調(diào)度算法
-p 持久連接時長,如#ipvsadm -Lcn ,查看持久連接狀態(tài)
-M 定義掩碼
ipvsadm -D -t|u|f service-address 刪除一個集群服務(wù)
ipvsadm -C 清空所有的規(guī)則
ipvsadm -R 重新載入規(guī)則
ipvsadm -S [-n] 保存規(guī)則
2.向集群服務(wù)添加RealServer規(guī)則:
(1).添加RealServer規(guī)則
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight]
-a 添加一個新的realserver規(guī)則
-e 編輯realserver規(guī)則
-t tcp協(xié)議
-u udp協(xié)議
-f firewall-Mark,防火墻標記
service-address realserver的IP地址
-g 表示定義為LVS-DR模型
-i 表示定義為LVS-TUN模型
-m 表示定義為LVS-NAT模型
-w 定義權(quán)重,后面跟具體的權(quán)值
ipvsadm -d -t|u|f service-address -r server-address --刪除一個realserver
ipvsadm -L|l [options] --查看定義的規(guī)則
如:#ipvsadm -L -n
ipvsadm -Z [-t|u|f service-address] --清空計數(shù)器
五、LVS-NAT模型實例
1。先配置好網(wǎng)絡(luò)環(huán)境,要三個虛擬機(本次實驗在虛擬機上完成),一臺用作Director,其他兩臺分別為RealServer1 和RealServer2
1。先配置好網(wǎng)絡(luò)環(huán)境,要三個虛擬機(本次實驗在虛擬機上完成),一臺用作Director,其他兩臺分別為RealServer1 和RealServer2
其中Director要兩個網(wǎng)卡,Eth0網(wǎng)卡為橋接(Birdged),Eth1網(wǎng)卡為僅主機(Host-only),RealServer1 和RealServer2的網(wǎng)卡也都是僅主機
類型的。
2.為了演示效果,將Director的兩塊網(wǎng)卡配置成不在同一個網(wǎng)段的IP地址,RealServer1 和RealServer2的IP地址為同一網(wǎng)段,規(guī)劃如下圖:
要注意的是:要將本地物理機的Vmnet1的IP地址配置成和Director的Eth1網(wǎng)卡的IP地址在同一個網(wǎng)段中,同時將RealServer1和RealServer2的網(wǎng)關(guān)指向Director主機的Eth1網(wǎng)卡的地址,如下圖所示:
3.配置好網(wǎng)絡(luò)環(huán)境之后就開始配置ipvsadm,確保在物理機上能ping通Eth0的IP地址,如下圖所示:
能Ping通,說明物理主機已經(jīng)可以和Director虛擬主機通信了。
4.在Director虛擬主機上配置:
#echo 1 > /proc/sys/net/ipv4/ip_forward --開啟IP轉(zhuǎn)發(fā)功能
#rpm -qa ipvsadm --查看ipvsadm是否安裝,如果沒有安裝則安裝之,直接使用yum安裝即可
#yum install ipvsadm -y
定義LVS-NAT模型規(guī)則
此處使用的是web服務(wù)器進行的演示,在192.168.24.44和192.168.24.45上都提供了nginx服務(wù),其中
192.168.24.44提供的網(wǎng)頁信息為“welcome realserver 1”,192.168.24.45提供的網(wǎng)頁信息為“welcome realserver 2”
#ipvsadm -A -t 172.16.100.24:80 -s rr
#ipvsadm -a -t 172.16.100.24:80 -r 192.168.24.44 -m
#ipvsadm -a -t 172.16.100.24:80 -r 192.168.24.45 -m
#ipvsadm -L -n --查看定義的規(guī)則
這些規(guī)則都是臨時規(guī)則,不會永久生效的,要想永久生效可以保存規(guī)則,命令如下:
#service ipvsadm save
5.在Internet Explorer瀏覽器中訪問172.16.100.24,會顯示如下圖所示信息:
而在google瀏覽器中訪問172.16.100.24,會顯示如下圖所示信息:
如果刷新頁面或者使用不同的瀏覽器,會輪流顯示頁面,這就是最簡單的服務(wù)器負載均衡啦!
六、LVS-DR模型的實現(xiàn)過程:
1.首先規(guī)劃集群和網(wǎng)路環(huán)境,需要三臺虛擬機,如下圖所示:
此時Director可以只有一個網(wǎng)卡Eth0,連接類型為橋接(Birdged),RealServer1和RealServer2 的網(wǎng)卡連接類型也都為橋接(Birdged):
2.配置集群服務(wù)
(1).在Director服務(wù)器上配置:
#ifconfig eth0:1 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up
#route add -host 172.16.100.100 dev eth0:1
#echo 1 > /proc/sys/net/ipv4/ip_forward --開啟IP轉(zhuǎn)發(fā)功能
(2).在realserve1服務(wù)器上進行配置:
# 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.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up
#route add -host 172.16.100.100 dev lo:0
(3).在realserver2 服務(wù)器上進行配置
# 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.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up
#route add -host 172.16.100.100 dev lo:0
(4).再在Director上配置ipvsadm規(guī)則:
#ipvsadm -A -t 172.16.100.100:80 -s rr -g
#ipvsadm -a -t 172.16.100.100:80 -r 172.16.24.34
#ipvsadm -a -t 172.16.100.100:80 -r 172.16.24.44
(5).在瀏覽器中進行驗證:
進行第一次訪問,如下圖所示:
進行第二次訪問,如下圖所示:
3.基于ssl的訪問
[root@mail ~]# ipvsadm -A -t 172.16.100.100:443 -s rr
[root@mail ~]# ipvsadm -a -t 172.16.100.100:443 -r 172.16.24.2 -g
[root@mail ~]# ipvsadm -a -t 172.16.100.100:443 -r 172.16.24.3 -g
二、LVS Persistence ,lvs的持久連接性
持久連接類型:
(1).Persistent Client Connections(PCC),持久客戶端連接:就是不管客戶端發(fā)起什么樣的服
務(wù)(如80端口的web服務(wù),3306端口的mysql服務(wù))請求,都將經(jīng)過Director被定位到同一個特定的real server上,
只要此real server 提供了這種服務(wù),并且會持續(xù)連接,如果客戶端連接超時,real server允許一定范圍內(nèi)的
持久連接時長,默認持久連接時長為300m
#ipvsadm -A -t 172.16.100.100:0 -p 1200
#ipvsadm -a -t 172.16.100.100:0 -r 172.16.100.34 -g -w 10
#ipvsadm -a -t 172.16.100.100:0 -r 172.16.100.44 -g -w 5
驗證效果如下圖:
(2).Persistent Port Connections(PPC),持續(xù)端口連接:就是不管客戶端發(fā)起什么樣的端口請求(如80端口,是提供web服務(wù)的,23端口,是提供telnet服務(wù)的....),
都會經(jīng)過Director將請求轉(zhuǎn)發(fā)到同一個real server上,并持續(xù)連接。假如一個客戶端請求的是web服務(wù),相應的是realserver1 ,當此用戶退出后再次發(fā)起請求web服務(wù)的時候
依然是realserver1 提供的web服務(wù)。
iptables:
[root@mail ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.100.100 --dport 80 -j MARK --set-mark 20
[root@mail ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.100.100 --dport 443 -j MARK --set-mark 20
[root@mail ~]# iptables -t mangle -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK tcp -- 0.0.0.0/0 172.16.100.100 tcp dpt:80 MARK set 0x14
MARK tcp -- 0.0.0.0/0 172.16.100.100 tcp dpt:443 MARK set 0x14
把80端口和443 端口做成一個持久防火墻標記,同時定向到同一個realserver上,即在訪問80服務(wù)的時候是realserver1,
然后改為訪問443服務(wù)的時候依然定向到realserver1上
基于防火墻標記來定義集群服務(wù),也稱為端口的姻親關(guān)系。
ipvsadm:
[root@mail ~]# ipvsadm -A -f 20 -s wlc -p 1200
[root@mail ~]# ipvsadm -a -f 20 -r 172.16.24.2 -g -w 3
[root@mail ~]# ipvsadm -a -f 20 -r 172.16.24.3 -g -w 2
[root@mail ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 20 wlc persistent 1200
-> 172.16.24.3:0 Route 2 0 0
-> 172.16.24.2:0 Route 3 0
本文出自 “知識體系” 博客
本文出自 “知識體系” 博客
您可能感興趣的文章:
- linux服務(wù)器之LVS、Nginx和HAProxy負載均衡器對比總結(jié)
- LVS+Keepalived構(gòu)建高可用負載均衡(測試篇)
- LVS+Keepalived構(gòu)建高可用負載均衡配置方法(配置篇)
- Linux 系統(tǒng) nginx 服務(wù)器安裝及負載均衡配置詳解
- linux下nginx負載均衡搭建的方法步驟
- linux負載均衡總結(jié)性說明 四層負載和七層負載有什么區(qū)別
- linux下Nginx+Tomcat負載均衡配置方法
- Red Hat Linux,Apache2.0+Weblogic9.2負載均衡集群安裝配置
- 使用nginx來負載均衡 本文在window與linux下配置nginx實現(xiàn)負載
- 深入理解Linux負載均衡LVS
相關(guān)文章
MongoDB學習筆記(二) 通過samus驅(qū)動實現(xiàn)基本數(shù)據(jù)操作
傳統(tǒng)的關(guān)系數(shù)據(jù)庫一般由數(shù)據(jù)庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB是由(database)、集合(collection)、文檔對象(document)三個層次組成2013-07-07教你一招一鍵搭建zerotier planet服務(wù)器腳本
ZeroTier 是一個加密的虛擬骨干網(wǎng),它的客戶端和服務(wù)端都是開源且免費的,對于一般的用戶,可以用它做內(nèi)網(wǎng)穿透,將處于不同內(nèi)網(wǎng)中的主機組成虛擬局域網(wǎng),這篇文章給大家介紹一鍵搭建zerotier planet服務(wù)器腳本的相關(guān)知識,感興趣的朋友一起看看吧2023-12-12cwRsync提示password file must be owned by root when running as
今天在配置服務(wù)器的時候,用了rsync4.10版本,客戶端是2003服務(wù)器端是2008 r2 同步的時候提示password file must be owned by root when running as root問題,以前用老版本的時候沒見過,還好看了下面的文章解決了,特分享下2015-08-08如何使用 Rails 和七牛云存儲,在 15 分鐘內(nèi)打造一個圖片分享社交應用原型
今天,就讓我們一起來看看如何使用 Rails 和七牛云存儲,在 15 分鐘內(nèi)打造一個圖片分享社交應用原型2016-03-03阿里云k8s服務(wù)springboot項目應用升級時出現(xiàn)502錯誤
這篇文章主要介紹了阿里云k8s服務(wù)springboot項目應用升級時出現(xiàn)502錯誤,需要的朋友可以參考下2022-04-04完美解決在eclipse上部署Tomcat時出現(xiàn)8080等端口被占用的問題
下面小編就為大家?guī)硪黄昝澜鉀Q在eclipse上部署Tomcat時出現(xiàn)8080等端口被占用的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07Git發(fā)現(xiàn)git push origin master 報錯的解決方法
本篇文章主要介紹了Git發(fā)現(xiàn)git push origin master 報錯的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11