防偽碼:不必向我解釋色彩,我的眼里自有一片湛藍
第七章 使用Haproxy搭建Web集群
前言:Haproxy是目前比較流行的一種集群調度工具,同類集群調度工具很多,如LVS和Nginx。相比較而言,LVS性能最好,但是搭建相對復雜,Nginx的upstream模塊支持集群功能,但是對集群節(jié)點的檢查功能不強,性能沒有Haproxy好,其官網是http://haproxy.1wt.eu/。本章我們將使用Haproxy搭建一套Web集群,并增加一臺Haproxy做雙機熱備,達到高可用的效果。
一、前置知識點:
1、HTTP請求
請求方式(GET方式和POST方式)
返回狀態(tài)碼:
正常的狀態(tài)碼為2××、3××
異常的狀態(tài)碼為4××、5××
2、負載均衡常用調度算法:
RR(Round Robin):輪詢調度
LC(Least Connections):最小連接數
SH(Source Hashing):基于來源訪問調度
3、常見的web集群調度器
軟件:LVS、Haproxy、Nginx
硬件:F5、梭子魚、綠盟等
二、綜合實驗:使用Haproxy搭建web集群
1、實驗拓撲圖:
2、案例環(huán)境表:
3、 實驗步驟
1) 編譯安裝haproxy
首先安裝兩個支持包
2) haproxy服務器的配置
首先建立haproxy的配置文件
拷貝配置文件的樣本復制到/etc/haproxy目錄下
修改haproxy.cfg配置文件(分為三部分,global為全局,defaults為默認,listen為應用組件)
詳解配置參數:
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log /dev/log local0 info //日志記錄,local0為日志設備,默認存放到系統(tǒng)日志
log /dev/log local1 notice //notice為日志級別,通常有24個級別
#log loghost local0 info
maxconn 4096
#chroot /usr/share/haproxy
uid 99 //用戶uid
gid 99 //用戶gid
pidfile /var/run/haproxy.pid //pid文件的路徑以及文件名
daemon //后臺運行
#debug
#quiet
defaults
log global //定義日志為global配置中的日志定義
mode http //模式為http協(xié)議
option httplog //采用http日志格式記錄日志
option dontlognull
retries 3 //檢查節(jié)點服務器的失敗次數,連續(xù)達到三次則認為節(jié)點不可用
maxconn 2000 //最大連接次數
contimeout 5000 //連接超時時間
clitimeout 50000 //客戶端超時時間
srvtimeout 50000 //服務器超時時間
listen webcluster 0.0.0.0:80
option httpchk GET /index.html //檢查服務器的index.html文件
balance roundrobin //負載均衡調度算法為輪詢
server inst1 192.168.1.30:80 check inter 2000 fall 3 //定義節(jié)點地址和端口,健康檢查三次
server inst2 192.168.1.40:80 check inter 2000 fall 3
3)創(chuàng)建自啟動腳本
4) 安裝nginx(以第一臺nginx為例)
剩下的節(jié)點配置一樣,為了測試時看出效果,建議將測試頁的內容不要保持一致
第一臺如圖所示:
第二臺如圖所示:
5) 開啟haproxy服務(防火墻開啟tcp80端口)
6) 測試web群集
首先測試負載均衡,在客戶端上打開http://192.168.1.10
下面再測試一下高可用,我們把第一臺服務器的網卡斷掉,模擬服務器出現(xiàn)故障,如果網頁依然可以訪問,說明群集的高可用沒有問題。
7) 配置haproxy日志
Haproxy的日志默認是保存到系統(tǒng)的syslog中,查看起來不方便,所以我們在生產環(huán)境中可以將日志單獨存儲到不同的文件中,配置如下
首先修改配置文件,主要改下面的部分(這兩行的作用是將info和notice的日志分別記錄到不同的文件中)
然后修改rsyslog配置,將haproxy相關的配置獨立定義到haproxy.conf,并放到/etc/rsyslog.d下,rsyslog啟動時會自動加載此目錄下所有的配置文件。
加入以下內容
然后重新啟動rsyslog服務
測試日志信息:
在客戶機訪問網站之后,可以使用tail -f /var/log/haproxy/haproxy-info.log即時查看日志
8)生產環(huán)境中需要對Haproxy進行參數優(yōu)化,以滿足實際生產的要求
參數 | 參數說明 | 優(yōu)化建議 |
maxconn | 最大連接數 | 推薦使用10240 |
daemon | 守護進程模式 | Haproxy可以使用非進程守護模式啟動,生產環(huán)境建議使用守護進程模式啟動 |
nbproc | 負載均衡的并發(fā)進程數 | 建議與服務器CPU核數相等或成為其2倍 |
retries | 重試次數 | 發(fā)量大,設置為2或3次;服務器節(jié)點不多,可以設置為5或6次 |
option http-server-close | 主動關閉http請求選項 | 建議在生產環(huán)境中使用此選項,避免由于timeout時間設置過長導致http連接堆積 |
timeout http-keep-alive | 長連接超時時間 | 可以設置為10s |
timeout http-request | http請求超時時間 | 建議設置5-10s,增加http連接釋放速度 |
timeout client | 客戶端超時時間 | 如果訪問量大,節(jié)點相應慢,可以將此時間設置短一些,意見設置為1min左右即可 |
9)為了實現(xiàn)haproxy的高可用,我們可以配置keepalived。
思路:在以上實驗原有的基礎上增加一臺Haproxy服務器,兩臺調度服務器做雙機熱備,
配置好了之后斷掉第一臺Haproxy網站依然可以訪問對了。
為兩臺Haproxy配置虛擬IP地址作為訪問地址:
訪問:
斷開一臺,發(fā)現(xiàn)仍然可以訪問
使用ip addr show dev eth0命令,發(fā)現(xiàn)從Haproxy調度器已成為主調度器
謝謝觀看,真心的希望能幫到您。
本文出自 “一盞燭光” 博客,謝絕轉載!
更多建議: