1. 程式人生 > >集群環境分析及部署(基礎)

集群環境分析及部署(基礎)

服務器 檢測 記錄 能力 健康

集群概念:

由兩個或兩個以上的服務實體協調、配合完成一系列工作的模式,對外表現為一個整體。

特點

分配用戶請求

故障轉移

共享存儲


結構

agent 負載調度器

業務層 服務器池

存儲 共享存儲


1.垂直擴展

為同樣的計算資源池加入更多資源,比如增加更多內存、磁盤或是虛擬cpu,來應對增加的應用負載

2.水平擴展

需要向計算平臺加入更多的機器或設備,來處理增長的需求

向上拓展:對硬件的升級、更換、提升

缺點:

性能:提升是有限度的

技術分享


技術分享


弊端:

DNS沒有對後端設備健康狀態進行檢測的能力,也就是說當WEB2設備出現故障之後,DNS還是根據自己緩存的記錄把任務分配到WEB2上。

dns的缺陷:無法實現健康狀態檢查

緩存dns無法實現分配用戶請求

DNS的解析緩存造成任務分配不均,導致單個服務器壓力過大。

算法:

RR(Round-Robin):輪詢

WRR(weightd-Round-Robin):權重(加權輪詢)

技術分享


使用agent代理機制,可以對後端設備的健康狀態進行檢測,有效提高的工作效率。

最基礎的一個集群拓撲:

技術分享


負載均衡集群(LBC Load Balance Cluster

作用:減輕單臺服務器壓力

Load Balancing負載均衡,不同節點之間相互獨立,不共享任何資源;通過一定算法將客戶端的訪問請求平分到群集的各個節點上,充分利用每個節點的資源。負載均衡擴展了網絡設備和服務器帶寬,增加吞吐量,加強網絡數據處理能力。

實現

軟件:LVS RAC

硬件:F5

技術分享


1.分擔系統的負載

2.監控節點的運行情況

在一個網絡下,可以搭建多個負載均衡集群來實現壓力的分散:

技術分享

技術分享


區別:

硬件後期的維護,比較好,但是價格偏高

軟件靈活性比較大,價格相對便宜

高可用集群(HA):保證服務器的不間斷運行

技術分享

為應用程序提供持久訪問

出現故障自由切換


實現訪問web1和web2無論哪一個,得到的結果都是一樣的,不會有偏差

技術分享


為了使用web1和web2內容一致:

使用的機制是:心跳檢測

方法實現:

RS232串口線(心跳線)

每隔幾秒鐘發個數據包,看對方是否(存活)有回應,無回應,則判斷目標出現問題

現有網卡

技術分享

通過兩個服務器之間的eth1端口進行檢測(每隔一段時間發送數據包進行確認)

eth0是給用戶訪問使用的

服務器可用性要求標準:

99%2個91年87.6小時(停機)
99.9%3個91年8.8小時(停機)
99.99%4個91年53分鐘(停機)
99.999%5個91年3-5分鐘(停機)

如果心跳線出現故障:

兩臺主機都認為對方出現故障(死亡),都會搶著接替對方工作,處理響應客戶的請求,搶奪共享的資源、數據。(這種現象稱之為“腦裂”)

帶來的後果:數據不完整、甚至是災難級

技術分享


在腦裂的情況下:

兩臺主機都認為對方已死亡,都會對共享存儲服務器,讀取、寫入數據,這樣同時對一個文件,進行寫入,會造成數據丟失,完整性遭到破壞。

對服務造成影響:導致訪問不可達

技術分享

正常情況下web1在工作,web2不工作,在腦裂情況下,雙方主機都認為對方已死亡,這時,web2服務器會搶奪web1的IP地址,給自己配置,在同一個網絡下,由於web1和web2使用相同的IP,會造成網絡故障,用戶不能正常訪問服務器。

解決方案:

預防為主:增加冗余心跳線

強制隔離:

技術分享

兩臺服務器都連接電源交換機,當web2檢測出web1出問題時,想要接替工作,又為了避免腦裂情況出現,這時,web2會發送一條指令給電源交換機,這時電源交換機會將連接web1的電源線斷掉,這樣就不會出現web1和web2沖突的現象

Stonish:爆頭

Shoot in other node in the head

用工具實現:ipfail

為兩個服務器設置參考IP(一般是網關IP)

當兩臺服務器認為對方出問題時,這時會ping 設置的參考IP,如果參考IP都ping不通,這時服務器會判定問題不是出在對方服務器,是自己內部出了問題,這時,會檢測自己內部,並作出相應的動作

高可用集群軟件:

技術分享


高性能運算集群:

技術分享


A包含10個子任務:a1 a2 a3 .......a10

每個子任務完成需要1小時

負載均衡集群:(單位時間內處理的子任務)

1臺計算機完成任務需要10小時(處理10個子任務)

10臺計算機完成任務需要10小時(總共處理100個子任務)

高性能運算集群:(縮短單個任務的執行時間,來提升效率)

1臺計算機完成任務需要10小時(處理10個子任務)

10臺計算機完成任務需要1小時(總共處理10個子任務)

高性能集群概念:

高性能計算集群就是將一個大的運算任務拆分,每一個節點計算其中一部分運算內容,最後再將每臺計算機的處理結果匯總,得到我們想要的答案,這種運算方式就是高性能運算集群。

技術分享

3PB的數據需要處理,這時AGENT會告訴客戶端,如何分發到每個存儲服務器為100G,之後,客戶端會找AGENT2,詢問AGENT2如何處理這些分發的數據,這時AGNET2會分別去到每個節點上運行

程序以運算處理數據,當數據被處理完之後,會將數據匯總,反饋給客戶端,這個過程就是高性能運算集群。


技術分享


負載調度器:

技術分享

硬件:F5 citrix array

軟件:

四層負載調度器 四層交換機

效率高

LVS Linux virtual server

七層負載調度器 七層交換機

mysql proxy

nginx

haproxy

高級特性

技術分享


四層交換機:IP+端口

七層交換機:URL或主機名或頁面內容包含的高級特性

區別:

1.觸發條件不同

四層:工作在傳輸層,轉發數據依靠的是三層的ip和四層的port

七層:工作在應用層。轉發數據依靠URL或主機名

2.實現原理不同

四層負載調度器:TCP連接建立一次,客戶端和RS主機之間

四層交換機工作原理:(轉發作用)

技術分享

七層負載調度器:TCP連接建立兩次,客戶端和負載調度器;負載調度器和RS主機

七層交換機工作原理:(起到代理服務器的角色)

技術分享


七層交換機可以根據客戶發起的訪問請求,做出判斷,給客戶相應的內容反饋!

3.應用場景不同

四層負載調度器:TCP應用為主 OA ERP

七層負載調度器:以HTTP協議為主

4.安全性不同

四層負載調度器:轉發攻擊

七層負載調度器:攔截攻擊

IPVS:鉤子函數,內核機制,在請求沒有到達目的地址之前,捕獲並取得優先控制權的函數。

IPVSADM:工作在用戶空間,負責為ipvs內核框架編寫規則,定義誰是集群服務,誰是後端真實 的服務器

LVS概述:

首先簡單介紹一下LVS (Linux Virtual Server)到底是什麽東西,其實它是一種集群(Cluster)技術,采用IP負載均衡技術和基於內容請求分發技術。調度器具有很好的吞吐率,將請求均衡地轉移到不同的服務器上執行,且調度器自動屏蔽掉服務器的故障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。整個服務器集群的結構對客戶是透明的,而且無需修改客戶端和服務器端的程序。

技術分享

技術分享

技術分享

舉例:

技術分享


解釋:當外網客戶端,將請求提交到負載調讀器的外網卡上,這時網卡會對請求進行處理,將請求提交到內核所提供的的INPUT函數模塊上 ,這個函數正常情況下,會將客戶申請訪問本地80端口的應用請求轉發給本地應用所安裝HTTP服務器上面,但是我們真正的目的是,想讓負載調度器將用戶的請求轉發到後端的web網站節點上面去,這時我們就需要IPVS,IPVS在這裏扮演的是鉤子函數角色(正常情況下,所接受的請求會被轉發到本地的相應服務上面,但是IPVS所扮演的鉤子函數角色會在請求被轉發到本地服務上面之前,將數據請求包文強制拿過來,自己先查看,如果發現用戶是訪問集群節點的話,會通過eth1端口,因為IPVS會保存一定的策略,自己能夠判斷,然後會相應的把請求轉交給web1,第二次給web2,依次輪詢。。。)

這時,我們會有疑問,IPVS內核模塊為什麽會知道把請求分別轉發給web1、web2,這是因為是有IPVSadm工具來實現的

CIP:client IP 客戶端IP

DIP:director IP 負載調度器內網口IP

VIP:virtual IP 虛擬IP 集群IP

RIP:realserver IP 服務器節點IP 真實服務器IP

NAT:地址轉換

技術分享

註意:

1.最多支持10臺左右RS

2.集群節點(director和RS)必須在同一個網絡中

3.RS的網關必須位於客戶端和RS之間

4.RS可以用任意的操作系統

5.RS網關必須設置為director

DR:路由模式

技術分享

技術分享

優點:

大大減輕了負載調度器的壓力

可以支持更多的服務器節點RS

註意:

1.RS必須和director在一個網絡

2.RS可以設置公網IP或私網IP(當負載調度器壞了的話,可以直接讓客戶訪問通過公網IP訪問集群)

3.負載調度器只負責入站請求

4.集群節點的網關不能使用director

TUN:隧道模式

技術分享

技術分享


優點:

不受地理位置限制

註意:

1.所有節點都要有公網IP,RS並且必須配置在RIP上

2.RS一定不能使用負載調度器作為默認網關

4.必須支持隧道功能

負載調度器算法:

靜態算法:只考慮算法本身,不考慮服務器狀態

rr (輪循):從1開始到n結束(N=RS個數)、無狀態的的調度算法,不考慮服務器性能

wrr (加權輪循):按權重比例進行調度,權重越大,負責的請求越多(權重=優先級)

sh (源地址hash):源地址散列或源地址hash,實現會話綁定,保留之前建立的會話信息。將來自於同一個ip地址的請求發送給一個真實服務器。

dh (目標地址hash):將同一個目標地址的請求,發送給同一個服務器節點。提高緩存命中率

動態算法:既要考慮算法本身,也要考慮服務器狀態(原理:通過hash表記錄連接狀態----active/inactive)

LC (最少連接):將新的連接請求分配給當前連接數最少的服務器。。。公式:活動連接*256+非活動連接

WLC(加權最少連接):最少連接的特殊模式。。。公式:(活動連接*256+非活動連接)/權重

SED(最短期望延遲):加權最少連接的特殊模式。。。。公式:(活動連接 +1)*256/權重

NQ (永不排隊):sed的特殊模式,當某臺真實服務器連接為0時,直接分配,不計算

LBLC(基於局部性的最少連接):dh的特殊模式,既要提高緩存命中率,又要考慮連接數量。先根據請求的目標 IP 地址尋找最近的該目標 IP 地址所有使用的服務器,如果這臺服務器依然可用,並且有能力處理該請求,調度器會盡量選擇相同的服務器,否則會繼續選擇其它可行的服務器

LBLCR(帶復制的基於局部性的最少連接):LBLCR=LBLC+緩存共享機制

實驗:基於NAT模式負載集群搭建

拓撲展示:

技術分享




背景:需要五臺虛擬機,圖中IP為展示使用,以下操作,不一樣

技術分享

技術分享

技術分享

技術分享

技術分享


在共享存儲服務器上面配置NFS

技術分享

技術分享

在RS1和RS2上面分別安裝Apache服務

RS1的網頁頁面通過掛載NFS服務器上面的首頁

mount -t nfs 192.168.115.179:/share /var/www/html/

掛載之後、啟動Apache服務之後,失敗

chcon -R -h -t httpd_sys_content_t /var/www/html/

之後就好了

RS1的網關指向負載調度器的內網口IP

route add default gw 192.168.115.175

RS2的網頁由自己創建,兩個服務首頁不同,方便區分

RS2的網關指向負載調度器的內網口IP

技術分享

負載調度器:(雙網卡)

開啟路由轉發功能

技術分享

並執行sysctl -p刷新

安裝IPVSadm軟件

技術分享

檢查ipvsadm是否安裝成功

技術分享

配置

技術分享


外網客戶端驗證:(每刷新一次,頁面會一次出現)

技術分享

技術分享

技術分享

技術分享



基於DR模式的負載集群:

原理拓撲展示:

技術分享

實驗拓撲展示:

技術分享


圖上IP地址僅供參考:

ARP工作原理:

技術分享

arp_ignore:接收到其他主機的ARP請求後的響應級別

後面參數設置的如果是0:

只要本機配置有響應的IP地址就響應

技術分享

後面參數設置的如果是1:

僅響應請求的目的地址配置在請求到達的網絡接口上

技術分享


arp_announce:設置ARP通告的級別

0:通告網絡本機所有接口的任何地址信息

2:僅向目標網絡通告網絡與其相匹配的網絡信息

配置:

技術分享

技術分享

技術分享

技術分享

技術分享

負載調度器:

配置ifcfg0:1映射子端口,地址為集群IP(210)

優化環境配置:(/etc/sysctl.conf)

技術分享

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

sysctl -p

查詢IPVS是否安裝:

grep -i "ip_vs" /boot/config-2.6.32-431.el6.x86_64技術分享

安裝ipvsadm

rpm -ivh ipvsadm-1.26-2.el6.x86_64.rpm

設置增加負載調度器,默認使用輪詢

ipvsadm -A -t 192.168.115.210:80 -s rr

設置使用DR模式

ipvsadm -a -t 192.168.115.210:80 -r 192.168.115.178:80 -g

ipvsadm -a -t 192.168.115.210:80 -r 192.168.115.173:80 -g

ipvsadm -L -n

service ipvsadm save

共享存儲服務器:

技術分享

技術分享


RS1配置:

配置本地回環接口IP

技術分享

優化環境變量(/etc/sysctl.conf)

技術分享

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl -p

安裝Apache服務,並將NFS服務器上面的主頁內容掛在過來

mount -t nfs 192.168.115.179:/share /var/www/html/

技術分享


設置一條路由,凡是請求跟集群地址(115.210)相關的信息的時候,都會交給本地回環接口處理

route add -host 192.168.115.210 dev lo:0


RS2配置:

配置本地回環映射端口:

技術分享

優化環境:

技術分享

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl -p

安裝Apache服務,手動創建一個主頁,區分內容,以便達到實驗效果

技術分享


設置一條路由,凡是請求跟集群地址(115.210)相關的信息的時候,都會交給本地回環接口處理

route add -host 192.168.115.210 dev lo:0

客戶端驗證:直接訪問集群的IP,進行訪問,刷新會依次輪詢顯示頁面

技術分享

技術分享

ipvsadm命令參數選項詳細含義如下所示

-A (--add-service) 在內核的虛擬服務器列表中添加一條新的虛擬IP記錄。也就是增加一臺新的虛擬服務器。虛擬IP也就是虛擬服務器的IP地址。

-E (--edit-service) 編輯內核虛擬服務器列表中的一條虛擬服務器記錄

-D (--delete-service) 刪除內核虛擬服務器列表中的一條虛擬服務器記錄

-C (--clear) 清除內核虛擬服務器列表中的所有規則

-R (--restore) 恢復虛擬服務器規則

-S (--save) 保存虛擬服務器規則,輸出為-R 選項可讀的格式

-a (--add-server) 在內核虛擬服務器列表的一條記錄裏添加一條新的Real Server記錄。也就是在一個虛擬服務器中增加一臺新的Real Server

-e (--edit-server) 編輯一條虛擬服務器記錄中的某條Real Server記錄

-d (--delete-server) 刪除一條虛擬服務器記錄中的某條Real Server記錄

-L|-l –list 顯示內核中虛擬服務器列表

-Z (--zero) 虛擬服務器列表計數器清零(清空當前的連接數量等)

--set tcp tcpfin udp 設置連接超時值

-t 說明虛擬服務器提供的是tcp服務,此選項後面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-u 說明虛擬服務器提供的是udp服務,此選項後面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-f fwmark 說明是經過iptables標記過的服務類型

-s 此選項後面跟LVS使用的調度算法

有這樣幾個選項: rr|wrr|lc|wlc|lblc|lblcr|dh|sh

默認的調度算法是: wlc

-p [timeout] 在某個Real Server上持續的服務時間。也就是說來自同一個用戶的多次請求,將被同一個Real Server處理。此參數一般用於有動態請求的操作中,timeout 的默認值為360 分鐘。例如:-p 600,表示持續服務時間為600分鐘。

-r 指定Real Server的IP地址,此選項後面跟如下格式:

[real-server-ip:port]

-g (--gatewaying) 指定LVS 的工作模式為直接路由模式(此模式是LVS 默認工作模式)

-i (-ipip) 指定LVS 的工作模式為隧道模式

-m (--masquerading) 指定LVS 的工作模式為NAT模式

-w (--weight) weight 指定Real Server的權值

-c (--connection) 顯示LVS目前的連接信息 如:ipvsadm -L -c

-L --timeout 顯示“tcp tcpfin udp”的timeout值,如:ipvsadm -L --timeout

-L --daemon 顯示同步守護進程狀態,例如:ipvsadm -L –daemon

-L --stats 顯示統計信息,例如:ipvsadm -L –stats

-L --rate 顯示速率信息,例如:ipvsadm -L --rate

-L --sort 對虛擬服務器和真實服務器排序輸出,例如:ipvsadm -L --sort

註: 保存添加的虛擬ip記錄和ipvsadm的規則可以使用service ipvsadm save,還可以用-S或--save。清除所有記錄和規則除了使用-C,還以使用--clear。


本文出自 “Change life Start fresh.” 博客,請務必保留此出處http://ahcwy.blog.51cto.com/9853317/1940293

集群環境分析及部署(基礎)