生活随笔
收集整理的這篇文章主要介紹了
HaProxy介绍,安装及配置
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1,HaProxy簡介
HAProxy 是一款可靠的,提供高可用性、負(fù)載均衡以及基于TCP(第四層)和HTTP(第七層)應(yīng)用的代理軟件,支持虛擬主機(jī),它是免費(fèi)、快速并且可靠的一種解決方案。 HAProxy特別適用于那些負(fù)載特大的web站點(diǎn),這些站點(diǎn)通常又需要會話保持或七層處理。HAProxy運(yùn)行在時(shí)下的硬件上,完全可以支持?jǐn)?shù)以萬計(jì)的 并發(fā)連接。并且它的運(yùn)行模式使得它可以很簡單安全的整合進(jìn)您當(dāng)前的架構(gòu)中, 同時(shí)可以保護(hù)你的web服務(wù)器不被暴露到網(wǎng)絡(luò)上。
2,安裝配置HaProxy
以下實(shí)驗(yàn)環(huán)境均為CentOS7.3 x86_64平臺
因?yàn)槲乙呀?jīng)安裝過了,下面我主要講解下配置文件的內(nèi)容,HaProxy的配置文件如下,
vim /etc/haproxy/haproxy.cfg
HaProxy的配置文件主要分為二個(gè)大的部分五個(gè)段
配置文件格式:
HAProxy的配置處理3類來主要參數(shù)來源:
——最優(yōu)先處理的命令行參數(shù);
——global配置段,用于設(shè)定全局配置參數(shù);
——proxy相關(guān)配置段,如defaults、listen、frontend和backend;
全局配置
global
# 設(shè)置日志文件輸出定向
log 127.0.0.1 local3 info# 改變當(dāng)前工作目錄
chroot /usr/local/haproxy# 用戶與用戶組
user haproxy
group haproxy# 守護(hù)進(jìn)程啟動,運(yùn)維方式為后臺工作
daemon# 最大連接數(shù)
maxconn 4000
#作用于其后緊跟的listen塊,直至下一個(gè)defaults 塊,下一個(gè)default 將替換上一個(gè)塊作用于以后的listen
defaults
# 啟用每個(gè)實(shí)例日志記錄事件和流量。
log global# 默認(rèn)的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
mode http# maxconn 65535 maxconn 每個(gè)進(jìn)程可用的最大連接數(shù)
# retries 3 當(dāng)對server的connection失敗后,重試的次數(shù)
# option abortonclose 啟用或禁用在隊(duì)列中掛起的中止請求的早期丟棄
# option redispatch 啟用或禁用在連接故障情況下的會話重新分配
# option dontlognull 啟用和禁用 記錄 空連接
# option httpclose 每次請求完畢后主動關(guān)閉http通道,HA-Proxy不支持keep-alive模式
# option forwardfor 獲得客戶端IP
# option httplog 記錄HTTP 請求,session 狀態(tài)和計(jì)時(shí)器
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
代理相關(guān)配置
#前端配置,http_front名稱可自定義
frontend http_front
# bind *:443 ssl crt /etc/haproxy/cert.pem 啟用ssl證書
# bind *:80 發(fā)起http請求道80端口,會被轉(zhuǎn)發(fā)到設(shè)置的ip及端口
bind *:80#haproxy的狀態(tài)管理頁面,通過/haproxy?stats來訪問
stats uri /haproxy?stats
default_backend http_back
#后端配置,http_back名稱可自定義
backend http_back
# 負(fù)載均衡方式
# source 根據(jù)請求源IP
# static-rr 根據(jù)權(quán)重
# leastconn 最少連接者先處理
# uri 根據(jù)請求的uri
# url_param 根據(jù)請求的url參數(shù)
# rdp-cookie 據(jù)據(jù)cookie(name)來鎖定并哈希每一次請求
# hdr(name) 根據(jù)HTTP請求頭來鎖定每一次HTTP請求
# roundrobin 輪詢方式
balance roundrobin#設(shè)置健康檢查頁面
option httpchk GET /index.html#傳遞客戶端真實(shí)IP
option forwardfor header X-Forwarded-For# inter 2000 健康檢查時(shí)間間隔2秒
# rise 3 檢測多少次才認(rèn)為是正常的
# fall 3 失敗多少次才認(rèn)為是不可用的
# weight 30 權(quán)重
# 需要轉(zhuǎn)發(fā)的ip及端口
server node1 192.168.179.131:8081 check inter 2000 rise 3 fall 3 weight 30
server node2 192.168.179.131:8082 check inter 2000 rise 3 fall 3 weight 30
##############################################################
# haproxy的acl規(guī)則
frontend http_front
bind *:80
stats uri /haproxy?stats#創(chuàng)建一個(gè)acl,is_http_back2是acl的名稱,可自定義,用于判斷主機(jī)名是否為www.back2.com
acl is_http_back2 hdr_end(host) www.back2.com#通過正則判斷主機(jī)名中是否為bbs.back.com或forum.back.com
acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com)#判斷ua是否為android
acl is_ua_android hdr_reg(User-Agent) -i android#判斷主機(jī)名開頭是否為img.或css.或js.
acl is_host_static hdr_beg(host) -i img. css. js.#判斷url路徑中是否有/bbs
acl is_path_bbs path_beg -i /bbs#判斷url文件結(jié)尾
acl is_php path_end -i .php#通過正則判斷url中結(jié)尾以
acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$#效果同上
acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif#如果主機(jī)名是www.back2.com那么就使用后端http_back2
use_backend http_back2ifis_http_back2#默認(rèn)使用的后端
default_backend http_back
backend http_back
balance roundrobin
option httpchk GET /index.html
option forwardfor header X-Forwarded-For
server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
backend http_back2
balance roundrobin
option httpchk GET /index.html
option forwardfor header X-Forwarded-For
server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30
#最后可以通過訪問配置HaProxy的管理頁面看到你配置的前端和后端的詳細(xì)情況
轉(zhuǎn)載于:https://blog.51cto.com/13718210/2153440
總結(jié)
以上是生活随笔為你收集整理的HaProxy介绍,安装及配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。