linux as 5 中 lvs 配置 詳細說明

火星人 @ 2014-03-09 , reply:0


操作系統版本:centos as 5.5

修改日期:2010年11月6號

軟體版本:ipvsadm1.1.24、keepalived.1.1.17

實現功能:linux下的軟負載均衡

目的:原負載均衡不能實現route模式,只能在nat模式下工作.因此伺服器取不到客戶端的IP地址,所有的IP地址都軟換為了負載的IP地址,因此取代原來的負載,做了linux 下lvs的配置.

說明:lvs的配置模式有ipvsadm keepalived、 ipvsadm heartbeat ldirectord、ipvsadm pirhanha

三種工作模式

1、NAT

優點:集群中的物理伺服器可以使用任何支持TCP/IP操作系統,物理伺服器可以分配Internet的保留私有地址,只有負載均衡器需要一個合法的IP地址.
缺點:擴展性有限.當伺服器節點(普通PC伺服器)數據增長到20個或更多時,負載均衡器將成為整個系統的瓶頸,所有的請求包和應答包都需要經過負載均衡器再生.假使TCP包的平均長度是536位元組的話,平均包再生延遲時間大約為60us(在Pentium處理器上計算的,採用更快的處理器將這個延遲時間變短),負載均衡器的最大容許能力為8.93M/s,假定每台物理伺服器的平台容許能力為400K/s來計算,負責均衡器能為22台物理伺服器計算.

解決辦法:即使是是負載均衡器成為整個系統的瓶頸,如果是這樣也有兩種方法來解決它.一種是混合處理,另一種是採用Virtual Server via IP tunneling或Virtual Server via direct routing.如果採用混合處理的方法,將需要許多同屬單一的RR DNS域.你採用Virtual Server via IP tunneling或Virtual Server via direct routing以獲得更好的可擴展性.也可以嵌套使用負載均衡器,在最前端的是VS-Tunneling或VS-Drouting的負載均衡器,然後後面採用VS-NAT的負載均衡器.


2、Virtual server via IP tunneling(VS-TUN)

我們發現,許多Internet服務(例如WEB伺服器)的請求包很短小,而應答包通常很大.

優點:負載均衡器只負責將請求包分發給物理伺服器,而物理伺服器將應答包直接發給用戶.,負載均衡器能處理很巨大的請求量,這種方式,一台負載均衡能為超過100台的物理伺服器服務,負載均衡器不再是系統的瓶頸.使用VS-TUN方式,如果你的負載均衡器擁有100M的全雙工網卡的話,就能整個Virtual Server能達到1G的吞吐量.

不足:但是,這種方式需要所有的伺服器支持"IP Tunneling"(IP Encapsulation)協議,我僅在Linux系統上實現了這個,如果你能讓其它操作系統支持,還在探索之中.

3、Virtual Server via Direct Routing(VS-DR)

優點:和VS-TUN一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端.與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,因此可以使用大多數操作系統做為物理伺服器,其中包括:Linux ;Solaris ;FreeBSD ;NT4.0無需打補丁;IRIX 6.5;HPUX11等.

不足:要求負載均衡器的網卡與物理網卡在一個物理段上.

七種演算法

目前LVS主要有三種請求轉發方式和八種調度演算法.根據請求轉發方式的不同,所構架集群的網路拓撲、安裝方式、性能表現也各不相同.用LVS主要可以架構三種形式的集群,分別是LVS/NAT、LVS/TUN和LVS/DR,可以根據需要選擇其中一種.在選定轉發方式的情況下,採用哪種調度演算法將決定整個負載均衡的性能表現,不同的演算法適用於不同的應用場合,有時可能需要針對特殊場合,自行設計調度演算法.LVS的演算法是逐漸豐富起來的,最初LVS只提供4 種調度演算法,後來發展到以下八種:


1.輪叫調度(Round Robin)
調度器通過“輪叫”調度演算法將外部請求按順序輪流分配到集群中的真實伺服器上,它均等地對待每一台伺服器,而不管伺服器上實際的連接數和系統負載.
2.加權輪叫(Weighted Round Robin)
調度器通過“加權輪叫”調度演算法根據真實伺服器的不同處理能力來調度訪問請求.這樣可以保證處理能力強的伺服器能處理更多的訪問流量.調度器可以自動問詢真實伺服器的負載情況,並動態地調整其權值.
3.最少鏈接(Least Connections)
調度器通過“最少連接”調度演算法動態地將網路請求調度到已建立的鏈接數最少的伺服器上.如果集群系統的真實伺服器具有相近的系統性能,採用“最小連接”調度演算法可以較好地均衡負載.
4.加權最少鏈接(Weighted Least Connections)
在集群系統中的伺服器性能差異較大的情況下,調度器採用“加權最少鏈接”調度演算法優化負載均衡性能,具有較高權值的伺服器將承受較大比例的活動連接負載.調度器可以自動問詢真實伺服器的負載情況,並動態地調整其權值.
5.基於局部性的最少鏈接(Locality-Based Least Connections)
“基於局部性的最少鏈接”調度演算法是針對目標IP地址的負載均衡,目前主要用於Cache集群系統.該演算法根據請求的目標IP地址找出該目標IP地址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求發送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於一半的工作負載,則用“最少鏈接”的原則選出一個可用的伺服器,將請求發送到該伺服器.
6.帶複製的基於局部性最少鏈接(Locality-Based Least Connections with Replication)


“帶複製的基於局部性最少鏈接”調度演算法也是針對目標IP地址的負載均衡,目前主要用於Cache集群系統.它與LBLC演算法的不同之處是它要維護從一個目標 IP地址到一組伺服器的映射,而LBLC演算法維護從一個目標IP地址到一台伺服器的映射.該演算法根據請求的目標IP地址找出該目標IP地址對應的伺服器組,按“最小連接”原則從伺服器組中選出一台伺服器,若伺服器沒有超載,將請求發送到該伺服器;若伺服器超載,則按“最小連接”原則從這個集群中選出一台伺服器,將該伺服器加入到伺服器組中,將請求發送到該伺服器.同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低複製的程度.
7.目標地址散列(Destination Hashing)
“目標地址散列”調度演算法根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空.
8.源地址散列(Source Hashing)
“源地址散列”調度演算法根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空.
了解這些演算法原理能夠在特定的應用場合選擇最適合的調度演算法,從而儘可能地保持Real Server的最佳利用性.當然也可以自行開發演算法,不過這已超出本文範圍,請參考有關演算法原理的資料.

軟體下載:

wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

軟體環境

相關參考
1.LVS 基礎知識匯總
LVS的演算法介紹 http://bbs.linuxtone.org/viewthread.php?tid=69
學習LVS的三種轉發模式 http://bbs.linuxtone.org/viewthread.php?tid=77
LVS中的IP負載均衡技術 http://bbs.linuxtone.org/viewthread.php?tid=68
更多的請到http://www.linuxtone.org 負載均衡版查看

Keepalived 相關參考資料.
http://www.keepalived.org/documentation.html

參考文章

http://www.docin.com/p-37773994.html 、http://home.searchfull.net:8080/2395350-qemu 實戰 linux .html、http://bbs.linuxtone.org/thread-1077-1-1.html、

如果需說共同學習各共同的進步研究,可以聯繫本人,技術共長進

QQ:94369299 MSN:dralyw@hotmail.com

yum install Kernel-devel

yum install gcc

yum install openssl

yum install openssl-devel

yum install popt

安裝步驟

運行以下命令:

#lsmod |grep ip_vs
#uname -r
2.6.18-53.el5
#ln -s /usr/src/kernels/2.6.18-194.17.4.el5-i686/ /usr/src/linux
#tar zxvf ipvsadm-1.24.tar.gz
#cd ipvsadm-1.24
#make && make install
#find / -name ipvsadm # 查看ipvsadm的位置
#tar zxvf keepalived-1.1.17.tar.gz
#cd keepalived-1.1.17
#./configure

會有以下信息:

   Keepalived configuration   ------------------------   Keepalived version       : 1.1.15   Compiler                 : gcc   Compiler flags           : -g -O2   Extra Lib                : -lpopt -lssl -lcrypto    Use IPVS Framework       : Yes   IPVS sync daemon support : Yes   Use VRRP Framework       : Yes   Use LinkWatch            : No   Use Debug flags          : No

如果Use IPVS Framework這項為“No”,請確認ln -s /usr/src/kernels/2.6.18-194.17.4.el5-i686/ /usr/src/linux是否正確,可能你的安裝跟我的路徑有所不同.接著運行:

# make && make install
#find / -name keepalived # 查看keepalived位置
配置keepalived.conf #vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived

global_defs {
notification_email {
cnseek@gmail.com
}
notification_email_from sns-lvs@gmail.com
smtp_server 127.0.0.1
# smtp_connect_timeout 30
router_id LVS_DEVEL


}

# 20081013 written by :netseek
# VIP1
vrrp_instance VI_1 {
state MASTER #備份伺服器上將MASTER改為BACKUP
interface eth0
virtual_router_id 51
priority 100 # 備份服務上將100改為99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
61.164.122.8
#(如果有多個VIP,繼續換行填寫.)
}
}

virtual_server 61.164.122.8 80 {
delay_loop 6 #(每隔10秒查詢realserver狀態)
lb_algo wrr #(lvs 演算法)
lb_kind DR #(Direct Route)
persistence_timeout 60 #(同一IP的連接60秒內被分配到同一台realserver)
protocol TCP #(用TCP協議檢查realserver狀態)

real_server 61.164.122.9 80 {
weight 3 #(權重)
TCP_CHECK {
connect_timeout 10 #(10秒無響應超時)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 61.164.122.10 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
2. BACKUP伺服器同上配置,先安裝lvs再按裝keepalived,仍后配置/etc/keepalived/keepalived.conf,只需將紅色標示的部分改一下即可.
4. 查看lvs服務是否正常
#watch ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096)


Prot LocalAddressort Scheduler Flags
-> RemoteAddressort Forward Weight ActiveConn InActConn
TCP 61.164.122.8:80 wrr persistent 60
-> 61.164.122.10:80 Route 3 0 0
-> 61.164.122.9:80 Route 3 0 0 #tail -f /var/log/message 監聽日誌,查看狀態,測試LVS負載均衡及高可用性是否有效.

本文出自 「寂寞的人生」 博客,請務必保留此出處http://gennis.blog.51cto.com/350578/416118





[火星人 via ] linux as 5 中 lvs 配置 詳細說明已經有198次圍觀

http://www.coctec.com/docs/linux/show-post-49617.html