HAproxy實現反向代理、負載均衡集羣以及web動靜分離

一、HAproxy簡介

HAproxy是高性能的代理服務器,其可以提供Lay4Lay7代理,具有Healthcheck,負載均衡,訪問控制特性,完全可以支持數以萬計的併發連接,性能卓越。而且HAproxy的運行模式使得它可以很簡單安全的整合進當前的架構中,同時可以保護後臺web服務器不被暴露到網絡上

二、實驗環境及配置

1.環境

系統環境:centos6.4-i386

haproxy:1.4.22-3-i686

安裝:yum-yinstallhaproxy

2.配置文件

global #全局段
log         127.0.0.1 local2
chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy
group       haproxy
daemon
defaults #默認配置(全局有效)
mode                    http # 基於那種模式工作(http 、tcp、health)
log                     global #定義日誌
option                  httplog #詳細記錄http日誌
option                  dontlognull #不記錄健康檢查的日誌信息
option http-server-close
option forwardfor       except 127.0.0.0/8
option                  redispatch
retries                 3
option                  httplog
option                  dontlognull
option http-server-close
option forwardfor       except 127.0.0.0/8
option                  redispatch #ServerID對應的服務器宕機後,強制定向到其他運行正常的服務器
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 webserver #前端配置
backend appservers #後端服務器
listen stats #listen段(可以單獨使用,相當於frontend+backend)

三、反向代理

全局配置和默認配置同上

frontend  webserver #定義前端服務
bind *:80
default_backend             appserver
backend appserver#定義後端服務
  server  yxm23      172.16.15.23:80 check #服務名 IP:PORT  健康檢測

161353479.png

使用listen段實現反向代理

listen  webserver
bind *:80
server yxm23      172.16.15.23:80 check

定義兩組服務(listenfrontendbackend混合使用)bind端口不能相同

訪問:172.16.15.18:8080安裝haproxy服務器的IP

frontend  webserver
bind *:80
default_backend    appserver
backend appserver
server yxm23      172.16.15.23:80 check
listen staticserver
bind *:8080
server yxm14    172.16.15.14:80 check

四、提供狀態頁面

listen stats
bind *:8088(定義任意端口)
stats enable #啓動狀態頁面 默認路徑http://172.16.15.18:8080/haproxy?stats
stats hide-version #隱藏版本號(B(backend) D(defaults) L(listen))
stats realm Haproxy\ yxm  #提供認證(要訪問需要提供用戶密碼)B D L
stats auth yxm:yxm #認證用戶名密碼 B D L
stats admin if TRUE #提供管理功能(前提是需要先通過認證)L B
  stats url  /hyxm 修改默認路徑 D L B

161437864.png

161509310.png

五、實現負載均衡

1.調度算法

roundrobin:加權輪調

static-rr:輪調,靜態調度算法

sourceuri

hash-typemap-based靜態

hash-typeconsistent動態

2.動態調度算法支持的特性

<1>權重在服務運行時調整

<2>支持慢速啓動

靜態調度算法實現負載均衡

  frontend webserver
          bind *:80
          default_backend  appservers
  backend appservers
          server yxm23    172.16.15.23:80 check  #後端兩臺服務
          server yxm14    172.16.15.14:80 check

161547826.png

動態調度算法實現負載均衡

  backend appservers
          balance source #調度算法 (source、 uri:適用於緩存服務器)
          hash-type consistent  #哈希類型,一致性哈希算法
          server yxm23    172.16.15.23:80 check weight 2  #默認服務,服務宕掉後,後續服務啓動,服務修復後重新奪回服務
          server yxm14    172.16.15.14:80 check weight 3  #

六、使用ACL實web動靜分離

1.ACL語法解析

ACLfronedlistenbackend)使用範圍

語法acl<aclname><criterior>[flags][operator]<value>

aclacl名稱標準標誌位操作符值

標誌位:-i:忽略字符大小寫

值類型:ranges:範圍、數字1024:65535#端口102465535

operatorsgeeqltlegt

strings字符串

regularexpression正則表達式

IPaddressesandnetworksIP地址或者網絡地址

Criterior:標準

dst<IP>dst_portsrcsrc_port

path:訪問路徑

path_beg:路徑以#####開頭

egaclstaticpath_end.html.html結尾

path_end:路徑以#####結尾

path_reg:匹配正則表達式(與字符串匹配相比速度較慢)

Urlurl_begurl_end

hdr_beg(host):主機名以#####開頭

2.web動靜分離

frontend webserver
          bind *:80
     acl static path_beg -i /static /images /javascript /stylesheets
     acl static path_end -i .jpg .png .jpeg .gif .swf .css .js
     use_backend staticserve if static
     default_backend  appservers
  backend static
     banlance roundrobin
     server yxm14    172.16.15.14:80 check weight 1 maxconn 2000#後端服務器
server yxm18      127.0.0.1 check weight 1 backup #本地主機作爲備用主機
  
  backend appservers
     banlance roundrobin
     server yxm23    172.16.15.23:80 check weight 1 maxconn 1000#後端服務器
server yxm18      127.0.0.1 check weight 1 backup #本地主機作爲備用主機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章