LVS
realserver:也稱為真實內部服務器,是真正在提供服務的;
VIP:對外公布的IP,即客戶請求進來的IP地址;
DIP:調度器和realserver之間通信的地址;
LVS的三種工作方式
LVS-NAT:
這個方法的思路是實施網絡層(IP層)數據欺騙,它把客戶端發送到redirector數據IP包的目標地址進行了替換。

1、網絡環境
realserver處理完請求生成了返回數據包,返回數據IP包的源地址是realserver的IP地址,目標地址是客戶服務端IP地址。由於realserver的默認網關是redirector,因此盡管返回IP數據包的目標地址是客戶端的ip地址,返回數據包仍然首先被發回到redirector上。redirector再次實施欺騙,把返回的IP 數據包的源地址改成自己的IP。然后再轉發到交換機上返回給客戶端。
3、限制:整個集群的吞吐量受到redirector的帶寬限制(主要是出口帶寬)。

LVS-DR:
這個方法的思路是實施數據鏈路層數據欺騙,修改網絡幀數據的Mac地址。
1、網絡環境
一台director + N台realserver,director和realserver都擁有公共IP,都暴露在廣域網上,此外realserver還有一個和director ip地址一樣的ip別名。
realserver還需要做一個配置,使它們忽略所有的針對公用IP的ARP廣播,當系統arp廣播詢問哪個mac地址擁有公用IP時,就只有調度服務器會響應,外界發送的數據就不會發給實際服務器。
2、客戶端請求
客戶端請求先到公用IP(director),由於網絡環境已配置為只有director響應過ARP廣播,因此請求報文的mac地址會被改為realserver的mac地址。
3、realserver響應
realserver收到mac幀,然后將mac幀組裝成ip包,發現ip包中的目標地址和自己的ip別名相同,沒有問題,繼續處理,(這就是要求ip別名相同的原因,如果不同,操作系統可能會直接忽略)生成響應數據,發送回去。這時候由於redirector不是默認網關,因此這些數據會直接發到廣域網上,廣域網會把數據送到客戶端。
4、優點:返回數據包無需經過redirector,沒有redirector帶寬瓶頸。原則上集群的帶寬是所有實際服務器帶寬之和,當然他們不可能超過連接的廣域網交換機的帶寬。
5、限制:需要購買多個公共IP,director和realserver必須在同一個 WAN網段,也就是要在同一個交換機上。
LVS-TUN:
這個方法是為了突破LVS-DR同一網段內的限制所提出來的。它不做任何欺騙,而是光明正大的交流,在網絡層進行了二次包裝。
2、客戶端請求
客戶端發送數據到redirector,redirector把IP包作為有效負載放到一個新的IP包中去,並根據調度策略確定一個特定realserver的ip作為新的IP包得目的地址。這些新的IP包完全符合網絡協議,也沒有任何欺騙的勾當,因此這些ip包光明正大得穿過wan網段,達到指定的realserver。
3、realserver響應
realserver拿到數據后,它需要做一個事情,把ip包的有效載荷提取出來,然后把這些載荷再作為ip包組成TCP,再向上組成最后的請求數據。根據請求數據,realserver生成返回數據后,光明正大返回給客戶端。
4、優點:和LVS-DR一樣,沒有redirector出口帶寬瓶頸。
5、缺點:需要額外的打包和解包,有一定的開銷。
LVS配置
ipvsadm安裝
yum -y install ipvsadm
LVS-NAT的配置
配置內部私網地址,默認網關指向調度服務器
2、Directer配置要求 基本配置:
調度服務器需要2塊網卡(一塊網卡對外,一塊網卡對內。1塊也可以,配置子接口,對外的VIP和DIP都配置在同一網卡上,不過這樣會更加的降低調度器的性能,建議還是雙網卡)
關閉selinux和iptables,並打開包轉發功能:
setenforce 0 service iptables stop
echo "1" > /proc/sys/net/ipv4/ip_forward
(為了避免不必要的麻煩,在每台服務器上都關閉這2個服務)
ipvsadm -A –t $VIP:$Port -s rr
解釋:-A表示添加一個集群服務(可以添加多個,比如添加一個web的80和一個https的443);
-t表示是tcp協議;
-s表示調度算法是輪詢(一共有10種調度算法,可以按照自己實際需要選擇)
ipvsadm -a –t $VIP:$Port -r $DIP:$Port -m
解釋:-a表示添加一個realserver,后面跟上之前定義的集群服務的地址端口,-r表示增加具體realserver的地址,-m表示模式為NAT模式
LVS-DR的配置
1、Realserver配置要求 基本配置
首先先配置限制arp,不然等配置好地址后就產生地址沖突了,通過修改內核參數來實現。
在linux中 ,默認在接口上通告所有接口上IP的arp廣播,在接口上應答所有接口上IP的arp請求
arp_announce 限制arp通告
限制等級
0:在接口上通告所有接口上IP的arp廣播
1:對於其它設備的arp請求,在接口上盡量限制廣播通告應答(不夠嚴格)
2:只通告本接口上IP的arp廣播
arp_ignore 限制arp應答
限制等級
0:對於其它設備 的arp請求,應答所有其它接口的上IP的arp應答
1:對於其它設備的arp請求,只應答本接口上IP的arp應答
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf//lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
在realserver上的lo口配置VIP,這樣配置就限制了VIP不會在物理交換機上產生MAC地址表,從而避免IP沖突
ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 ifconfig eth0 $DIP up
注意此VIP的接口的廣播地址仍然為VIP,限制其廣播,子網掩碼是32位,下面調度器上的配置也注意此項
配置特殊路由,使目標為VIP的包的以源地址為VIP的lo口出去
route add –host $VIP dev lo:1
Directer配置要求
配置VIP和DIP,VIP配置在物理網卡的子接口上
ifconfig eth0 $DIP broadcast $VIP netmask 255.255.255.0 up ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
配置特殊路由,目標是VIP的包從配置了VIP的物理子接口上出去
route add –host $VIP dev eth0:1
集群配置
ipvsadm -A –t $VIP:$Port-s rr
解釋:-A表示添加一個集群服務(這里和NAT中的配置一樣)
ipvsadm -a –t $VIP:$Port -r $DIP:$Port-g
解釋:其它和NAT也差不多,在最后的模式改為-g,即DR模式
LVS調度算法
-s 指定服務采用的算法,常用的算法參數如下:
rr 輪叫(Round Robin)
調度器通過”輪叫”調度算法將外部請求按順序輪流分配到集群中的真實服務器上,它均等地對待每一台服務 器,而不管服務器上實際的連接數和系統負載。
wrr 加權輪叫(Weighted Round Robin)
調度器通過”加權輪叫”調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。
lc 最少鏈接(Least Connections)
調度器通過”最少連接”調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集群系統的真實服務器具有相近的系統性能,采用”最小連接”調度算法可以較好地均衡負載。
wlc 加權最少鏈接(Weighted Least Connections)
在集群系統中的服務器性能差異較大的情況下,調度器采用”加權最少鏈接”調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。
lblc 基於局部性的最少鏈接(Locality-Based Least Connections)
“基於局部性的最少鏈接”調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集群系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用”最少鏈接” 的原則選出一個可用的服務器,將請求發送到該服務器。
lblcr 帶復制的基於局部性最少鏈接(Locality-Based Least Connections with Replication)
”帶復制的基於局部性最少鏈接”調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集群系統。它與LBLC算法的不同之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一台服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按”最小連接”原則從服務器組中選出一台服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按”最小連接”原則從這個集群中選出一台服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低復制的程度。
dh 目標地址散列(Destination Hashing)
“目標地址散列”調度算法根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。
sh 源地址散列(Source Hashing)
“源地址散列”調度算法根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。