haproxy负载均衡
環(huán)境:
Ha主機(jī):192.168.10.33
backend主機(jī)1:192.168.10.35
backend主機(jī)2:192.168.10.38
客戶(hù)端:192.168.10.184
一.調(diào)度方式:
roundrobin:輪詢(xún)調(diào)度
static-rr:靜態(tài)輪詢(xún),當(dāng)更改權(quán)重或者其他配置,必須要重新加載服務(wù)才能生效
leastconn:最少連接調(diào)度。
source:基于IP的hash調(diào)度。對(duì)于同一個(gè)源端將會(huì)調(diào)度到同一臺(tái)后端服務(wù)器
uri:基于URL的HASH調(diào)度。對(duì)于同一個(gè)URL將會(huì)調(diào)度到同一臺(tái)后端服務(wù)器
url_param:基于URL中的參數(shù)進(jìn)行hash調(diào)度。
hdr_param:基于header中的參數(shù)進(jìn)行hash調(diào)度。
二.配置:/etc/haproxy/haproxy.cfg
global #全局定義
?log 127.0.0.1 local0 ?#日志輸出位置
?chroot /usr/local/haproxy #定義chroot目錄,有助于安全
?daemon #指定為守護(hù)進(jìn)程
?maxconn 4096 #定義單進(jìn)程最大連接數(shù)
?nbproc 2 #定義haproxy進(jìn)程數(shù)<=設(shè)備的總核數(shù)
?pidfile /usr/local/haproxy/run/haproxy.pid#定義pid文件,一般可缺省
?
defaults #定義默認(rèn)配置
?????log global #引用全局定義的日志
?????mode http #定義使用http模式
?????option abortonclose #丟棄由于客戶(hù)端等待時(shí)間過(guò)長(zhǎng)而關(guān)閉連接但仍在haproxy等待隊(duì)列中的請(qǐng)求
?????option forwardfor #是否記錄x-for地址,用于記錄實(shí)際的客戶(hù)端IP
?????option httplog #定義記錄HTTP日志
?????retry 3 #當(dāng)3次連接失敗判定服務(wù)器不可用
?????option redispatch #當(dāng)后端某臺(tái)設(shè)備不可用時(shí),將原本調(diào)度到該(故障)設(shè)備的請(qǐng)求強(qiáng)制重定向到其他正常設(shè)備
?????timeout http request 2000 #在客戶(hù)端建立連接但不請(qǐng)求數(shù)據(jù)時(shí),關(guān)閉客戶(hù)端連接
?????timeout queue 5000#等待最大時(shí)長(zhǎng)
?????timeout connect 3000 #定義haproxy將請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器所等待的超時(shí)時(shí)間
?????timeout client 5000 #客戶(hù)端非活動(dòng)狀態(tài)的超時(shí)時(shí)長(zhǎng)
frontend web ? ? ? ? ? ? ? ?#前端定義
????? ? bind *:80 #監(jiān)聽(tīng)端口
????????option httpclose
????????default_backend webgroup #前端的請(qǐng)求默認(rèn)調(diào)度到后端的webgroup組
backend webgroup ? #后端定義
????????balance uri #uri調(diào)度
????????option httpchk HEAD ?/ HTTP/1.1 \r\nHost:www.baidu.com? #HEAD檢測(cè)?
? ? ? ? server servername_one 192.168.10.35:80 weight 1 check inter 5000 rise 3 fall 1?????
? ? ? ? server servername_two 192.168.10.38:80 weight 1 check inter 5000 rise 3 fall 1?
#inter 5000 //間隔5000毫秒檢測(cè)一次
#rise 3 //Ha對(duì)處于故障的設(shè)備重新成功檢測(cè)3次后才會(huì)將服務(wù)器置為可用
#fall 1 //Ha對(duì)后端的設(shè)備探測(cè)只要失敗1次立馬置為不可用
listen admin_stats #listen是frontend、backend的結(jié)合,本處用于設(shè)定管理界面
????bind *:10086
? ? stats enable #開(kāi)啟haproxy統(tǒng)計(jì)狀態(tài)
????stats hide-version #隱藏版本信息
? ? stats refresh 3 #定義頁(yè)面刷新時(shí)間(秒)
? ? stats uri /admin #定義平臺(tái)地址
? ? stats realm welcome to haproxy admin #定義提示信息
? ? stats auth admin:admin #定義用戶(hù)信息
? ? stats admin TRUE #當(dāng)用戶(hù)信息正常時(shí)啟用stats
三.測(cè)試
(1).檢測(cè)Ha對(duì)后端服務(wù)器的check。
?
(2).檢測(cè)資源調(diào)度
<1>.客戶(hù)端做HOST綁定相應(yīng)域名到HA地址,并在瀏覽器訪(fǎng)問(wèn)域名
<2>.檢測(cè)后端服務(wù)器是否接收到請(qǐng)求
轉(zhuǎn)載于:https://blog.51cto.com/11309364/1918948
總結(jié)
以上是生活随笔為你收集整理的haproxy负载均衡的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 小型自动化运维--expect脚本之自动
- 下一篇: 凌琦:物联网——一场正在发生的变革