haproxy高可用之非搶占keepalived(一)
阿新 • • 發佈:2017-08-07
haproxy keepalived 4、配置rsyslog
HAProxy簡介
HAProxy是免費、極速且可靠的用於為TCP和基於HTTP應用程序提供高可用、負載均衡和代理服務的解決方案,尤其適用於高負載且需要持久連接或7層處理機制的web站點。HAProxy還可以將後端的服務器與網絡隔離,起到保護後端服務器的作用。HAProxy的負載均衡能力雖不如LVS,但也是相當不錯,而且由於其工作在7層,可以對http請求報文做深入分析,按照自己的需要將報文轉發至後端不同的服務器(例如動靜分離),這一點工作在4層的LVS無法完成。
1、安裝
# Haproxy版本為1.7.5 wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.5.tar.gz tar -zxvf haproxy-1.7.5.tar.gz mv haproxy-1.7.5 haproxy
# 編譯安裝
# ”TARGET”指定編譯對應的os對應的內核版本,通過”uname -r”查詢內核版本呢,README文件可查詢對應關系
uname -r 2.6.32-504.el6.x86_64 cd haproxy make TARGET=linux2632 PREFIX=/usr/local/haproxy make install PREFIX=/usr/local/haproxy ls /usr/local/haproxy/ doc sbin share
2、編輯配置文件haproxy.cfg
# 存放haproxy配置文件 mkdir -p /usr/local/haproxy/conf cat >> /usr/local/haproxy/conf/haproxy.cfg <<EOF #--------------------------------------------------------------------- # Global settings 全局設置 #--------------------------------------------------------------------- global # 定義全局日誌,配置在本地,通過local0輸出,默認是info級別,可配置兩條 log 127.0.0.1 local0 info # 運行路徑 chroot /usr/local/haproxy # PID文件存放路徑 pidfile /usr/local/haproxy/log/haproxy.pid # 設置每haproxy進程的最大並發連接數,其等同於命令行選項“-n” # “ulimit -n”自動計算的結果參照此參數設定. maxconn 51200 # 後臺運行haproxy daemon # 定義統計信息保存位置 stats socket /usr/local/haproxy/stats #--------------------------------------------------------------------- # Defaults settings 默認設置 #--------------------------------------------------------------------- defaults # 默認的模式【tcp:4層;http:7層;health:只返回OK】 mode http # 繼承全局的日誌定義輸出 log global # 日誌類別 option httplog # 如果後端服務器需要獲得客戶端真實ip需要配置的參數,可以從Http Header中獲得客戶端ip option forwardfor # 開啟http協議中服務器端關閉功能,每個請求完畢後主動關閉http通道,使得支持長連接,使得會話可以被重用,使得每一個日誌記錄都會被記錄. option httpclose # 如果產生了一個空連接,那這個空連接的日誌將不會記錄. option dontlognull # 當與後端服務器的會話失敗(服務器故障或其他原因)時,把會話重新分發到其他健康的服務器上;當故障服務器恢復時,會話又被定向到已恢復的服務器上; option redispatch # 還可以用”retries”關鍵字來設定在判定會話失敗時的嘗試連接的次數 retries 3 # 當haproxy負載很高時,自動結束掉當前隊列處理比較久的鏈接. option abortonclose # 默認http請求超時時間 timeout http-request 10s # 默認隊列超時時間,後端服務器在高負載時,會將haproxy發來的請求放進一個隊列中. timeout queue 1m # haproxy與後端服務器連接超時時間. timeout connect 10s # 客戶端與haproxy連接後,數據傳輸完畢,不再有數據傳輸,即非活動連接的超時時間. timeout client 10m # haproxy與後端服務器非活動連接的超時時間. timeout server 10m # 默認新的http請求連接建立的超時時間,時間較短時可以盡快釋放出資源,節約資源. timeout http-keep-alive 10s # 心跳檢測超時時間 timeout check 10s #最大並發連接數 maxconn 3000 #--------------------------------------------------------------------- # listen haproxy UI 監控頁面配置 #--------------------------------------------------------------------- listen admin_status # 配置監控運行模式 mode http # 配置統計頁面訪問端口 bind 0.0.0.0:1080 # 統計頁面默認最大連接數 maxconn 10 # http日誌格式 option httplog # 開啟統計 stats enable # 監控頁面自動刷新時間 stats refresh 30s # 統計頁面訪問url,即訪問http://ip:1080/stats stats uri /stats #監控頁面的用戶和密碼:admin,可設置多個用戶名 stats auth admin:admin # 手工啟動/禁用後端服務器,可通過web管理節點 stats admin if TRUE # 設置haproxy錯誤頁面 errorfile 400 /usr/local/haproxy/errorfiles/400.http errorfile 403 /usr/local/haproxy/errorfiles/403.http errorfile 408 /usr/local/haproxy/errorfiles/408.http errorfile 500 /usr/local/haproxy/errorfiles/500.http errorfile 502 /usr/local/haproxy/errorfiles/502.http errorfile 503 /usr/local/haproxy/errorfiles/503.http errorfile 504 /usr/local/haproxy/errorfiles/504.http #--------------------------------------------------------------------- # main frontend which proxys to the backends frontend配置 #--------------------------------------------------------------------- frontend kube-apiserver # 定義前端監聽端口,建議采用bind *:80的形式,否則做集群高可用的時候有問題,vip切換到其余機器就不能訪問. bind *:80 mode http #如果以上規則都不匹配時,將請求轉交到app組處理. default_backend app #--------------------------------------------------------------------- # round robin balancing between the various backends backend配置 #--------------------------------------------------------------------- backend app # 根據http頭進行轉發,無該頭部則轉為使用roundrobin. balance roundrobin option forwardfor except 127.0.0.0/8 # 後端服務器定義, maxconn 1024表示該服務器的最大連接數, cookie 1表示serverid為1,weight代表權重(默認1,最大為265,0則表示不參與負載均衡), #check inter 1500是檢測心跳頻率, rise 2是2次正確認為服務器可用, fall 3是3次失敗認為服務器不可用. server app1 192.168.15.160:8080 maxconn 1024 cookie 1 weight 3 check inter 1500 rise 2 fall 5 server app2 192.168.14.107:8080 maxconn 1024 cookie 1 weight 3 check inter 1500 rise 2 fall 5 server app3 192.168.15.170:8080 maxconn 1024 cookie 1 weight 3 check inter 1500 rise 2 fall 5
3、拷貝所需文件
# errorfile錯誤文件 cp -R haproxy/examples/errorfiles/ /usr/local/haproxy/ # haproxy日誌文件 mkdir -p /usr/local/haproxy/log touch /usr/local/haproxy/log/haproxy.log ln -s /usr/local/haproxy/log/haproxy.log /var/log/ # etc中的haproxy文件 mkdir -p /etc/haproxy ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/ # 配置開機自動啟動 cp haproxy/examples/haproxy.init /etc/rc.d/init.d/haproxy chmod +x /etc/rc.d/init.d/haproxy chkconfig --add haproxy chkconfig haproxy on # 設置全局啟動文件 ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/
4、配置rsyslog
haproxy默認沒有日誌,依靠rsyslog收集日誌
# 註意loacl0需要與haproxy.cfg文件中對應 echo -e ‘$ModLoad imudp \n $UDPServerRun 514 \n local0.* /var/log/haproxy.log‘ >> /etc/rsyslog.conf # 重啟rsyslog服務 service rsyslog restart
本文出自 “linux_cheng” 博客,請務必保留此出處http://6764097.blog.51cto.com/6754097/1954169
haproxy高可用之非搶占keepalived(一)