1. 程式人生 > >002.HAProxy安裝及常見配置

002.HAProxy安裝及常見配置

一 HAProxy安裝

官方連結:http://www.haproxy.org/ (國內可能無法開啟) 下載連線:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/
  1 [[email protected] ~]# yum -y install gcc gcc-c++ make openssl-devel wget openssh-clients			#安裝編譯工具
  2 [[email protected] ~]# service iptables stop
  3 [[email protected] ~]# chkconfig iptables off
  4
[[email protected] ~]# vi /etc/selinux/config 5 SELINUX=disabled
 

1.1 yum安裝

  1 [[email protected] ~]# yum -y install haproxy

1.2 編譯安裝

[
  1 [[email protected] ~]# tar -zxvf haproxy-1.7.9.tar.gz
  2 [[email protected] ~]# cd haproxy-1.7.9/
  3 [[email protected]
haproxy-1.7.9]# make TARGET=linux2628 CPU=x86_64 PREFIX=/usr/local/haprpxy #編譯uname -r #檢視系統核心版本號 4 [[email protected] haproxy-1.7.9]# make install PREFIX=/usr/local/haproxy
  引數解釋: TARGET=linux26:核心版本,使用uname -r可檢視核心。 [[email protected] ~]# uname -r 2.6.32-642.el6.x86_64
如:2.6.18-371.el5,此時該引數就為linux26;當核心kernel為2.6.28或之上時採用TARGET=linux2628,更多引數可參考:https://github.com/haproxy/haproxy ARCH=x86_64:系統位數。 PREFIX=/opt/haprpxy:opt/haprpxy為haprpxy安裝路徑

1.4 建立HAProxy相關配置檔案

  1 [[email protected] ~]# mkdir /usr/local/haproxy/conf				#建立配置檔案目錄
  2 [[email protected] ~]# mkdir -p /etc/haproxy					#建立配置檔案目錄
  3 [[email protected] ~]# touch /usr/local/haproxy/haproxy.cfg			#建立配置檔案
  4 [[email protected] ~]# ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg	#新增配置檔案軟連線
  5 [[email protected] ~]# cp -r /root/haproxy-1.7.9/examples/errorfiles /usr/local/haproxy/errorfiles	#拷貝錯誤頁面
  6 [[email protected] ~]# ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles                #新增軟連線
  8 [[email protected] ~]# mkdir -p  /usr/local/haproxy/log                                           #建立日誌檔案目錄
 10 [[email protected] ~]# touch /usr/local/haproxy/log/haproxy.log                                   #建立日誌檔案目錄
 12 [[email protected] ~]# ln -s /usr/local/haproxy/log/haproxy.log /var/log/haproxy.log              #新增軟連線
 14 [[email protected] ~]# cp /usr/local/haproxy/sbin/haproxy /usr/sbin/                              #拷貝HAProxy命令
 16 [[email protected] ~]# cp /root/haproxy-1.7.9/examples/haproxy.init /etc/rc.d/init.d/haproxy      #拷貝開機啟動檔案
 18 [[email protected] ~]# chmod u+x /etc/rc.d/init.d/haproxy                                         #新增指令碼執行許可權
 20 [[email protected] ~]# chkconfig haproxy on                                                       #設定開機啟動
 

二 常用配置

2.1 配置檔案

預設配置內容見附件。

2.2 配置選項

  1 global				#設定全域性引數,屬於程序級的配置,通常和作業系統的配置有關
  2     log         127.0.0.1 local2	#全域性日誌配置,local0表示日誌裝置,info表示日誌級別,如err、warning、info、debug4中
  3     chroot      /usr/local/haproxy	        #chroot執行路徑
  4     pidfile     /var/run/haproxy.pid	#指定haproxy程序的PID檔案,啟動程序的使用者必須有訪問此檔案的許可權
  5     maxconn     4000			#每個HAProxy程序可接受的最大併發連線數
  6     user        haproxy
  7     group       haproxy			#設定執行HAProxy程序的使用者和組,也可使用UID和GID值來替代
  8     daemon				        #設定HAProxy程序進入後臺執行。
  9 
 10 defaults				  #配置預設引數,會自動被引用到frontend、backend和listen中
 11     mode                    http	  #預設的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
 12     log                     global	        #採用全域性定義的日誌
 13     option                  httplog	        #日誌類別http日誌格式
 14     option                  dontlognull	#不記錄健康檢查的日誌資訊
 15     option http-server-close		#每次請求完畢後主動關閉http通道
 16     option forwardfor       except 127.0.0.0/8    #如果後端伺服器需要獲得客戶端真實ip需要配置的引數,可以從Http Header中獲得客戶端ip
 18     option                  redispatch	#serverId對應的伺服器掛掉後,強制定向到其他健康的伺服器
 19     retries                 3		#3次連線失敗就認為服務不可用,也可以通過後面設定
 20     timeout http-request    10s
 21     timeout queue           1m		#預設佇列超時時間
 22     timeout connect         10s		#連線超時時間
 23     timeout client          1m		#客戶端超時時間
 24     timeout server          1m		#伺服器超時時間
 25     timeout http-keep-alive 10s		#預設持久連線超時時間
 26     timeout check           10s		#心跳檢測超時
 27     maxconn                 3000	#預設的最大連線數
 28 balance roundrobin			#設定預設負載均衡方式,輪詢方式
 29 #balance source			#設定預設負載均衡方式,類似於nginx的ip_hash
 30 #balnace leastconn			#設定預設負載均衡方式,最小連線數
 31 
 32 listen stats
 33 bind 0.0.0.0:1080		#監聽埠
 34 mode http			#監聽的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
 35 stats refresh 30s		#設定統計頁面自動重新整理的時間
 36 stats uri /stats		#設定統計頁面url
 37 stats realm Haproxy Manager	#設定登入HAProxy統計頁面密碼框上提示文字
 38 stats auth admin:admin	#設定登入HAProxy統計頁面使用者名稱和密碼設定
 39 #stats hide-version		#隱藏統計頁面上HAProxy的版本資訊
 40 
 41 frontend  main *:5000
 42     acl url_static       path_beg       -i /static /images /javascript /stylesheets
 43     acl url_static       path_end       -i .jpg .gif .png .css .js
 44 
 45     use_backend static          if url_static	#滿足策略要求,則響應策略定義的backend頁面
 46     default_backend             app		        #不滿足則響應backend的預設頁面
 47 
 48 backend static
 49     balance     roundrobin			        #負載均衡模式輪詢
 50     server      static 127.0.0.1:4331 check	        #後端伺服器定義
 51 
 52 backend app				         	#定義名稱為app的後端真實伺服器組
 53     balance     roundrobin
 54     server  app1 127.0.0.1:5001 check		#後端真實伺服器,不能用的default和frontend部分
 55     server  app2 127.0.0.1:5002 check
 56     server  app3 127.0.0.1:5003 check
 57     server  app4 127.0.0.1:5004 check
  後端伺服器格式:server <name> <address> [:port] [param*] parm*引數可有:
  • check:表示啟用對此後端伺服器進行健康狀態檢查;
  • inter:設定健康狀態檢查的時間間隔,單位為毫秒;
  • rise:設定從故障狀態換至正常狀態需要成功檢查的次數;
  • fall:設定後端伺服器從正常狀態轉換為不可用狀態需要檢查的次數;
  • cookie:為指定的後端伺服器設定cookie值;
  • weight:設定後端真實伺服器的權重,預設為1,最大值為256,設定為0表示不參與負載均衡;
  • backup:設定後端真實伺服器的備份伺服器,僅在後端所有真實伺服器不可用的情況下啟用。