天天看點

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

Haproxy配置

永久修改名字:便于區分虛拟機!

Haproxy:hostnamectl set-hostname haproxy

Web1: hostnamectl set-hostname WEB1

Web2:hostnamectl set-hostname WEB2

Test:hostnamectl set-hostname test

1、haproxy安裝并将過程截圖

yum list |grep haproxy:檢視haproxyl清單,查詢可能會花費較長時間!

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

yum -y install haproxy:安裝:

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

2、填寫IP配置設定表:

伺服器角色    IP位址

Haproxy 192.168.1*8.128
Web1 192.168.1*8.137
Web2 192.168.1*8.138
test 192.168.1*8.135

3、簡答:說明haproxy配置檔案中global、defaults、frontend、backend參數的作用?

Global:

用于設定全局配置參數,屬于程序級的配置,通常用作業系統配置相關

defaults:

預設參數的配置部分。在些部分設定的參數,預設會自動引用到下面的frontend, backend和listen部分

frontend:

用于設定接收使用者請求的前端虛拟節點。frontend可以根據ACL規則直接指定要使用的後端backend

backend:

用于設定叢集後端服務叢集的配置,也就是用來添加一組真實伺服器,以處理前端使用者的請求

4、Haproxy配置并截圖

編輯/etc/haproxy/haproxy.cfg配置檔案,配置内容如下:

位置:/etc/haproxy/haproxy.cfg

vim /etc/haproxy/haproxy.cfg

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

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

儲存退出

3、啟動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

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

#Configuration file is valid!就OK啦!

啟動haproxy:

關閉防火牆:systemctl start haproxy      (service haproxy start 指令不行!)

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

第一次:

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

第二次:

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

感覺不放心還可以用另外一台虛拟機來試一下!

 代碼:for i in {1..40};do curl 192.168.158.128;done

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

通過這種方式的安裝所有檔案路徑:

CENTOS7 高性能Linux叢集 通過yum進行 haproxy配置 !安裝 !使用!HAProxy配置檔案詳解

便于查找,檢視。給出路徑!

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版本以後生效

6、HAProxy支援的負載均衡算法:

roundrobin:基于權重進行輪叫排程的算法

static-rr:基于權重進行輪叫排程的算法,不過此算法為靜态算法,在運作時調整其伺服器權重不會生效

source:基于請求源IP的算法。此算法先對請求的源IP進行HASH運算,然後将結果與後端伺服器的權重總數相除後轉發至某台比對的後端伺服器。這種方式可以使同一個用戶端IP的請求始終轉發到某特定的後端伺服器

leastconn:此算法會将新的連接配接請求轉發到具有最少連接配接數目的後端伺服器。在會話時間較長的場景中推薦使用此算法 ,例如資料庫負載均衡