歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

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

一,簡介 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-NAT 3.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 源地址hash 2.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 --刪除一個realserver ipvsadm -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 -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服務的時候是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 -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

本文出自 “知識體系” 博客
Copyright © Linux教程網 All Rights Reserved