LVS(Linux Virtual Server)Linux 虛擬伺服器介紹及配置(負載平衡系統)

來源:互聯網
上載者:User

一,簡介LVS(Linux Virtual Server) 是Unix-like系統中的一個虛擬伺服器,是國內貢獻給開源組織的一個最優秀的項目之一。LVS在Unix-like系統中是作為一個前端(Director)存在的,又稱為調度器,它本身不提供任何的服務,只是將通過互連網進來的請求接受後再轉寄給後台啟動並執行真正的伺服器(RealServer)進行處理,然後響應給用戶端。LVS有兩個重要的組件:一個是IPVS,一個是IPVSADM。ipvs是LVS的核心組件,它本身只是一個架構,類似於iptables,工作於核心空間中。ipvsadm 是用來定義LVS的轉寄規則的,工作於使用者空間中。LVS有三種轉寄類型:1.LVS-NAT模型,稱為網路位址轉譯,實現起來比較簡單。2.LVS-DR模型,稱為直接路由模型,應用比較廣泛。3.LVS-TUN模型,稱為隧道模型。 二、LVS的三種模型的工作屬性:
1.LVS-NAT模型的工作屬性或特:(1).所有的RealServer叢集節點和前端調度器Director都要在同一個子網中(2).通常情況下RealServer的IP地址(以下簡成RIP)為私人地址,便於RealServer叢集節點之間進行通訊(3).通常情況下前端的Director有兩個IP地址,一個為VIP,是虛擬IP地址,用戶端向此IP地址發起請求。一個是DIP,是真正的Director的IP地址,RIP的網關要指向Director的DIP。(4).這種模型可以實現連接埠映射(5).RealServer的作業系統可以是任意作業系統(6).前端的Director既要處理用戶端發起的請求,又要處理後台RealServer的響應資訊,將RealServer響應的資訊再轉寄給用戶端(7).前端Director很容易成為整個叢集系統效能的瓶頸。2.LVS-DR模型的工作屬性或特徵:此種模型通過MAC地址轉寄工作,如何轉寄後面將會介紹。(1).所有的RealServer叢集節點和前端調度器Director都要在同一個物理網路中(2).RIP可以使用公網的IP(3).RIP的網關不能指向DIP(4).前端的Director只處理用戶端的請求,然後將請求轉寄給RealServer,由背景RealServer直接響應用戶端,不再經過Director(5).此種模型不支援連接埠映射(6).RealServer可以使用大多數的作業系統(7).此種模型的效能要優於LVS-NAT3.LVS-TUN模型的基本工作屬性或特徵(1).RealServer伺服器與前端的Director可以在不同的網路中(2).RIP一定不能是私人IP(3).前端的Director只處理用戶端的請求,然後將請求轉寄給RealServer,由背景RealServer直接響應用戶端,不再經過Director(4).此種模型也不支援連接埠映射(5).RealServer只能使用哪些支援IP隧道的作業系統 三。LVS Scheduling Method LVS的調度方法:
1.Fixed Scheduling Method 靜態調服方法(1).RR 輪詢(2).WRR 加權輪詢(3).DH 目標地址hash(4).SH 源地址hash2.Dynamic Scheduling Method 動態調服方法(1).LC 最少串連(2).WLC 加權最少串連(3).SED 最少期望延遲(4).NQ 從不排隊調度方法(5).LBLC 基於本地的最少串連(6).LBLCR 帶複製的基於本地的最少串連 四、ipvsadm組件定義規則的格式:
1.定義叢集服務格式: (1).添加叢集服務:ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]-A: 表示添加一個新的叢集服務-E: 編輯一個叢集服務-t: 表示tcp協議-u: 表示udp協議-f: 表示firewall-Mark,防火牆標記service-address: 叢集服務的IP地址,即VIP-s 指定調度演算法-p 持久串連時間長度,如#ipvsadm -Lcn ,查看持久串連狀態-M 定義掩碼 ipvsadm -D -t|u|f service-address 刪除一個叢集服務ipvsadm -C 清空所有的規則ipvsadm -R 重新載入規則ipvsadm -S [-n] 儲存規則 2.向叢集服務添加RealServer規則:(1).添加RealServer規則ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] -a 添加一個新的realserver規則-e 編輯realserver規則-t tcp協議-u udp協議-f firewall-Mark,防火牆標記service-address realserver的IP地址-g 表示定義為LVS-DR模型-i 表示定義為LVS-TUN模型-m 表示定義為LVS-NAT模型-w 定義權重,後面跟具體的權值ipvsadm -d -t|u|f service-address -r server-address --刪除一個realserveripvsadm -L|l [options] --查看定義的規則如:#ipvsadm -L -n ipvsadm -Z [-t|u|f service-address] --清空計數器 五、LVS-NAT模型執行個體

1。先配置好網路環境,要三個虛擬機器(本次實驗在虛擬機器上完成),一台用作Director,其他兩台分別為RealServer1 和RealServer2

其中Director要兩個網卡,Eth0網卡為橋接(Birdged),Eth1網卡為僅主機(Host-only),RealServer1 和RealServer2的網卡也都是僅主控件類型的。2.為了示範效果,將Director的兩塊網卡配置成不在同一個網段的IP地址,RealServer1 和RealServer2的IP地址為同一網段,規劃如:

要注意的是:要將本地物理機的Vmnet1的IP地址配置成和Director的Eth1網卡的IP地址在同一個網段中,同時將RealServer1和RealServer2的網關指向Director主機的Eth1網卡的地址,如所示:

3.配置好網路環境之後就開始配置ipvsadm,確保在物理機上能ping通Eth0的IP地址,如所示:

能Ping通,說明物理主機已經可以和Director虛擬機器主機通訊了。4.在Director虛擬機器主機上配置:#echo 1 > /proc/sys/net/ipv4/ip_forward --開啟IP轉寄功能#rpm -qa ipvsadm --查看ipvsadm是否安裝,如果沒有安裝則安裝之,直接使用yum安裝即可#yum install ipvsadm -y定義LVS-NAT模型規則此處使用的是web伺服器進行的示範,在192.168.24.44和192.168.24.45上都提供了nginx服務,其中192.168.24.44提供的網頁資訊為“welcome realserver 1”,192.168.24.45提供的網頁資訊為“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 --查看定義的規則這些規則都是臨時規則,不會永久生效的,要想永久生效可以儲存規則,命令如下:#service ipvsadm save 5.在Internet Explorer瀏覽器中訪問172.16.100.24,會顯示如所示資訊:

而在google瀏覽器中訪問172.16.100.24,會顯示如所示資訊:

如果重新整理頁面或者使用不同的瀏覽器,會輪流顯示頁面,這就是最簡單的伺服器負載平衡啦! 六、LVS-DR模型的實現過程: 1.首先規劃叢集和網路環境,需要三台虛擬機器,如所示:此時Director可以只有一個網卡Eth0,連線類型為橋接(Birdged),RealServer1和RealServer2 的網卡連線類型也都為橋接(Birdged):

2.配置叢集服務(1).在Director伺服器上配置:#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轉寄功能(2).在realserve1伺服器上進行配置:# 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 伺服器上進行配置# 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規則: #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),持久用戶端串連:就是不管用戶端發起什麼樣的服務(如80連接埠的web服務,3306連接埠的mysql服務)請求,都將經過Director被定位到同一個特定的real server上,只要此real server 提供了這種服務,並且會持續串連,如果用戶端連線逾時,real server允許一定範圍內的持久串連時間長度,預設持久串連時間長度為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),持續連接埠串連:就是不管用戶端發起什麼樣的連接埠請求(如80連接埠,是提供web服務的,23連接埠,是提供telnet服務的....),都會經過Director將請求轉寄到同一個real server上,並持續串連。假如一個用戶端請求的是web服務,相應的是realserver1 ,當此使用者退出後再次發起請求web服務的時候依然是realserver1 提供的web服務。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 -nChain 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服務的時候是realserver1,然後改為訪問443服務的時候依然定向到realserver1上 基於防火牆標記來定義叢集服務,也稱為連接埠的姻親關係。 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 -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnFWM 20 wlc persistent 1200 -> 172.16.24.3:0 Route 2 0 0 -> 172.16.24.2:0 Route 3 0

本文出自 “知識體系” 部落格

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.