Linux Cluster

1、Linux集羣類型、系統擴展方式及調度方法前端

1.概念node

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

2. Linux Cluster類型

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

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

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

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

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

(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.一、硬件設備實現負載均衡:

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

4.二、軟件實現負載均衡:

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

4.三、基於工做的協議層次劃分:
(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.四、集羣的站點指標:

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

4.五、集羣的會話保持問題:
爲了對訪問用戶的追蹤

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

  • (2) session replication;複製集羣
    session cluster會話集羣

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

五、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鉤子之上的框架。

六、講解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)

七、lvs集羣類型中的術語

    

八、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;
一、 確保前段路由器將目標ip爲VIP的請求報文發往Director,有如下三種方式:
    在前端網關作靜態綁定。這種方法不適用。
    在RS上使用arptables;
    在RS上修改內核參數以限制arp通告及應答級別;修改兩處
      arp_announce
      arp_ignore
二、 RS的RIP可使用私網地址,也可使用公網地址;RIP和DIP在同一個ip網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director; 三、 RS跟Director要在同一個物理網絡; 四、 請求報文要經由Director,但響應報文不能經由Director,而是由RS直接發往Client; 五、 不支持端口映射

   3)lvs-tun

   

  

  

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

      使用場景:廣域網負載;

  4)lvs-fullnat

  

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

 總結:

  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首部實現轉發,支持遠距離通訊;

相關文章
相關標籤/搜索