一、haproxy安裝
操作系統:centos6.5 iptables關閉和selinux爲disabled
haproxy是一個提供高可用、負載均衡的開源的代理服務器,haproxy安裝可以源碼安裝也可以yum安裝,本文采用yum安裝,yum安裝非常便捷。掛載本地鏡像,yum安裝haproxy。
yum -y install haproxy
安裝成功,是不是非常方便。查詢haproxy版本
二、haproxy配置
本文已經搭建好兩臺簡單的web服務器,就是nginx的基礎頁面,但略有不同
web服務器1:192.168.174.128(hostname:www.jzz.nginx 默認頁面:helloworld)
Web服務器2:192.168.174.131(hostname:www.jzztest.org 默認頁面:nginx安裝後默認頁面)
查看和配置haproxy配置文件
cat /etc/haproxy/haproxy.cfg | egrep -v '(#|^$)'
global -----------------------------------------------------------------全局配置
log 127.0.0.1 local2 ---------------日誌輸出配置
chroot /var/lib/haproxy --------------haproxy工作目錄
pidfile /var/run/haproxy.pid ----------haproxy的pid目錄
maxconn 4000 -------------------------最大連接數(默認配置)
user haproxy -------------------------運行haproxy用戶
group haproxy -------------------------haproxy所屬組
daemon --------------------------------後臺啓動
stats socket /var/lib/haproxy/stats ----這個不知道,後續補充
defaults ----------------------------------------------------------------默認配置
mode http -------------------------默認模式mod{tcp|http|health}
log global -------------------------日誌系統與global段相同
option httplog -----------------------日誌類別採用httplog
option dontlognull -----------------不記錄健康檢查日誌
option http-server-close ------------------------每次請求完畢後主動關閉http通道
option forwardfor except 127.0.0.0/8 ----後端服務器需要獲得客戶端真實ip需要配置的參數
option redispatch ------------------當請求的服務器掛掉之後強行切換到健康的服務器
retries 3 -------------------------3次連接服務器失敗後確定服務器不可用
timeout http-request 10s -------------------默認http請求超時時間(可優化)
timeout queue 1m ----------------------默認隊列超時時間(可優化)
timeout connect 10s ----------------------默認連接超時時間(可優化)
timeout client 1m --------------------------默認客戶端超時時間(可優化)
timeout server 1m -----------------------默認服務器超時時間(可優化)
timeout http-keep-alive 10s -------------------默認持久連接超時時間(可優化)
timeout check 10s -----------------------默認心跳檢測超時時間(可優化)
maxconn 3000 -------------------最大連接數,不要超過全局配置最大連接數
listen stats_auth ----------------------------------------------------監控頁面及監聽端口混合配置,做的有點差,僅做參考
bind 192.168.174.130:8000 ------------------------綁定監控頁面監聽端口
stats uri /status ------------------------------------------haproxy監控頁面
stats auth admin:westos ----------------------------配置監控頁面賬號密碼登錄
stats refresh 5s ------------------------------------------監控頁面自動刷新時間
stats hide-version ------------------------------------隱藏監控頁面haproxy版本號,保障安全
listen www.jzz.nginx *:8088 ----------------監聽的實例名稱、地址和端口,可配置多個
server web1 192.168.174.128:80 cookie app1inst1 check inter 2000 rise 2 fall 5 -----後端web服務器ip及其他配置
listen www.jzztest.org *:8089 ----------------監聽的實例名稱、地址和端口,可配置多個
server web2 192.168.174.131:80 cookie app1inst2 check inter 2000 rise 2 fall 5 -----後端web服務器ip及其他配置
listen localhost.localdomain *:80 -------------------
balance roundrobin ------------------------負載均衡算法(有roundrobin、static-rr、leastconn、source、url、url_param、hdr、rdp_cookie)
frontend main *:5000 -----------------------------------------------------------------------frontend前端配置,爲haproxy安裝時就有,能力有限,不再解釋
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
backend static ----------------------------------------------------------------------------------backend前端配置,爲haproxy安裝時就有,能力有限,不再解釋
balance roundrobin
server static 127.0.0.1:4331 check
backend app ----------------------------------------------------------------------------------backend前端配置,爲haproxy安裝時就有,能力有限,不再解釋
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
啓動haproxy服務
service haproxy start
訪問haproxy監控頁面端口下的/status,爲了安全起見,第一次登陸需要賬號密碼,賬號密碼就是配置文件裏設置的
進入監控頁面,在這裏可以看到我們的配置
訪問haproxy服務器ip的8088端口,可以發現跳轉到了Web服務器1
訪問haproxy服務器ip的8089端口,可以發現跳轉到了Web服務器2
也可以設置域名訪問到不同web服務器,但要在本地host綁定域名ip對應關係。
haproxy服務器配置成功
個人總結:haproxy安裝非常方便,但haproxy更多的是要學會haproxy的調優及各種配置,本文只講解了部分配置,因本人能力有限,還有許多配置未涉及到,但我後期會繼續學習,後續再做補充。
補充:
三、haproxy+keepalived簡單配置
前提:
1.兩臺haproxy服務器,配置基本一樣,可參考上面haproxy的配置,後端web服務器一樣
2.兩臺haproxy服務器器上都已安裝完成keepalived,安裝教程參考我的lvs+keepalived配置中的keepalived的安裝。
環境:
haproxy服務器1:192.168.174.129
haproxy服務器2:192.168.174.130
haproxy代理web服務器1:192.168.174.128(hostname:www.jzz.nginx 默認頁面:helloworld)
haproxy代理Web服務器2:192.168.174.131(hostname:www.jzztest.org 默認頁面:nginx安裝後默認頁面)
keepalived主服務器:192.168.174.129
keepalived從服務器:192.168.174.130
VIP:192.168.174.222
操作系統:centos6.5 iptables關閉和selinux爲disabled
keepalived主服務器配置文件
keepalived從服務器配置文件
keepalived主從配置文件依舊只有很小差別,在這裏只有priority和router_id不同,在這裏用到了一個檢測haproxy存活性的腳本,主從配置文件都有且相同
啓動兩臺服務器的haproxy服務和keepalived服務
查看keepalived主服務器ip綁定情況,可以看到虛擬IP已綁定
通過虛擬IP的不同端口去訪問,成功出現我們想要的結果
停掉主keepalived服務
到從keepalived服務器查看IP綁定情況,可以看到虛擬IP已經綁定到了從keepalived服務器
通過虛擬IP的端口訪問不受影響
實驗成功。