負載均衡是系統設計最常見的一種方式,Nginx、HAProxy、LVS、F5用得比較普遍,不過Nginx只能在HTTP層負載,而HAProxy即可以在7層做負載,也可以在4層做負載,LVS配置有點太麻煩。
HAProxy是免費、極速且可靠的用於爲TCP和基於HTTP應用程序提供高可用、負載均衡和代理服務的解決方案,尤其適用於高負載且需要持久連接或7層處理機制的web站點。HAProxy還可以將後端的服務器與網絡隔離,起到保護後端服務器的作用。HAProxy的負載均衡能力雖不如LVS,但也是相當不錯,而且由於其工作在7層,可以對http請求報文做深入分析,按照自己的需要將報文轉發至後端不同的服務器(例如動靜分離),這一點工作在4層的LVS無法完成。
haproxy的安裝,haproxy官網下載地址:http://www.haproxy.org/download/
haproxy 常用命令:
命令 | 說明 |
---|---|
/app/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg | 啓動haproxy 服務 |
ps -ef |grep haproxy |
查看haproxy 服務的進程狀態 |
killall haproxy | 停止haproxy 服務 |
注: | 執行killall haproxy命令的前提就是,不能又進行調用haproxy服務,例如:keepalived正在調用 haproxy服務,執行killall haproxy命令無效 |
重新啓動haproxy 服務
/app/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st `cat /var/run/haproxy.pid`
注:haproxy安裝路徑
文章目錄
一、Haproxy簡介
HAProxy是一款提供高可用性、負載均衡以及基於TCP和HTTP應用的代理軟件,HAProxy是完全免費的、藉助HAProxy可以快速並且可靠的提供基於TCP和HTTP應用的代理解決方案。
HAProxy適用於那些負載較大的web站點,這些站點通常又需要會話保持或七層處理。
HAProxy可以支持數以萬計的併發連接,並且HAProxy的運行模式使得它可以很簡單安全的整合進架構中,同時可以保護web服務器不被暴露到網絡上。
二、Haproxy 安裝實戰操作
PS:119、120 節點同時安裝Haproxy,下面步驟同步操作
2.1. 下載環境+工具依賴包
yum install gcc vim wget
2.2.下載 haproxy
wget https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-2.1.2.tar.gz/sha512/929d244a67f93337e3c791b1a29f9643ac288acdf0090dc7a05c72caf61c3b04ef376b84737351f0c54d58bca66ed8af18faa20ec3adc97067313732e0dfcd7d/haproxy-2.1.2.tar.gz
注:官網下載太慢
建議使用傳送門
各個版本鏈接如下:
https://src.fedoraproject.org/repo/pkgs/haproxy/
2.3. 解壓haproxy
tar -zxf haproxy-2.1.2.tar.gz -C /app/
2.4. 進入解壓目錄、進行編譯、安裝haproxy
#進入指定的解壓目錄
cd /app/haproxy-2.1.2/
#對haproxy進行源碼編譯
make TARGET=linux31 PREFIX=/app/haproxy
#安裝 編譯好的haproxy 並指定安裝目錄(根據公司要求)
make install PREFIX=/app/haproxy
#創建haproxy目錄放置配置文件
mkdir /etc/haproxy
#賦權
groupadd -r -g 149 haproxy
useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy
#創建haproxy配置文件
touch /etc/haproxy/haproxy.cfg
Haproxy配置
PS:haproxy 配置文件haproxy.cfg詳解
vim /etc/haproxy/haproxy.cfg
給120服務器將此配置文件同步到/etc/haproxy目錄下面
記得要修改一下haproxy的ip地址
2.5. 創建+配置haproxy配置文件
#創建haproxy配置文件
touch /etc/haproxy/haproxy.cfg
#Haproxy配置
PS:haproxy 配置文件haproxy.cfg詳解
vim /etc/haproxy/haproxy.cfg
添加內容如下:
#logging options
global
log 127.0.0.1 local0 info #日誌輸出配置,所有日誌都記錄在本機,通過local0輸出
maxconn 5120
chroot /app/haproxy #haproxy 安裝路徑
uid 99 #所屬運行的用戶uid
gid 99 #所屬運行的用戶組
daemon #後臺運行
quiet
nbproc 20
pidfile /var/run/haproxy.pid #指定PID文件路徑
defaults
log global
#使用4層代理模式,"mode http"爲7層代理模式
mode tcp
#if you set mode to tcp,then you nust change tcplog into httplog
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
#連接超時時間
timeout connect 5s
#客戶端空閒超時時間爲 60秒 則HA 發起重連機制
timeout client 60s
#服務器端連接超時時間爲 15秒 則HA 發起重連機制
timeout server 15s
#front-end IP for consumers and producters
listen rabbitmq_cluster
bind 0.0.0.0:5672 #綁定協議端口
#配置TCP模式
#所處理的類別,默認採用http模式,可配置成tcp作4層消息轉發
mode tcp
#balance url_param userid
#balance url_param session_id check_post 64
#balance hdr(User-Agent)
#balance hdr(host)
#balance hdr(Host) use_domain_only
#balance rdp-cookie
#balance leastconn
#balance source //ip
#簡單的輪詢
balance roundrobin
#負載均衡策略
#rabbitmq集羣節點配置 #inter 每隔五秒對mq集羣做健康檢查, 2次正確證明服務器可用,2次失敗證明服務器不可用,並且配置主備機制
server mq-01 192.168.0.115:5672 check inter 5000 rise 2 fall 2
server mq-02 192.168.0.117:5672 check inter 5000 rise 2 fall 2
server mq-03 192.168.0.118:5672 check inter 5000 rise 2 fall 2
#配置haproxy web監控,查看統計信息
listen stats
bind 192.168.0.119:8100 #前端瀏覽器中查看統計的WEB界面地址
mode http
option httplog #日誌類別,採用httplog
stats enable
stats auth admin:123456 #設置查看統計的賬號密碼
#設置haproxy監控地址爲http://localhost:8100/rabbitmq-stats
stats uri /rabbitmq-stats
stats refresh 5s #5s刷新一次
注:以上配置基於haproxy-2.1.2 版本,低版本有部分差異
2.6. 啓動haproxy
/app/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
注: -f 指定啓動的配置文件
2.7. 查看haproxy進程狀態
ps -ef | grep haproxy
119 haproxy 服務器進程狀態:
三、瀏覽器訪問+驗證 haproxy
PS:訪問如下地址可以對rmq節點進行監控:
http://192.168.0.119:8100/rabbitmq-stats