照片參考:https://blog.csdn.net/weixin_...javascript
Haproxy配置php
永久修更名字:便於區分虛擬機!
Haproxy:hostnamectl set-hostname haproxy
Web1: hostnamectl set-hostname WEB1
Web2:hostnamectl set-hostname WEB2
Test:hostnamectl set-hostname testcss
一、haproxy安裝並將過程截圖
yum list |grep haproxy:查看haproxyl列表,查詢可能會花費較長時間!前端
yum -y install haproxy:安裝:java
[點擊並拖拽以移動]linux
二、填寫IP分配表:
服務器角色 IP地址nginx
Haproxyweb
192.168.1*8.128redis
Web1算法
192.168.1*8.137
Web2
192.168.1*8.138
test 192.168.1*8.135
三、簡答:說明haproxy配置文件中global、defaults、frontend、backend參數的做用?
Global:
用於設置全局配置參數,屬於進程級的配置,一般用操做系統配置相關
defaults:
默認參數的配置部分。在些部分設置的參數,默認會自動引用到下面的frontend, backend和listen部分
frontend:
用於設置接收用戶請求的前端虛擬節點。frontend能夠根據ACL規則直接指定要使用的後端backend
backend:
用於設置集羣后端服務集羣的配置,也就是用來添加一組真實服務器,以處理前端用戶的請求
四、Haproxy配置並截圖
編輯/etc/haproxy/haproxy.cfg配置文件,配置內容以下:
位置:/etc/haproxy/haproxy.cfg
vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend main *:80
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend web
backend static
balance roundrobin
server static 127.0.0.1:4331 check
backend web
balance roundrobin
server web1 192.168.158.137:80 check
server web2 192.168.158.138:80 check
保存退出
三、啓動haproxy
啓動以前檢查語法是否有問題,命令以下
haproxy -f /etc/haproxy/haproxy.cfg -c
-f filename 若是 filename爲常規文件,則爲真
linux命令中的-c通常是指:當執行某個可執行文件時,後面加 -c 而後再加配置(或參數)文件,
來達到指定以某種配置參數來啓動腳本的目的。
例如:nginx的啓動命令:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
啓動haproxy:
關閉防火牆:systemctl start haproxy (service haproxy start 命令不行!)
第一次:
第二次:
感受不放心還能夠用另一臺虛擬機來試一下!
代碼:for i in {1..40};do curl 192.168.158.128;done
經過這種方式的安裝全部文件路徑:
便於查找,查看。給出路徑!
HAProxy配置文件詳解
根據功能、用途不一樣,其配置文件主要由5部分組成,分別爲global部分,defautls部分,frontend部分、backend部分、listen部分
1)global部分:用於設置全局配置參數,屬於進程級的配置,一般用操做系統配置相關
2) defaults部分:默認參數的配置部分。在些部分設置的參數,默認會自動引用到下面的frontend, backend和listen部分
3) frontend部分:用於設置接收用戶請求的前端虛擬節點。frontend能夠根據ACL規則直接指定要使用的後端backend
4) backend部分:用於設置集羣后端服務集羣的配置,也就是用來添加一組真實服務器,以處理前端用戶的請求
5) listen部分:此部分是frontend和backend部分的結合體
配置項說明:
1) global部分
global
log 127.0.0.1 local1 info #全局的日誌配置,local0是日誌設備,info表示日誌級別。其中日誌級別有err, warning, info, debug 4種。這個配置表示使用127.0.0.1上的rsyslog服務中的local0日誌設備,記錄日誌等級爲info
maxconn 4096 #設置每一個HAProxy進程可接受的最大併發鏈接數
user nobody #設置啓動HAProxy進程的用戶和組
group nobody
daemon #設置HAProxy進程進入後臺運行,這是推薦的運行模式
nbproc 1 #設置HAProxy啓動時可建立的進程數,此參數要求將HAProxy運行模式設置爲daemon,默認只啓動一個進程;建議該值設置時小於CPU核數
pidfile /usr/local/haproxy/logs/haproxy.pid #指定HAProxy進程ID的存放位置
2) defaults部分
defaults
mode http #設置HAProxy實例默認的運行模式,有tcp, http, health三個可選值。tcp模式:在此模式下,客戶端和服務器端間將創建一個全雙工的鏈接,不會對七層報文作任何檢查,爲默認的模式;常常用於SSL, SSH, SMTP等應用;http模式:在此模式下,客戶端請求在轉發至後端服務器前將會被深度分析,全部不與RFC格式兼容的請求都會被拒絕;
retires 3 #設置鏈接後端服務器的失敗重試次數,若是鏈接失敗的次數超過該數值,HAProxy會將對應的後端服務器標記爲不可用
timeout connect 10s #設置成功鏈接到一臺服務器的最長等待時間,默認單位是毫秒,但也可使用其餘時間單位做後綴
timeout client 20s #設置鏈接客戶端發送數據時最長等待時間,默認單位是毫秒,但也可使用其餘時間單位做後綴
timeout server 30s #設置服務器端迴應客戶端數據發送的最長等待時間,默認單位是毫秒,但也可使用其餘時間單位做後綴
timeout check 5s #設置對後端服務器的檢測超時時間,默認單位是毫秒,但也可使用其餘時間單位做後綴
3) frontend部分
frontend www #經過frontend關鍵字定義了一個名爲"www"的前端虛擬節點
bind *:80 #此選項用於定義一個或者幾個監聽的套接字,只能在frontend和listen中定義,格式以下:bind [<address>:[port_range]] [interface]
mode http
option httplog #默認狀況下,HAProxy日誌是不記錄HTTP請求的,此選項的做用是啓用日誌記錄HTTP請求
option forwardfor #此選項的做用是保證後端服務器可記錄客戶端真實的IP
option httpclose #此選項表示客戶端和服務端完成一次鏈接請求後,HAProxy將主動關閉此TCP鏈接。這是對性能很是有幫助的一個參數
log global #表示使用global段中定義的日誌格式
default_backend htmpool #此選項用於指定後端默認的服務器池
4) backend部分
backend htmpool
mode http
option redispatch #此參數用於cookie保持的環境中。在默認狀況下,HAProxy會將其請求的後端服務器的serverID插入cookie中,以保證會話的session持久性。而若是後端服務器出現故障,客戶端的cookie是不會刷新的,這就會形成沒法訪問。此時,若是設置了此參數,就會將客戶的請求強制定向到另一臺健康的後端服務器上,以保證服務正常
option abortonclose #此參數能夠在服務器負載很高的狀況下,自動結束當前隊列中處理時間比較長的鏈接
balance roundrobin #負載均衡算法
cookie SERVERID #表示容許向cookie插入SERVERID,每臺服務器的SERVERID可在下面的server關鍵字中使用cookie關鍵字定義
option httpchk GET /index.php #此選項表示啓用HTTP的服務狀態檢測功能
server web1 10.1.1.1:80 cookie server1 weight 6 check inter 2000 rise 2 fall 3
server web2 10.1.1.2:80 cookie server2 weight 6 check inter 2000 rise 2 fall 3#server用於定義多臺後端真實服務器,不能用於frontend和listen段
5) listen部分
listen admin_status #listen部分用於配置HAProxy監控頁面相關的參數
bind 0.0.0.0:9188
mode http
log 127.0.0.1 local0 err
stats refresh 30s #設置HAProxy監控統計頁面自動刷新的時間
stats uri /haproxy-status #設置HAProxy監控頁面訪問的URI路徑
stats realm Welcome login #設置登陸監控頁面時,密碼框上的提示信息
stats auth admin:admin #設置登陸監控頁面的用戶名,密碼。用戶密碼用冒號隔開,能夠設置多個,每行一個
stats hide-version #設置在監控頁面上隱藏HAProxy的版本號
stats admin if TRUE #設置此選項,可在監控頁面上啓用、禁用後端服務器,僅在1.4.9版本之後生效
六、HAProxy支持的負載均衡算法:
roundrobin:基於權重進行輪叫調度的算法
static-rr:基於權重進行輪叫調度的算法,不過此算法爲靜態算法,在運行時調整其服務器權重不會生效
source:基於請求源IP的算法。此算法先對請求的源IP進行HASH運算,而後將結果與後端服務器的權重總數相除後轉發至某臺匹配的後端服務器。這種方式可使同一個客戶端IP的請求始終轉發到某特定的後端服務器
leastconn:此算法會將新的鏈接請求轉發到具備最少鏈接數目的後端服務器。在會話時間較長的場景中推薦使用此算法 ,例如數據庫負載均衡
uri:此算法會對部分或整個URI進行HASH運算,再通過與服務器的總權重相除,最後轉發到某臺匹配的後端服務器上
uri_param:此算法會根據URL路徑中的參數進行轉發,這樣可保證在後端真實服務器數據不變時,同一個用戶的請求始終分發到同一臺機器上
hdr:此算法根據HTTP頭進行轉發,若是指定的HTTP頭名稱不存在,則使用roundrobin算法 進行策略轉發