Linux Cluster


一、Linux集群類型、系統擴展方式及調度方法

1.概念

Linux cluster,Linux集群系統是一種計算機系統, 它通過一組松散集成的計算機軟件和/或硬件連接起來高度緊密地協作完成計算工作。一個集群(cluster)就是一組計算機,它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集群的節點(node)。一個理想的集群,用戶是不會意識到集群系統底層的節點的。在他們看來,集群是一個系統,而非多個計算機系統。並且集群系統的管理員可以隨意增加和刪改集群系統的節點。
Linux 集群系統的優點在於:
(1)高擴展性,管理員可自行增加或刪除集群系統中的節點。
(2)高可用性,當集群中某一個節點失效時,其負責的任務可以傳遞給其他節點,因此能夠有效防止單點失效。
(3)高性能,負載均衡的集群系統能夠同時接入更多的用戶。
(4)高性價比,可以使用廉價的硬件構造出高性能的系統。

2. Linux Cluster類型

(1)LB:Load Balancing,負載均衡;
提供和節點個數成正比的負載能力,這種集群很適合提供大訪問量的Web服務。負載均衡集群往往也具有一定的高可用性特點。Turbolinux Cluster Server、Linux Virtual Server都屬於負載均衡集群。主流架構Nginx+Keepalived(利於動靜分離)、LVS+Keepalived。

(2)HA:High Availiablity,高可用集群;

  一般是指當集群中有某個節點失效的情況下,其上的任務會自動轉移到其他正常的節點上。還指可以將集群中的某節點進行離線維護再上線,該過程並不影響整個集群的運行。計思想就是要最大限度地減少服務中斷時間。這類集群中比較著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。

  高可用集群一般是通過系統的可靠性(reliability)和系統 的可維護性(maintainability)來衡量的。通常用平均無故障時間(MTTF)來衡量系統的可靠性,用平均維護 時間(MTTR)來衡量系統的可維護性。因此,一個高可用集群服務可以這樣來定義:

  A=MTBF平均故障間隔時間/(MTBF平均故障間隔時間+MTTR平均恢復時間)

(0,1):90%, 95%, 99%, 99.5%, 99.9%, 99.99%, 99.999%, 99.9999%
一般高可用集群的標准有如下幾種:
99%:表示 一年不在線時間不超過87小時
99.9% :表示一年不在線時間不超過8.7小時
99.99%: 表示一年不在線時間不超過1小時
99.999% :表示一年不在線時間不超過3-5分鍾

(3)HP:High Performance,高性能集群;
HPCC高性能計算集群也稱為DAS(數據分析超級計算機)

(4)分布式系統集群:
分布式存儲:分布式存儲是一種數據存儲技術,通過網絡使用企業中的每台機器上的磁盤空間,在元數據服務器做索引,並將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在企業的各個角落。

分布式計算:分布式計算是一種計算方法,和集中式計算是相對的。隨着計算技術的發展,有些應用需要非常巨大的計算能力才能完成,如果采用集中式計算,需要耗費相當長的時間來完成。分布式計算將該應用分解成許多小的部分,分配給多台計算機進行處理。這樣可以節約整體計算時間,大大提高計算效率。

3. 系統擴展類型

常見的系統擴展類型有:

  • scale up(向上擴展):利用現有的硬件資源,通過增加硬件資源來滿足日益增長的性能消耗的需求,但是此方式通常來說能提升的性能有限。

  • scale out(向外擴展):通過硬件或軟件的方式,將以往由單一服務器負責的業務需求分配到其他節點的服務器上進行處理,但是從用戶的視角來看,這些服務器是單一的系統。而lvs集群的擴展方式正是屬於scale out。

4. 負載均衡集群實現:

4.1、硬件設備實現負載均衡:

  • F5公司的 Big-IP產品: 性能好價格高
  • Citrix公司的 Netscaler產品
  • A10 公司的A10產品

4.2、軟件實現負載均衡:

  • lvs:Linux Virtual Server虛擬服務,不處理服務,而是轉到其他地方處理
  • nginx偽四層調度
  • haproxy
  • ats:apache traffic server 雅虎公司的開源項目
  • perlbal
  • pound

4.3、基於工作的協議層次划分:
(1)四層負載均衡:傳輸層調度器(通用):(DPORT)

  • lvs:基於udp、tcp調度
  • nginx:stream模塊用來模擬四層調度
  • haproxy:mode tcp模塊用來模擬四層調度

(2)七層負載均衡:應用層調度器(專用):(自定義的請求模型分類)
proxy server:

  • http:nginx(使用http的模塊), httpd, haproxy(使用http的模塊)
  • fastcgi:nginx, httpd, ...
  • mysql:ProxySQL, ...

4.4、集群的站點指標:

  • PV:Page View頁面瀏覽量
  • UV:Unique Vistor單獨瀏覽者

4.5、集群的會話保持問題:
為了對訪問用戶的追蹤

  • (1) session sticky會話綁定
    Source IP-----基於原ip識別原用戶
    Cookie----基於原Cookie識別原用戶

  • (2) session replication;復制集群
    session cluster會話集群

  • (3) session server指定一台專門儲存會話的服務器

5、lvs
  LVS:Linux virtual server
  VS:Virtual Server
  RS: Real Server

  l4:四層交換機,四層路由器。

    VS:根據請求報文的目標IP和目標協議及端口將其調度轉發至某RealServer,根據調度算法來挑選RS。

  iptables/netfilter:

    iptables:用戶控件的管理工具

    netfilter:內核空間上的框架

      流入:PREROUTING--->  INPUT

      流出:OUTPUT---> POSTROUTING;

      轉發:PREOUTING---> FORWARD---> POSTROUTING

    DNAT:目標地址轉換;PREROUTING;

    SNAT:源地址轉換;POSTROUTING;

  lvs:ipvsadm/ipvs

    ipvsadm:用戶空間的命令行工具,規則管理器,用於管理集群服務及相關的RealServer;

    ipvs:工作與內核空間的netfilter的INPUT鈎子之上的框架。

6、講解lvs

   

    CIP:所有的客戶端都成為CIP

    VIP:接收客戶端的請求稱之為VIP。

    DIP:與后端主機通信的稱之為DIP。

    RIP:后端主機對應的ip稱之為RIP。

LVS的工作原理:

1)當用戶向負載均衡調度器(Director Server)發起請求,調度器將請求發往至內核空間
(2)PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數據包發往INPUT鏈
(3)IPVS是工作在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和自己已定義好的集群服務進行比對,如果用戶請求的就是定義的集群服務,那么此時IPVS會強行修改數據包里的目標IP地址及端口,並將新的數據包發往POSTROUTING鏈
(4)POSTROUTING鏈接收數據包后發現目標IP地址剛好是自己的后端服務器,那么此時通過選路,將數據包最終發送給后端的服務器

LVS 由2部分程序組成,包括 ipvs 和 ipvsadm。

    1. ipvs(ip virtual server):一段代碼工作在內核空間,叫ipvs,是真正生效實現調度的代碼。
    1. ipvsadm:另外一段是工作在用戶空間,叫ipvsadm,負責為ipvs內核框架編寫規則,定義誰是集群服務,而誰是后端真實的服務器(Real Server)

7、lvs集群類型中的術語

    

8、lvs集群的類型:

    lvs-nat:修改請求報文的目標IP;多目標IP的DNAT

    lvs-dr:操縱封裝新的MAC地址;

    lvs-tun:IP隧道。在原請求IP報文之外新加一個IP首部

    lvs-fullnat:修改請求報文的源IP和目標IP。

  1)lvs-nat講解:

  

  

多目標IP的DNAT,通過將請求報文中的目標地址和目標端口來實現調度(通常修改為某挑出的RS的RIP和PORT實現轉發);
(1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP;
(2)請求報文和響應報文都必須經由Director轉發;Director易於成為系統瓶頸;
(3)支持端口映射,可修改請求報文的目標PORT;
(4)vs必須是Linux系統,rs可以是任意系統;

  擴展問題:所有的應答再次轉向VS調度器,這樣子造成VS的壓力過大。可以優化的方向是RS遠端服務器直接向用戶客戶端發送響應報文。

  2)lvs-dr:

   

Direct Routing,直接路由;
通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變;
Director和各RS都得配置使用VIP;
1、 確保前段路由器將目標ip為VIP的請求報文發往Director,有以下三種方式:
    在前端網關做靜態綁定。這種方法不適用。
    在RS上使用arptables;
    在RS上修改內核參數以限制arp通告及應答級別;修改兩處
      arp_announce
      arp_ignore
2、 RS的RIP可以使用私網地址,也可以使用公網地址;RIP和DIP在同一個ip網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director; 3、 RS跟Director要在同一個物理網絡; 4、 請求報文要經由Director,但響應報文不能經由Director,而是由RS直接發往Client; 5、 不支持端口映射

   3)lvs-tun

   

  

  

    轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而是在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP);
    1、 DIP VIP RIP 都應該是公網地址;
    2、 RS的網關不能,也不可能指向DIP;
    3、 請求報文要經由Director,但響應不能經由Director;
    4、 不支持端口映射
    5、 RS的OS得支持隧道功能;

      使用場景:廣域網負載;

  4)lvs-fullnat

  

  通過同時修改請求報文的源IP地址和目標IP地址進行轉發
      CIP< - - > DIP
      VIP< - - > RIP
  1、 VIP是公網地址,RIP和DIP是私網地址,且通常不在同一個IP網絡;因此,RIP的網關一般不會指向DIP
  2、 RS收到的請求報文源地址是DIP,因此,只能響應給DIP;但是Director還要將其發往Client;
  3、 請求和響應報文都經由Director;Director的壓力會比較大。
  4、 支持端口映射;
    注意:此類型默認不支持。

 總結:

  lvs-nat,lvs-fullnat:請求和響應報文都經由Director;

    lvs-nat:RIP的網關要指向DIP;

    lvs-fullnat:RIP和DIP未必在同一IP網絡,但要能通信。

  lvs-dr,lvs-tun:請求報文要經由Director,但響應報文有RS直接發往Client;

    lvs-dr:通過封裝新的MAC首部實現,通過MAC進行網絡轉發

    lvs-tun:通過在原IP報文之外封裝新的IP首部實現轉發,支持遠距離通信;

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM