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

集羣概念:html

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

特色mysql

分配用戶請求nginx

故障轉移web

共享存儲算法


結構sql

agent   負載調度器後端

業務層   服務器池緩存

存儲   共享存儲安全


1.垂直擴展

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

2.水平擴展

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

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

缺點:

性能:提高是有限度的

wKiom1lJAh-DbySLAAAjHJ1KI9o866.png


wKioL1lJAiHi1YolAAHcxB4XtUM360.png


弊端:

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

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

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

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

算法:

     RR(Round-Robin):輪詢

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

wKiom1lJAiKDLJ0HAAFZ6OX7scg948.png


使用agent代理機制,能夠對後端設備的健康狀態進行檢測,有效提升的工做效率。

最基礎的一個集羣拓撲:

wKioL1lJAiOCbpmrAAHAWDBeocc237.png


負載均衡集羣(LBC Load Balance Cluster

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

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

實現

軟件:LVS RAC

硬件:F5

wKiom1lJAiTQ8GwZAAAquQx6BoU641.png


1.分擔系統的負載

2.監控節點的運行狀況

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

wKiom1lJAijQWKS2AAOEWQrh_Wg278.png

wKioL1lJAiniJoWJAAEihoKnp9E910.png


區別:

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

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

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

wKioL1lJAiyAGoVnAAOEwkOYEFw634.png

爲應用程序提供持久訪問

出現故障自由切換


實現訪問web1和web2不管哪個,獲得的結果都是同樣的,不會有誤差

wKiom1lJAi7RYFUKAAIFKZSGwdM090.png


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

使用的機制是:心跳檢測

方法實現:

RS232串口線(心跳線)

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

現有網卡

wKiom1lJAi-iyJT6AAGlsFG_uYw937.png

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

eth0是給用戶訪問使用的

服務器可用性要求標準:

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

若是心跳線出現故障:

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

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

wKioL1lJAjGwerU2AAGs-Lrn-8I573.png


在腦裂的狀況下:

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

對服務形成影響:致使訪問不可達

wKioL1lJAjOyWueHAAGvBYpmoTk447.png

正常狀況下web1在工做,web2不工做,在腦裂狀況下,雙方主機都認爲對方已死亡,這時,web2服務器會搶奪web1的IP地址,給本身配置,在同一個網絡下,因爲web1和web2使用相同的IP,會形成網絡故障,用戶不能正常訪問服務器。

解決方案:

預防爲主:增長冗餘心跳線

強制隔離:

wKiom1lJAjXwBh5QAAHlVZSQsLU407.png

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

Stonish:爆頭

Shoot in other node in the head

用工具實現:ipfail

爲兩個服務器設置參考IP(通常是網關IP)

當兩臺服務器認爲對方出問題時,這時會ping 設置的參考IP,若是參考IP都ping不通,這時服務器會斷定問題不是出在對方服務器,是本身內部出了問題,這時,會檢測本身內部,並做出相應的動做

高可用集羣軟件:

wKiom1lJAjaQ7JmNAAEyS_21i7M232.png


高性能運算集羣:

wKioL1lJAjmws6zuAAHNAYUaYAA219.png


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

每一個子任務完成須要1小時

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

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

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

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

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

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

高性能集羣概念:

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

wKioL1lJAjvSw0QEAAIL2dB8kjk385.png

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

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


wKiom1lJAj7zfHKsAAJQY-QFfpU999.png


負載調度器:

wKioL1lJAkCxYPASAAGSKvscfDU190.png

硬件:F5 citrix array

軟件:

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

效率高

LVS    Linux virtual server

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

mysql proxy

nginx

haproxy

高級特性

wKiom1lJAkKC44POAAMM5_a7ShY388.png


四層交換機:IP+端口

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

區別:

1.觸發條件不一樣

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

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

2.實現原理不一樣

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

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

wKioL1lJAkOyCR0jAAC16QeozfA722.png

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

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

wKiom1lJAkThoyJ0AADpJhyWhg0164.png


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

3.應用場景不一樣

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

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

4.安全性不一樣

四層負載調度器:轉發***

七層負載調度器:攔截***

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

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

LVS概述:

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

wKiom1lJAkaiidQtAADO05Pze90137.png

wKioL1lJAkfBAO-UAAI3Duebe_0598.png

wKiom1lJAkiinwTYAAB52GcaY6c815.png

舉例:

wKioL1lJAkvBpR2GAAKjI1lOB3c746.png


解釋:當外網客戶端,將請求提交到負載調讀器的外網卡上,這時網卡會對請求進行處理,將請求提交到內核所提供的的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:地址轉換

wKioL1lJAkzR9YhPAAEnoef-J80003.png

注意:

1.最多支持10臺左右RS

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

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

4.RS能夠用任意的操做系統

5.RS網關必須設置爲director

DR:路由模式

wKiom1lJAk6Ql0mKAAE33s62hDc272.png

wKioL1lJAlCjO22hAAKdKZW0G24366.png

優勢:

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

能夠支持更多的服務器節點RS

注意:

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

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

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

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

TUN:隧道模式

wKiom1lJAlLT8I-cAAECbZmeRKI180.png

wKiom1lJAlOh9WEWAAGKmqWL40Q044.png


優勢:

不受地理位置限制

注意:

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模式負載集羣搭建

拓撲展現:

wKioL1lJAlSA6E_jAAF6W3y0tnw895.png




背景:須要五臺虛擬機,圖中IP爲展現使用,如下操做,不同

wKiom1lJAlWhX3j_AAC7FjYWaa4225.png

wKioL1lJAsby0u3TAAC-kea4_rg127.png

wKiom1lJAsexUJ8JAADA1lBVxVs390.png

wKioL1lJAsjjTo3yAAD0DcV2HsM038.png

wKiom1lJAsmTfSAzAACnbL1KQNk068.png


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

wKioL1lJAsmjhN9aAAASm96I0kM694.png

wKioL1lJAsmBMNYeAAARjzosaro018.png

在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

wKiom1lJAsnQfmCxAAAVL89Gwi4094.png

負載調度器:(雙網卡)

開啓路由轉發功能

wKiom1lJAsrzeLamAAArrAcP8t8902.png

並執行sysctl -p刷新

安裝IPVSadm軟件

wKioL1lJAsqgzkcXAAAoh8WFiuM263.png

檢查ipvsadm是否安裝成功

wKioL1lJAsuBYgjlAAByh6eoztE024.png

配置

wKiom1lJAszBPWd-AAB2Ngz97II407.png


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

wKioL1lJAs3wWDRvAABAq48skIo604.png

wKioL1lJAuji8JbmAAA0qQymngM002.png

wKioL1lJAunQ_dN0AACOKuAAOKw915.png

wKiom1lJAurS4lkeAADiRQllPzY172.png



基於DR模式的負載集羣:

原理拓撲展現:

wKiom1lJAuyy7c1SAAH40IL8hjg327.png

實驗拓撲展現:

wKioL1lJAu_w71xRAAPaq5wAneA509.png


圖上IP地址僅供參考:

ARP工做原理:

wKiom1lJAvGBo0w3AAKYVXX778I643.png

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

後面參數設置的若是是0:

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

wKioL1lJAvLA6l4KAACZ-H0eDak039.png

後面參數設置的若是是1:

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

wKioL1lJAvTy6x1WAAF1pXO3EwA428.png


arp_announce:設置ARP通告的級別

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

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

配置:

wKiom1lJAvWAPNXSAAC1KylpUVo187.png

wKioL1lJAvXgeFqiAAClQcFZWT4409.png

wKiom1lJAvaSZNMJAACq5cob4yg163.png

wKiom1lJAvfDrDPNAACN9xP28Vs628.png

wKioL1lJAvjxTWEaAACMlHu72eI498.png

負載調度器:

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

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

wKiom1lJAvjiVi3rAAASB9-LBPU698.png

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_64wKioL1lJAvnTO6VkAAB0Lyobuuk679.png

安裝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

共享存儲服務器:

wKiom1lJAvmiWY-HAAAResO0Sk4863.png

wKioL1lJAvnziLZkAAANadkeAF8480.png


RS1配置:

配置本地迴環接口IP

wKioL1lJAvqQLHilAAAVyZVDt0Q881.png

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

wKiom1lJAzmB9tlZAAAgdP6OdQ0891.png

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/

wKioL1lJAzmBew_FAAAMVs47lik826.png


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

route add -host 192.168.115.210 dev lo:0


RS2配置:

配置本地迴環映射端口:

wKiom1lJAzrjCKm6AAAVhL22-IQ450.png

優化環境:

wKioL1lJAzrxJeiYAAAgKgzzENY848.png

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服務,手動建立一個主頁,區份內容,以便達到實驗效果

wKiom1lJAzuSy0d7AAAQQaD-duA388.png


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

route add -host 192.168.115.210 dev lo:0

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

wKioL1lJAzvC_vxdAABHmQGnb0w174.png

wKiom1lJAzyiFgKOAABBebMj9oo383.png

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。

相關文章
相關標籤/搜索