1. 程式人生 > >Linux的企業-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企業-高可用集群Haproxy+corosync+pacemaker+fence

高可用負載均衡haproxy+corosync+pacemaker+fence

一.Haproxy簡介

Haproxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。

HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的並發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。

.HAProxy的特點
1、支持兩種代理模式:TCP(四層)和HTTP(七層),支持虛擬主機;
2、能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作
3、支持url

檢測後端的服務器出問題的檢測會有很好的幫助。
4、更多的負載均衡策略比如:動態加權輪循(Dynamic Round Robin),加權源地址哈希(Weighted Source Hash),加權URL哈希和加權參數哈希(Weighted Parameter Hash)已經實現
5、單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度。
6HAProxy可以對Mysql進行負載均衡,對後端的DB節點進行檢測和負載均衡。
9、支持負載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權輪循)、source(原地址保持)、RI(請求URL)、rdp-cookie(根據
cookie
10、不能做Web服務器即Cache


三.高可用corosync+pacemaker介紹

高可用架構由兩個核心部分組成,一個是心跳檢測,判斷服務器是否正常運行;一個是資源轉移,用來將公共資源在正常服務器和故障服務器之間搬動。整個運行模式就是心跳檢測不斷的在網絡中檢測各個指定的設備是否能夠正常響應,如果一旦發生設備故障,就由資源轉移功能進行應用的切換,以繼續提供服務。

corosync,心跳信息傳輸層,它是運行在每一個主機上的一個進程 。
pacemaker是一個集群管理器。它利用推薦集群基礎設施(OpenAIS 或heartbeat)提供的消息和成員能力,由輔助節點和系統進行故障檢測和回收,實現性群集服務(亦稱資源)的高可用性。用於資源轉移。


四.環境配置


客戶機:172.25.29.250

服務端

server1:172.25.29.1 haproxy httpd8080 corosync+pacemaker

server4:172.25.29.4 corosync+pacemaker

RS:

server2:172.25.29.2 httpd

server3:172.25.29.3 httpd



1.安裝haproxy

技術分享


安裝包依賴

技術分享

技術分享


配置指定路徑

技術分享

技術分享


為了方便創建rpm包,先安裝rpmbuild包

技術分享


編譯後做成*.rpm技術分享


安裝做好後的haproxy包

技術分享


2.配置haproxy

復制模版配置文件

技術分享


創建haproxy用戶和添加內核最大連接數量8000

技術分享

技術分享


配置主配置文件

技術分享

技術分享

技術分享


3.測試

服務端口已經打開

技術分享


可以輪詢

技術分享


haproxy監控頁面正常

技術分享


haproxy正常

技術分享


五.Haproxy日誌的配置

vim /etc/rsyslog.conf

技術分享

技術分享

技術分享


測試顯示日誌正常

技術分享

技術分享


六.調度算法的設置


技術分享

1.默認為rr輪詢


2.設置權重weight 2

技術分享

技術分享


server2的權重變大

技術分享


3.設置source算法原地址保持

技術分享

技術分享

技術分享


七.設置動態頁面訪問php

1.載server1上配置文件

技術分享

技術分享


2.在server3上安裝php,配置httpd

技術分享


設置訪問頁面vim /var/www/html/index.php

技術分享


設置httpd默認優先訪問index.php

技術分享

技術分享



3.在客戶機測試

技術分享


八.設置acl禁止訪問用戶

技術分享

技術分享

客戶機172.25.29.250無法訪問

技術分享



九.acl設置重定向


技術分享


設置訪問錯誤的重定向到本機的8080端口

技術分享

將本機的httpd改為8080端口

技術分享

技術分享

技術分享

十.acl設置動態寫入

技術分享

1.設置配置

技術分享

2.在server2上安裝php,設置好所需要的測試文件

在默認的html下放置上傳文件的upload_file.php upload目錄


技術分享

技術分享


3.設置好權限,並將文件傳給server3

技術分享


在server3上設置好權限

技術分享


4.在客戶機上測試

可以上傳圖片

技術分享

可以訪問images目錄下的圖片

技術分享

十一.安裝高可用pacemaker+corosync集群


1.安裝配置

技術分享

技術分享


bindnetaddr 設置網段

多波設置改變一個mcastaddr和mcastport

技術分享

底下添加service

技術分享


server4與server1同樣配置

技術分享

技術分享


2.校驗集群配置文件,顯示錯誤,需要安裝接口插件crmsh

技術分享


crmsh作為pacemaker的接口,而安裝crmsh需要依賴pssh技術分享

技術分享


3.兩邊啟動corosync服務後,在server1上 crm_mon 監控集群健康狀態,server1與server4 online

技術分享


技術分享


4.在server4上使用crm相關命令管理集群

STONITH
shoot the other node in the head,這個RA類型主要是做節點隔離的,專為配置stonith設備耐用。
使用STONITH主要目的就是為了避免由於網絡原因,節點之間不能完全通信(比如分為了兩部分,左邊3臺,右邊2臺),左邊的3臺能收到各自的心跳信息,右邊的2臺也可以收到各自的心跳信息,就是左邊部分和右邊部分收不到各自的心跳信息,因此,它們都各自以為對方故障了,就會各自重新推選出一臺做為DC(Designated Coordinator),從而出現了兩個集群,這就導致了資源爭用;如果恰好雙方都往其共享存儲寫數據,很可能就會導致文件系統崩潰,這種現象就叫做集群分裂(brain-split)。
為了避免集群分裂,就出現了法定票數(quorum,票數>半數票數的集群成為滿足法定票數)這一說法,就是在集群通信故障時,為了避免資源搶占,應該讓一方放棄成為集群,具體應該哪方放棄呢?這就是投票的結果了,只有具有法定票數的一方才有資格做為集群,相反的一方就應該退出集群,但它放棄後並不代表服務停止,所以應該讓其釋放資源,關閉電源。stonith設備就是在這裏用的,要讓退出集群的設備徹底失效,電源交換機就是這個原理了
而如果一個集群只有兩個節點的話,這又是一種特殊的集群,萬一出現集群分裂後,它們雙方可能都不會具有法定票數,那結果可想而知,資源不會轉移,導致整個資源都故障了,因為沒有仲裁設備
說這麽多,就是為了說明下面兩個比較重要的概念
①、corosync默認啟用了stonith功能,而我們要配置的集群並沒有stonith設備,因此在配置集群的全局屬性時要對其禁用
②、當一個集群沒有法定票數時,資源是不會正常轉移的,當一個節點出現故障時,資源不會正常的轉移到正常的節點上,就會導致所有的資源都故障了。所以,應該定義法定票數不足時做忽略而不是停止所有資源

技術分享



5.安裝fence

在server1上安裝fence

技術分享


在客戶機上安裝fence


技術分享

技術分享

技術分享


端口1229已經開打

技術分享


6.在server4上配置fence機制技術分享


在server1上crm_mon監控集群健康狀態,fence已經啟動正常

技術分享


7.在server4上配置虛擬IP,並重啟corosync服務

技術分享


在server1上crm_mon監控集群健康狀態,vip已經啟動正常

技術分享


技術分享


8.測試fence機制

技術分享

關閉server4上節點,服務到server1上

技術分享

技術分享


技術分享


技術分享

技術分享



十二.添加負載均衡Haproxy

1.server4配置haproxy

技術分享

修改綁定的VIP

技術分享


將server1的haproxy傳給server4

技術分享


2.server4安裝haproxy

在高可用上配置haproxy

crm node standby操作節點的備用屬性以確定資源是否可在此節點上運行

在資源裏更新server1 的haproxy

技術分享

技術分享


3.server4節點上線,集群正常,VIP已經到server4

技術分享

技術分享



4.測試,停止server4節點,服務到server1

技術分享

技術分享

技術分享


server4網卡down掉,服務到server1

技術分享

技術分享

技術分享

技術分享

技術分享



Linux的企業-高可用集群Haproxy+corosync+pacemaker+fence