天天看點

負載均衡服務之HAProxy基礎配置(一)

負載均衡服務之HAProxy基礎配置(一)

haproxy的配置檔案大概可以分兩段;第一段配置上global配置段即全局配置段,主要是針對haproxy的程序和安全相關的;第二段是proxies代理配置段,主要是配置haproxy前端監聽那個位址那個端口以及後端server的名稱、位址、端口,以及server相關屬性等配置;而proxies配置段裡又分defaults配置段,這個部分主要是定義後續的backend,listen這兩個段的預設配置;什麼意思呢?也就是在後面的配置中如果我們沒有寫對應參數,它預設會繼承defaults裡的配置;如果說後面的配置中和前邊的defaults中的配置重複了,那麼就已後面的配置生效,也就是說後面的配置段優先級高于defaults裡的配置;

  前文我們聊了下haproxy的基礎安裝,以及怎樣去代理後端主機的配置;當然沒有很詳細的去說配置檔案中各指令的意思;有關haproxy的安裝和代理後端server可以參考本人部落格https://www.cnblogs.com/qiuhom-1874/p/12741018.html;今天我們主要來說一下haproxy global配置段常用配置指令的用法和說明;

  前邊我們大概說了一下haproxy的配置檔案大概可以分兩段;第一段配置是global配置段即全局配置段,主要是針對haproxy的程序和安全相關的配置;第二段是proxies代理配置段,主要是配置haproxy前端監聽那個位址那個端口以及後端server的名稱、位址、端口,以及server相關屬性等配置;而proxies配置段裡又分defaults配置段,這個部分主要是定義後續的backend,listen這兩個段的預設配置;什麼意思呢?也就是在後面的配置中如果我們沒有寫對應參數,它預設會繼承defaults裡的配置;如果說後面的配置中和前邊的defaults中的配置重複了,那麼就以後面的配置生效,也就是說後面的配置段優先級高于defaults裡的配置;了解了haproxy的配置檔案結構,接下來我們來看看haproxy的global配置段常用指令;

負載均衡服務之HAProxy基礎配置(一)

  提示:以上是haproxy1.5.18yum安裝裡預設提供的global配置段;其中log是用來指定日志的,這裡要說一下haproxy的日志,它和nginx的日志不太一樣;nginx的日志是我們用access_log 指令來指定日志檔案和調用日志格式的名稱,意思就是把日志以增量的方式往指定的日志檔案中寫;而haproxy的日志不是自己記錄日志,而是通過把日志發送給rsyslog伺服器上的一個facility上,然後通過rsyslog的配置把指定facility上的日志記錄到某個檔案中或者資料中;以上配置段意思就是把haproxy的日志發送給本機的rsyslog上的local2 記錄所有級别類型的日志;其實我們不用配置rsyslog,預設會把日志記錄到/var/log/messages這個檔案中,這是因為rsyslog中明确定義了所有facility上的info級别以及info級别以上的日志都記錄到/var/log/messages中;有關rsyslog的配置說明可以參考本人部落格https://www.cnblogs.com/qiuhom-1874/p/12091118.html;接下來我們來配置下,讓haproxy的日志記錄到/var/log/haproxy.log這個檔案中去;

負載均衡服務之HAProxy基礎配置(一)

  提示:在rsyslog的配置檔案中明确要使用local2這個facility上的任何級别的日志都交給/var/log/haproxy.log記錄;這樣隻是把接收日志的方式定義好了;通常如果rsyslog作為日志伺服器接收非本機的其他主機日志,我們還要讓rsyslog監聽在udp或者tcp的514端口上(當然這個端口也可以自己指定,通常不用更改),為其他主機提供服務;是以我們除了要定義把某個facility上的所有級别的日志(當然也可以指定某些級别的日志,這個要看你想要收集那一類的日志)記錄到某個檔案中外,我們還要把udp或tcp的514端口打開;

負載均衡服務之HAProxy基礎配置(一)

  提示:以上配置就是導入imudp子產品,然後讓rsyslog監聽在udp的514端口;這樣配置後我們就可以儲存rsyslog的配置檔案,然後重新開機rsyslog,我們就可以把haproxy的日志記錄到/var/log/haproxy.log中去了;

負載均衡服務之HAProxy基礎配置(一)

  提示:可以看到我們通路haproxy,其中的通路日志就記錄到我們定義的/var/log/haproxy.log中去了;

  chroot:該指令主要作用同vsftpd裡面的chroot類似,禁锢運作目錄的;一般這個參數主要是防止haproxy被惡意程式攻擊後對作業系統上的其他路徑資源的破環;也就是說即便haproxy被惡意程式攻破,最多隻能破環我們指定的chroot目錄,而非整個系統目錄結構;通常情況下haproxy不會出現這種情況,為了安全我們還是配置上這個參數;如果haproxy是我們手動編譯安裝的,通常我們會把這個參數的值設定成很haproxy的程式編譯安裝時指定的目錄;yum安裝的基本上都是/var/lib/haproxy;一般都不會去更改它;

  pidfile:該指令是指定pid檔案的,通常情況下需要和unit file裡指定的pid檔案是同一個檔案;不是同一個檔案的話可能會遇到無法reload的情況;

  maxconn:該指令指定haproxy的單個程序最大并發連接配接數;

  user/group:前者用來指定運作haproxy程序的使用者(屬主),後者是用來指定運作程序的使用者屬組

  uid/gid:前者用來指定運作haproxy工作程序的使用者id,後者是指定組id;以上兩種方式都是來指定運作haproxy程序的使用者身份;預設情況是用的id為99的使用者(nobody使用者)

  deamon:此指令表示haproxy以守護程序運作;

  stats socket:指定unix socket檔案路徑;主要用于本機互動的方式管理haproxy;

  以上是haproxy1.5.18配置檔案中global段配置選項的說明;在haproxy1.8.0以後的版本中,haproxy支援多程序多線程的方式,而1.5不支援多線程,支援多程序,但是在1.5上啟用多程序的方式是串行的,意思就是它不是一個主程序下生成多個子程序,而是一個程序下生成一個程序,然後子程序下在生成子程序的方式;是以如果要使用多程序的方式,建議還是使用1.8以後的版本;

  haproxy配置多程序

  nbproc:該指令是用于指定haproxy的程序數 ,通常情況下建議同cup核心數一樣即可;

  cpu-map:該指令用于綁定haproxy對應cup核心;有點類似nginx裡的worker_cpu_affinity參數的意義;

負載均衡服務之HAProxy基礎配置(一)

  提示:以上配置表示指定haproxy的程序數為4個,第一個程序綁定到0号核心上,第二個程序綁定到1号核心上,依次類推;如下

負載均衡服務之HAProxy基礎配置(一)

  提示:以上是haproxy1.8.20上配置使用多程序,啟動程序情況,我們可以看到haproxy程序的父程序都是5945;

  在1.5.18上使用多程序

負載均衡服務之HAProxy基礎配置(一)

  提示:以同樣的配置在haproxy1.5.18上,啟動的多程序就不一樣,在1.5.18上多了一個haproxy-systemd這個程序,并且haproxy程序都是它的子程序,而我們用nbproc指定的程序數是指定haproxy-systemd下的haproxy的子程序數;而1.8.20nbproc指定的是haproxy的子程序數量,沒有haproxy-systemd,又或者我們可以了解為1.8.20把1.5.18上的haproxy-systemd和haproxy程序合并成一個程序haproxy;通常情況下haproxy單程序也是足夠用了,如果是在要開多程序,建議還是使用1.8以上的版本吧;

  haproxy使用多線程

  haproxy的多線程是在1.7以後的版本才支援的,是以1.5上面不支援多線程的方式,是以我們這裡的示範就用haproxy1.8.20來示範

  nbthread:指定每個haproxy程序開啟的線程數;

負載均衡服務之HAProxy基礎配置(一)

  提示:以上配置表示啟動4個程序,每個程序裡啟動4個線程,預設每個程序一個線程

負載均衡服務之HAProxy基礎配置(一)

  maxsslconn:該指令指定每個haproxy程序ssl最大連接配接數,通常情況下證書都不放在haproxy上,nginx上放證書更加合适;

  maxconnrate:該指令指定每個程序每秒最大連接配接數;

  spread-checks:該指令指定後端server狀态check随機提前或延遲百分比時間;通常情況下在後端主機較多的情況下使用;官方建議2-5(20%-50%)之間;如果在後端主機較多的情況下,不使用該指令來延遲對後端主機健康狀态檢查,那麼很有可能降低haproxy的性能,是以該指令在後端主機較多的情況下(比如1000台甚至更多)能夠避免同時并發對後端主機check時對haproxy的性能影響;

 以上是haproxy global配置段比較常用的配置指令說明,更多配置指令請參考https://cbonte.github.io/haproxy-dconv;

作者:Linux-1874

出處:https://www.cnblogs.com/qiuhom-1874/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利.

繼續閱讀