Haproxy 實現Apache的負載均衡

Haproxy: 172.16.100.128 Node1:    172.16.100.101    web1 Node2:    172.16.100.102    web2 安裝haproxy # yum install haproxy -y # rpm -ql haproxy /etc/haproxy /etc/haproxy/haproxy.cfg #主配置文件 /etc/logrotate.d/haproxy /etc/rc.d/init.d/haproxy # 啓動腳本 /usr/bin/halog /usr/bin/iprange /usr/sbin/haproxy # cat /ect/haproxy/haproxy.cfg #--------------------------------------------------------------------- # Example configuration for a possible web application.  See the # full configuration options online. # #   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global     # to have these messages end up in /var/log/haproxy.log you will     # need to:     #     # 1) configure syslog to accept network log events.  This is done     #    by adding the '-r' option to the SYSLOGD_OPTIONS in     #    /etc/sysconfig/syslog     #     # 2) configure local2 events to go to the /var/log/haproxy.log     #   file. A line like the following can be added to     #   /etc/sysconfig/syslog     #     #    local2.*                       /var/log/haproxy.log     #     log         127.0.0.1 local2     chroot      /var/lib/haproxy     pidfile     /var/run/haproxy.pid     maxconn     4000     user        haproxy     group       haproxy     daemon     # turn on stats unix socket     stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- 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 listen stats mode http bind *:1080 stats enable stats hide-version stats uri/haproxyadmin?stats stats realmHaproxy\ Statistics stats authadmin:admin stats admin if TRUE frontend web bind *:80 log global option httpclose option logasap option dontlognull capture request header Host len 20 capture request header Referer len 60 default_backend servers backend servers balance roundrobin server web1 172.16.100.101:80 check maxconn 3000 server web2 172.16.100.102:80 check maxconn 3000 # haproxy  -c -f /etc/haproxy/haproxy.cfg # 檢查配置文件 # service haproxy start 訪問:http://172.16.100.128兩臺web可以輪詢切換 訪問監控狀態頁面:http://172.16.100.128:1080/haproxyadmin?stats  以下關於haproxy的調度算法: 定義負載均衡算法,可用於“defaults”、“listen”和“backend”。用於在負載均衡場景中挑選一個server,其僅應用於持久信息不可用的條件下或需要將一個連接重新派發至另一個服務器時。支持的算法有:            roundrobin:基於權重進行輪叫,在服務器的處理時間保持均勻分佈時,這是最平衡、最公平的算法。此算法是動態的,這表示其權重可以在運行時進行調整,不過,在設計上,每個後端服務器僅能最多接受4128個連接;          static-rr:基於權重進行輪叫,與roundrobin類似,但是爲靜態方法,在運行時調整其服務器權重不會生效;不過,其在後端服務器連接數上沒有限制;          leastconn:新的連接請求被派發至具有最少連接數目的後端服務器;在有着較長時間會話的場景中推薦使用此算法,如LDAP、SQL等,其並不太適用於較短會話的應用層協議,如HTTP;此算法是動態的,可以在運行時調整其權重;          source:將請求的源地址進行hash運算,並由後端服務器的權重總數相除後派發至某匹配的服務器;這可以使得同一個客戶端IP的請求始終被派發至某特定的服務器;不過,當服務器權重總數發生變化時,如某服務器宕機或添加了新的服務器,許多客戶端的請求可能會被派發至與此前請求不同的服務器;常用於負載均衡無cookie功能的基於TCP的協議;其默認爲靜態,不過也可以使用hash-type修改此特性;          uri:對URI的左半部分(“問題”標記之前的部分)或整個URI進行hash運算,並由服務器的總權重相除後派發至某匹配的服務器;這可以使得對同一個URI的請求總是被派發至某特定的服務器,除非服務器的權重總數發生了變化;此算法常用於代理緩存或反病毒代理以提高緩存的命中率;需要注意的是,此算法僅應用於HTTP後端服務器場景;其默認爲靜態算法,不過也可以使用hash-type修改此特性;          url_param:通過爲URL指定的參數在每個HTTPGET請求中將會被檢索;如果找到了指定的參數且其通過等於號“=”被賦予了一個值,那麼此值將被執行hash運算並被服務器的總權重相除後派發至某匹配的服務器;此算法可以通過追蹤請求中的用戶標識進而確保同一個用戶ID的請求將被送往同一個特定的服務器,除非服務器的總權重發生了變化;如果某請求中沒有出現指定的參數或其沒有有效值,則使用輪叫算法對相應請求進行調度;此算法默認爲靜態的,不過其也可以使用hash-type修改此特性;          hdr():對於每個HTTP請求,通過指定的HTTP首部將會被檢索;如果相應的首部沒有出現或其沒有有效值,則使用輪叫算法對相應請求進行調度;其有一個可選選項“use_domain_only”,可在指定檢索類似Host類的首部時僅計算域名部分(比如通過www.magedu.com來說,僅計算magedu字符串的hash值)以降低hash算法的運算量;此算法默認爲靜態的,不過其也可以使用hash-type修改此特性;          rdp-cookie
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章