002.HAProxy安裝及常見配置
阿新 • • 發佈:2018-12-21
一 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]引數解釋: TARGET=linux26:核心版本,使用uname -r可檢視核心。 [[email protected] ~]# uname -r 2.6.32-642.el6.x86_64haproxy-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
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:設定後端真實伺服器的備份伺服器,僅在後端所有真實伺服器不可用的情況下啟用。