天天看點

Linux下群集服務簡介&lvs叢集詳解

 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

繼續閱讀