前言
隨著互聯網業務的迅猛發展,大型電商平臺和門戶網站對系統的可用性和可靠性的要求越來越高,高可用集群、負載均衡集群成為一種熱門的系統架構解決方案。在眾多的負載均衡解決方案中,有基于硬件的負載均衡設備,例如F5、Big-IP等,也有基于軟件的負載均衡產品,如LVS、Nginx以及本文介紹的HAProxy等。在軟件的負載均衡產品中,又分為兩種實現方式,分別是基于操作系統的實現和基于第三方應用的實現。LVS就是基于Linux操作系統的一種軟負載實現,而HAProxy就是基于基于第三方應用實現的軟負載均衡。
HAProxy簡介
HAProxy是一個開源、高性能、基于TCP(四層)和HTTP(七層)應用的負載均衡軟件,它的顯著優點如下:
-
可靠性與穩定性都非常出色,可與硬件級設備媲美。
-
支持多種負載均衡調度算法,并且也支持session保持。
-
理論上1G可用RAM空間可維持4W-5W個并發連接,性能強大可見一斑。
-
擁有功能強大的后端服務器的狀態監控web頁面,可以實時了解設備的運行狀態,還可實現設備上下線等簡單操作。
-
HAProxy還擁有功能強大的ACL支持,在架構設計與實現上帶來很大方便。
HAProxy配置概述
在講配置之前,順帶提一下安裝HAProxy,以Centos7為例的話可以直接yum安裝一下就ok了。安裝完成之后默認的主配置文件路徑為/etc/haproxy/haproxy.cfg.這個主配置文件主要由5個部分組成:
-
global段:
用來設定全局配置參數,配置的為進程級別的參數,且通常與其運行的OS相關。 -
defaults段:
默認參數的配置,在此處配置的各種參數默認會被frontend、backend、listen段引用,而如果frontend、backend、listen段如果設置新的相對應的參數,會覆蓋defaults段的設定。 -
frontend段:
用于定義一系列監聽的套接字,這些套接字可接受客戶端請求并與之建立連接。 -
backend段:
用于定義一系列“后端”服務器,代理將會將對應客戶端的請求轉發至這些服務器。 -
listen段:
是frontend和backend的結合體,通過關聯“前端”和“后端”定義了一個完整的代理,通常只對TCP流量有用。
HAProxy簡單配置實例
拓撲環境很簡單,3臺虛擬機作為3個節點,其中一臺運行HAProxy,另外2臺作為后端Web Server。其中192.168.1.67為HAProxy節點的地址,.68和.69是后端Web Server地址。
-
HAProxy的日志配置策略
默認情況下,HAProxy沒有配置日志輸出功能,但是為了管理和維護方便,日志的輸出很有必要,這里簡單介紹下HAProxy如何啟用日志功能:
①首先在global段開啟,一般默認是開啟的;
vim /etc/haproxy/haproxy.conf global log 127.0.0.1 local2
②以rsyslog管理系統日志為例:
vim /etc/rsyslog.conf $ModLoad imudp $UDPServerRun 514 #啟用相關協議與監聽接口 local2.* /var/log/haproxy.log #設置日志輸出路徑 systemctl restart rsyslog.service
-
frontend與backend簡單示例
實現將來自用戶的80端口的http請求轉發至后端8000上的server服務:
①編輯Web Server主配置文件(/etc/httpd/conf/httpd.conf),找到約在42行的Listen 80,并在下面追加:
Listen 8000
并且在兩臺web服務器的首頁添加內容以示區別。
②編輯haproxy主配置文件如下:
frontend main :80 #:80代表匹配任意源地址且源端口為80的請求 default_backend websrvs backend websrvs balance roundrobin #輪詢調度 server web1 192.168.1.68:8000 check server web2 192.168.1.69:8000 check #check用于做健康狀態檢測
③啟動haproxy
-
實例效果
原創文章,作者:Net21_charles,如若轉載,請注明出處:http://www.www58058.com/24613
寫的很好,排版還可以在漂亮一點,用5w1h的思想寫,加油