haproxy

四層轉發tcp(lvs)七層代理http(haproxy)
穩定性的適合用lvs  網站負載適合用haproxy nginx

haproxy(單核)

HAProxy 提供高可用性、負載均衡以及基於 TCP 和 HTTP 應用的代理,支持虛擬主機,
它是免費、快速並且可靠的一種解決方案。HAProxy 特別適用於那些負載特大的 web 站點, 這些站點通常又需要會話保持或七層處理。HAProxy 運行在當前的硬件上,完全可以支持數以萬計的併發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的 web 服務器不被暴露到網絡上。

三臺虛擬機:
虛擬機3調度器:
yum install haproxy -y (建議用rpm包裝)

wKiom1jNP5nTq0LzAAGCd57u2FM043.png-wh_50
cd /etc/haproxy/
vim haproxy.cfg

監控頁面添加認證:
listen admin *:8080
       stats enable
       stats uri /status  # 監控頁面地址
       stats authadmin:westos  # 管理帳號和密碼
       stats refresh 5s  #刷新頻率


listen  westos *:80      #監聽的實例名稱,地址和端口
        balance roundrobin   #負載均衡算法
        server web1172.25.42.13:80 check
        server web2 172.25.42.14:80 check

wKiom1jNP66illq9AAFJ3LVcafw723.png-wh_50

wKioL1jNP6_DzeuKAADROBwWbaE774.png-wh_50

wKiom1jNP7CT5UYwAAEuTUkfIlo366.png-wh_50

wKioL1jNP7HyCviqAAJVYKZg2hI685.png-wh_50


兩臺real server
/etc/init.d/httpd start

日誌監控:

$ModLoad imudp     #接受 haproxy 日誌
$UDPServerRun 514

vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages
local2.*                 /var/log/haproxy.log   #日誌文件位置
wKioL1jNP76B2uuzAAHzZ1IDvkU739.png-wh_50
自帶健康檢查:(測試)

wKiom1jNP9HSPtV5AAI6tMAabyo043.png-wh_50

wKioL1jNP9KhBMAAAABRngeIrtw869.png-wh_50


動態靜態訪問分離:(可以自己加虛擬主機)
frontend  westos *:80
    acl url_static path_beg       -i /p_w_picpaths
    acl url_static path_end   -i .jpg .gif .png

    use_backend static          if url_static
    default_backend  app (默認訪問app)

backend static (靜態)
        balance roundrobin
        server web2 172.25.42.14:80 check

backend app
        balance roundrobin
        server web1 172.25.42.13:80 check

wKiom1jNP-nyZz1wAADRnBcyAu8999.png-wh_50

wKiom1jNP-vxmLzwAAK7StBC2GI523.png-wh_50

wKioL1jNP-yAoMDWAAEs8Utv2jg492.png-wh_50

wKiom1jNP_GALFvBAAUGGUXK8Pk502.png-wh_50


錯誤重定向:
frontend  westos *:80
 acl url_static    path_beg       -i /p_w_picpaths  (以什麼開頭 默認根目錄)
 acl url_static path_end      -i .jpg .gif .png (以什麼結尾

    acl badhost  src 172.25.42.250  (設定誰不能訪問我)
    block if badhost
    errorloc 403 http://172.25.42.12:8000(注意端口不要衝突)(403:服務器拒絕你的訪問 服務器設定你是壞的 )(如果是403錯誤就重定向到 172.25.254.12:8000)

    redirect location http://172.25.42.12:8000 ifbadhost (如果出現錯誤訪問 就重定向 不管是什麼錯誤)
wKioL1jNQACjnlSBAAFkhfF5tdg307.png-wh_50
     use_backend static          if url_static
     default_backend  app


backend static
        balance roundrobin
        server web2 172.25.42.14:80 check
wKioL1jNQAyT8_IhAAEYXfFmfqg302.png-wh_50
backend app
        balance roundrobin
        server web1 172.25.42.13:80 check
        server local 172.25.42.12:8000backup

(如果後端realserver down掉 則調度報錯頁面 但是正常情況下不會訪問 因爲 是“backup”)

wKiom1jNQB_DUlBoAAFYMTyYkLk296.png-wh_50

wKiom1jNQCCSqTbBAAA5Xgx6yck019.png-wh_50

wKioL1jNQCLD-uU_AAAtrAc-CvM766.png-wh_50


301
永久重定向:(一般推薦用301  302臨時重定向 有惡意刷點擊的嫌疑)

    aclwestos.org hdr_beg(host) -i westos.org 
    acl 172.25.42.12 hdr_beg(host) -i172.25.42.12
#    block if badhost
#    errorloc 403http://172.25.42.12:8000

#    redirect locationhttp://172.25.42.12:8000 if badhost
     redirect code 301 locationhttp://www.westos.org if westos.org
    
(以westos.org訪問自動重定向 www.westos.org)
     redirect code 301 locationhttp://www.westos.org if 172.25.42.12
     (以172.25.42.12訪問自動重定向 www.westos.org)
     use_backend static          if url_static
     default_backend  app

wKioL1jNQDujWcvMAAF9sXlwW6k721.png-wh_50
讀寫分離:
real server(兩臺): yum install php -y
php頁面:
chmod 777 upload (默認上傳目錄一定要給權限)
 
wKiom1jNQEbzIvOeAAGXwbbjaIc906.png-wh_50
調度機器:
    acl read method GET     
    acl read method HEAD     //兩個read write 只用一個就行
    acl write method PUT
    acl write method POST

     use_backend app         if write 
     default_backend  static (默認靜態頁面 爲了測試 剛開始 www.westos.org 時是172.25.42.14 而寫(上傳時 卻是在172.25.254.13 上進行的)做到了讀寫分離)

backend static
        balance roundrobin
        server web2 172.25.42.14:80 check

backend app
        balance roundrobin
        server web1 172.25.42.13:80 check(
默認會上傳到這個real server)
        server local 172.25.42.12:8000backup
 
注意: /etc/init.d/haporxy reload   real server:/etc/init.d/httpd restart



wKiom1jNQFnB10_VAABOXCWFWk4359.png-wh_50

wKioL1jNQFnx3y4dAABYaOmQ4DY235.png-wh_50

wKiom1jNQFrSyJcWAAB-PiMoJDA575.png-wh_50




 


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