Linux下叢集服務簡介&LVS詳解
<b></b>
<b>Linux</b><b>下叢集服務簡介:</b>
<b>Cluster</b>
<b>LB:Load Balancing,</b><b>負載均衡</b>
<b>HA</b><b>:High Availability ,高可用</b>
<b>HP</b><b>:High Performance,高性能</b>
<b>負載均衡叢集</b>目的是提供和節點個數成正比的負載能力,這種叢集很适合提供大通路 量的Web服務。負載均衡叢集往往也具有一定的高可用性特點。
<b>高可用性叢集</b>運作于兩個或多個節點上,目的是在系統出現某些故障的情況下,仍能繼續對外提供服務。高可用性叢集的設計思想就是要最大限度地減少服務中斷時間。這類叢集中比較著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。
<b>高性能叢集</b>對一種服務而言不具有負載均衡功能,它可以提高整個系統的可靠性,但不能增加負載的能力。當然,高可用性叢集可以運作多種服務,并适當配置設定在不同節點上,比如節點A提供Oracle服務,同時節點B提供Sybase服務,這也可以看成是某種意義上的負載均衡,不過這是對多種服務的配置設定而言。 簡單的說,高性能計算(High-Performance Computing)是計算機科的一個分支,它緻力于開發超級計算機,研究并行算法和開發相關軟體。
Director:
4層:TCP/IP port(類似DNAT)
應用層:5/7 代理伺服器
<a href="http://blog.51cto.com/attachment/201205/210850690.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201205/210911160.png" target="_blank"></a>
LVS: Linux Virtual Server(章文嵩)
<b>LVS</b><b>:ipvsadm/ipvs</b>
<a href="http://blog.51cto.com/attachment/201205/210924943.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201205/210933517.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201205/210942753.png" target="_blank"></a>
1. 定義虛拟伺服器
ip1:80 s rr
2. ip1:80 -r server1
ip2:80 -r server2
<b>HA </b><b>高可用性</b>
一般性:99.9%
關鍵性:99.999%
節點:
2個節點 active -àstandby active-àactive
<b>RHCS</b> redhat aluster suite 100個節點 n/m模式
arp 緩存 控制資訊 心跳線 (雙絞線 光纖 串行線)
群集分裂 (split-brain)
解決方法: stonith(電源交換機,ssh,meatware)fence機器子產品裝置
<b>共享存儲:</b>
Ø das : 直接附加存儲 scsi 磁盤櫃
Ø nas : 網絡附加存儲 samba nfs 檔案級的共享 效率低
Ø san : 存儲區域網絡 fc-san(光纖) ip-san(iscsi:ip)效率高
群集檔案系統 redhat:gfs2 oracle:ocfs2
<b>故障轉移:</b>
故障轉移域
多個節點:群集工作票數:quorum dc
2個節點:仲裁磁盤(100M)心跳線
實作方式:
heartbeat v1 v2 v3
群集資源:
群集ip,服務程序(服務腳本) 存儲
<a href="http://blog.51cto.com/attachment/201205/211007203.png" target="_blank"></a>
壓力測試工具:ab –c 100 –n 1000 http://172.16.100.1/index.html
<b>Linux</b><b>下叢集服務之LVS詳解:</b>
<b>1.LVS</b><b>簡介:</b>
LVS是Linux Virtual Server的簡寫,意即Linux虛拟伺服器,是一個虛拟的伺服器叢集系統。本項目在1998年5月由章文嵩博士成立,是中國國内最早出現的自由軟體項目之一。
目前有三種IP負載均衡技術(VS/NAT、VS/TUN和VS/DR);
十種排程算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
<b>2.LVS</b><b>的三種實作技術:</b>
1、 通過NAT實作虛拟伺服器(VS/NAT)
<a href="http://blog.51cto.com/attachment/201205/211251886.png" target="_blank"></a>
特點:
Ø IP DIP必須在同一網段,而且必須為私有位址
Ø IP為RIP的default gateway
Ø irector很容易會成為整個網絡的瓶頸點
Ø IP可支援端口映射
2、 通過直接路由實作虛拟伺服器(VS/DR)
<a href="http://blog.51cto.com/attachment/201205/211327599.png" target="_blank"></a>
Ø RIP DIP必須在同一網段,都不必是私有位址,
Ø IP直接給CIP回複,directory隻需要處理請求資料,這樣的工作效率将成倍的提高,解決了LVM-NAT的瓶頸問題。不能進行端口映射
Ø IP不支援端口映射。服務必須使用預設的端口
Ø 理員可以直接通過Internet連接配接到RIP對伺服器進行配置。但這裡同時也存在着來自Internet的網絡安全隐患
3、 通過IP隧道實作虛拟伺服器(VS/TUN)
<a href="http://blog.51cto.com/attachment/201205/211342834.png" target="_blank"></a>
Ø IP DIP 都必須為公網位址,DIP RIP之間資料通過網絡Internet傳送。
Ø directory和server可以不再同一個網段,可以跨越地區,其他的都和LVM-DR形式的一樣。
Ø 其耗資源,投資較大。
<b>3.LVS</b><b>的排程算法:</b>
在核心中的連接配接排程算法上,IPVS已實作了以下十種排程算法:
LVS的算法分為兩大類:
<b>靜态算法</b>:隻是根據算法進行排程并不考慮後端REALSERVER的實際連接配接情況
* 輪叫排程(Round-Robin Scheduling)(rr)
排程器通過"輪叫"排程算法将外部請求按順序輪流配置設定到叢集中的真實伺服器上,它均等地對待每一台伺服器,而不管伺服器上實際的連接配接數和系統負載。
* 權重輪叫排程(Weighted Round-Robin Scheduling)(wrr)
排程器通過"權重輪叫"排程算法根據真實伺服器的不同處理能力來排程通路請求。這樣可以保證處理能力強的伺服器處理更多的通路流量。排程器可以自動問詢真實伺服器的負載情況,并動态地調整其權值
* 目标位址散列排程(Destination Hashing Scheduling)(dh)
"目标位址散列"排程算法根據請求的目标IP位址,作為散列鍵(Hash Key)從靜态配置設定的散清單找出對應的伺服器,若該伺服器是可用的且未超載,将請求發送到該伺服器,否則傳回空。
* 源位址散列排程(Source Hashing Scheduling)(sh)
"源位址散列"排程算法根據請求的源IP位址,作為散列鍵(Hash Key)從靜态配置設定的散清單找出對應的伺服器,若該伺服器是可用的且未超載,将請求發送到該伺服器,否則傳回空。
<b>動态算法</b>:前端的排程器會根據後端REALSERVER的實際連接配接情況來配置設定請求
* 最小連接配接排程(Least-Connection Scheduling)(LC)
排程器通過"最少連接配接"排程算法動态地将網絡請求排程到已建立的連結數最少的伺服器上。如果叢集系統的真實伺服器具有相近的系統性能,采用"最小連接配接"排程算法可以較好地均衡負載。
* 權重最小連接配接排程(Weighted Least-Connection Scheduling)(WLC) (Default)
在叢集系統中的伺服器性能差異較大的情況下,排程器采用"權重最少連結"排程算法優化負載均衡性能,具有較高權值的伺服器将承受較大比例的活動連接配接負載。排程器可以自動問詢真實伺服器的負載情況,并動态地調整其權值。
* 最短預期延時排程(Shortest Expected Delay Scheduling)(SED)
對wlc的改進,在wlc算法的基礎上給權重值加一,主要用來針對某個伺服器活動連結數值為0情況
* 不排隊排程(Never Queue Scheduling)(NQ)
基于SED算法的改進,不排隊。Never Queue從不排隊,若第二個要給沒有連接配接數的伺服器,不至于讓另一個伺服器特别閑,在權重差别比較大的時候特别有用。
* 基于局部性的最少連結(Locality-Based Least Connections Scheduling)(LBLC)
基于本地的最少連接配接,DH算法的動态算法,會計算緩存上現在處于活動連接配接的。
* 帶複制的基于局部性最少連結(Locality-Based Least Connections with Replication Scheduling)(LBLCR)
帶複制的基于本地的最少連接配接,基于icp協定緩存複制來完成的。
<b>4.IPVS</b><b>指令用法:</b>
ipvsadm
-A|E –t|u vip:port -s SCHEDULING(方法)
-d -D| -t|u vip:port
-a | e -t|u vip:port <b> -g</b>|i|m (模式 dr,tun,nat)
<b>ipvsadm -A|E -t|u|f service-address [-s scheduler]</b>
<b>[-p [timeout]] [-M netmask]</b>
<b>ipvsadm -D -t|u|f service-address</b>
<b>ipvsadm -C</b>
<b>ipvsadm -R</b>
<b>ipvsadm -S [-n]</b>
<b>ipvsadm -a|e -t|u|f service-address -r server-address</b>
<b>[-g|i|m] [-w weight] [-x upper] [-y lower]</b>
<b>ipvsadm -d -t|u|f service-address -r server-address</b>
<b>ipvsadm -L|l [options]</b>
<b>ipvsadm -Z [-t|u|f service-address]</b>
<b>ipvsadm --set tcp tcpfin udp</b>
<b>ipvsadm --start-daemon state [--mcast-interface interface]</b>
<b>[--syncid syncid]</b>
<b>ipvsadm --stop-daemon state</b>
<b>ipvsadm -h</b>
<b>-A</b><b>——add-service</b>在核心的虛拟伺服器表中添加一條新的虛拟伺服器記錄。也就是增加一台新的虛拟伺服器。
<b>-E </b><b>——edit-service</b> 編輯核心虛拟伺服器表中的一條虛拟伺服器記錄。
<b>-D </b><b>——delete-service</b> 删除核心虛拟伺服器表中的一條虛拟伺服器記錄。
<b>-C </b><b>——clear</b><b>清除核心虛拟伺服器表中的所有記錄。</b>
<b>-R </b><b>——restore</b>恢複虛拟伺服器規則
<b>-S </b><b>——save </b>儲存虛拟伺服器規則,輸出為-R 選項可讀的格式
<b>-a </b><b>——add-server </b>在核心虛拟伺服器表的一條記錄裡添加一條新的真實伺服器記錄。也就是在一個虛拟伺服器中增加一台新的真實伺服器
<b>-e </b><b>——edit-server </b>編輯一條虛拟伺服器記錄中的某條真實伺服器記錄
<b>-d </b><b>——delete-server</b>删除一條虛拟伺服器記錄中的某條真實伺服器記錄
<b>-L|-l </b><b>——list </b>顯示核心虛拟伺服器表
<b>-Z </b><b>——zero</b>虛拟服務表計數器清零(清空目前的連接配接數量等)
<b>——set tcp tcpfin udp</b> 設定連接配接逾時值
<b>——start-daemon</b>啟動同步守護程序。他後面可以是master 或backup,用來說明LVS Router 是master 或是backup.在這個功能上也可以采用keepalived 的VRRP 功能。
<b>——stop-daemon</b> 停止同步守護程序
<b>-h </b><b>——help</b>顯示幫助資訊其他的選項:-t ——tcp-service service-address 說明虛拟伺服器提供的是tcp 的服務[vip:port] or [real-server-ip:port] -u ——udp-service service-address 說明虛拟伺服器提供的是udp 的服務[vip:port] or [real-server-ip:port] -f ——fwmark-service fwmark 說明是經過iptables 标記過的服務類型。
<b>-s </b><b>——scheduler</b> scheduler 使用的排程算法,有這樣幾個選項rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,預設的排程算法是: wlc. -p ——persistent [timeout] 持久穩固的服務。這個選項的意思是來自同一個客戶的多次請求,将被同一台真實的伺服器處理。timeout 的預設值為300 秒。
<b>-M </b>——netmask netmask persistent granularity mask
<b>-r </b><b>——real-server server-address</b>真實的伺服器[Real-Server:port]
<b>-g </b><b>——gatewaying</b>指定LVS 的工作模式為直接路由模式(也是LVS 預設的模式)
<b>-i </b><b>——ipip </b>指定LVS 的工作模式為隧道模式<b>-m ——masquerading</b> 指定LVS 的工作模式為NAT 模式<b>-w ——weight weight</b> 真實伺服器的權值<b>——mcast-interface interface</b> 指定多點傳播的同步接口<b>-c ——connection </b>顯示LVS 目前的連接配接 如:ipvsadm -L -c——timeout 顯示tcp tcpfin udp 的timeout 值 如:ipvsadm -L ——timeout——daemon 顯示同步守護程序狀态——stats 顯示統計資訊——rate 顯示速率資訊——sort 對虛拟伺服器和真實伺服器排序輸出——numeric -n 輸出IP 位址和端口的數字形式
<b>壓力測試工具</b>:ab –c 100 –n 1000 http://172.16.100.1/index.html
<b>LVS-DR</b><b>模型</b>
<a href="http://blog.51cto.com/attachment/201205/211129772.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201205/211156760.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201205/211226895.png" target="_blank"></a>
本文轉自xjzhujunjie 51CTO部落格,原文連結:http://blog.51cto.com/xjzhujunjie/850650