Haproxy實現反向代理及負載均衡
1.Haproxy介紹
HaProxy是一個特別適用於高可用性環境的TCP/HTTP開源的反向代理和負載均衡軟件。在七層負載均衡方面的功能很強大(支持cookie track, header rewrite等等),支持雙機熱備,支持虛擬主機,支持健康檢查,同時還提供直觀的監控頁面,可以清晰的監控服務集羣的運行狀況
2. Haproxy的配置
HAProxy的配通過程分爲3個主要部分:
-
命令行參數,這是最優先的
-
global (全局)段,設置進程級參數;
-
代理配置段,通常位於default,listen,backend這樣的形式內。
配置文件的語法是由關鍵字後跟可選的一個或者多個參數(參數之間有空格)組成。如果字符串中包含空格,必須用\
進行轉義.
Haproxy配置段中分五大部分:
-
global
:全局參數配置,進程級的,用來控制Haproxy啓動前的一些進程及系統設置 -
defaults
:配置些默認的參數,可以被frontend,backend, listen段集成使用 -
frontend
:用來匹配接收客戶所請求的域名、uri等,並針對不同的匹配做不同的請求處理 -
backend
:定義後端服務器集羣,以及對後端服務器集羣的一些權重、隊列、連接數等選項的設置,類似於nginx中的upstream模塊 -
listen
:可以理解爲frontend和backend的組合體。Haproxy配置文件的配通方法主要有兩種,一種是由前端(frontend )和後端( backend )配置塊組成,前端和後端都可以有多個。第二種方法是隻有一個listen配置塊來同時實現前端和後端。最常用也是推薦的方法爲第一種,即frontend和backend的模式
3.實現反向代理及負載均衡
實驗環境:
server1---haproxy
server2---服務端
server3---服務端
server1:
step1 配置haproxy:
yum install haproxy -y
cd /etc/haproxy
ls
vim haproxy.cfg
把前面的示例註釋掉,再寫入以下內容:
87 listen admin *:8080
88 stats enable
89 stats uri /status #監控頁面地址
90 stats auth admin:westos #管理帳號和密碼
91 stats refresh 5s #刷新頻率
92
93 listen westos *:80 #監聽的實例名稱,地址和端口
94 balance roundrobin #負載均衡算法
95 server web1 172.25.254.2:80 check #後端
96 server web2 172.25.254.3:80 check
step2 啓動haproxy:
systemctl start haproxy #啓動haproxy
netstat -antlp
在server2和server3中:
配置後端http:
yum install httpd -y
cd /var/www/html/
vim index.html
systemctl start httpd
測試:
訪問172.25.254.1:8080/status---輸入用戶名admin和密碼westos---看到監控頁面
curl 172.25.254.1 #看到server2和server3輪詢的情況
關閉server2的http:
systemctl stop httpd
再次測試:
curl 172.25.254.1 #只有server3
在172.25.254.1:8080/status監控頁面可以看到server2 down的信息