HAProxy + Keepalived 搭建高可用負(fù)載均衡集群
“ HAProxy + Keepalived 搭建高可用負(fù)載均衡集群”

01
—
環(huán)境準(zhǔn)備
1.1 集群規(guī)劃
準(zhǔn)備四臺 Linux 服務(wù)器或者虛擬機(jī)| 編號 | 描述 | IP |
|---|---|---|
| 1 | 業(yè)務(wù)系統(tǒng) | 192.168.3.20 |
| 2 | 業(yè)務(wù)系統(tǒng) | 192.168.3.21 |
| 3 | HAProxy 1 + Keepalived 1 | 192.168.3.10 |
| 4 | HAProxy 2 + Keepalived 2 | 192.168.3.11 |
1.2 部署業(yè)務(wù)系統(tǒng)
在
192.168.3.20和192.168.3.21上部署好業(yè)務(wù)系統(tǒng). 帥帥這里寫了一個最簡單的 SpringBoot 應(yīng)用, 為了加以區(qū)別, 分別打包輸出 Node1 和 Node2.

02
—
部署 HAProxy 搭建負(fù)載均衡集群
2.1 安裝 HAProxy
分別在兩臺機(jī)器
192.168.3.10和192.168.3.11上安裝 HAProxy.
yum install -y haproxy
2.2 配置 HAProxy
在兩臺機(jī)器
192.168.3.10和192.168.3.11上編輯配置文件
vi /etc/haproxy/haproxy.cfg
global
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
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
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend app
mode tcp
bind *:9090
option tcplog
default_backend app
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server 192.168.3.20 192.168.3.20:8080 check
server 192.168.3.21 192.168.3.21:8080 check
#---------------------------------------------------------------------
# admin manager
#---------------------------------------------------------------------
listen stats
bind *:1080
stats auth admin:success123
stats refresh 5s
stats realm HAProxy\ Statistics
stats uri /admin
2.3 啟動 HAProxy
啟動兩臺機(jī)器的 HAProxy
systemctl start haproxy
systemctl status haproxy
看到 HAProxy 顯示
active (running)就表示啟動起來了

2.4 驗(yàn)證
2.4.1 訪問 HAProxy 的后臺統(tǒng)計頁面
訪問
http://192.168.3.10:1080/admin和http://192.168.3.11:1080/admin可以看到兩臺業(yè)務(wù)系統(tǒng)都是運(yùn)行狀態(tài)就表示系統(tǒng)負(fù)載均衡配置完成.

2.4.2 訪問業(yè)務(wù)系統(tǒng)
通過 HAProxy 訪問業(yè)務(wù)系統(tǒng):
http://192.168.3.10:9090/和http://192.168.3.11:9090/, 并多次切換觀察負(fù)載均衡效果

03
—
部署 Keepalived 實(shí)現(xiàn) HAProxy 主備模式
3.1 安裝 Keepalived
在兩臺機(jī)器
192.168.3.10和192.168.3.11上安裝 Keepalived
yum install -y keepalived
3.2 配置 Keepalived
3.2.1 配置 Master 節(jié)點(diǎn) 192.168.3.10
! Configuration File for keepalived
global_defs {
router_id app_router
}
vrrp_script check_haproxy {
script "killall -0 haproxy"
interval 3
weight -2
fall 10
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface enp0s3
virtual_router_id 51
priority 200
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.3.110
}
track_script {
check_haproxy
}
}
3.2.2 配置備份節(jié)點(diǎn) 192.168.3.11
! Configuration File for keepalived
global_defs {
router_id app_router
}
vrrp_script check_haproxy {
script "killall -0 haproxy"
interval 3
weight -2
fall 10
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface enp0s3
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.3.110
}
track_script {
check_haproxy
}
}
3.3 啟動 Keepalived 主備模式
分別在兩臺機(jī)器上啟動 keepalived
systemctl start keepalived

查看 VIP(由于我們配置了主節(jié)點(diǎn)優(yōu)先級更高 200 --- 100), 因此 VIP 首先會在主節(jié)點(diǎn).

3.4 通過 VIP 訪問業(yè)務(wù)系統(tǒng)
現(xiàn)在就可以通過 VIP(
192.168.3.110)+port 的方式訪問, 這樣, 當(dāng)主節(jié)點(diǎn)存活的情況下就會通過主節(jié)點(diǎn)(192.168.3.10)的 HAProxy 負(fù)載均衡訪問業(yè)務(wù)系統(tǒng), 如果主節(jié)點(diǎn)宕機(jī), VIP 就會飄到備份節(jié)點(diǎn)上走備份節(jié)點(diǎn)的 HAProxy 負(fù)載均衡訪問業(yè)務(wù)系統(tǒng).

04
—
宕機(jī)測試
關(guān)閉主節(jié)點(diǎn)(192.168.3.10)模擬主節(jié)點(diǎn)宕機(jī). 繼續(xù)通過 VIP 訪問發(fā)現(xiàn)依然可以訪問業(yè)務(wù)系統(tǒng). 即達(dá)到我們的高可用.
結(jié)論: 當(dāng)主節(jié)點(diǎn)存活的情況下就會通過主節(jié)點(diǎn)(
192.168.3.10)的 HAProxy 負(fù)載均衡訪問業(yè)務(wù)系統(tǒng), 如果主節(jié)點(diǎn)宕機(jī), VIP 就會飄到備份節(jié)點(diǎn)上走備份節(jié)點(diǎn)的 HAProxy 負(fù)載均衡訪問業(yè)務(wù)系統(tǒng).
05
—
視頻教程
視頻教程已經(jīng)提前發(fā)布在 HAProxy + Keepalived 搭建高可用負(fù)載均衡集群架構(gòu).
感興趣的朋友掃下方的 Bilibili 二維碼查看視頻教程, 大家記得一鍵三連哈.....哈哈哈哈...

掃碼或者復(fù)制網(wǎng)頁鏈接到瀏覽器都可以播放哦:
https://www.bilibili.com/video/BV1Fh411Y7hc
點(diǎn)擊文檔底部閱讀原文可以跳轉(zhuǎn)到我們 JavaFamily 官方博客站點(diǎn)哦(服務(wù)器資源緊缺, 加載比較慢, 耐心點(diǎn)哦, 親).
如果有任何相關(guān)的問題都可以加入 QQ/微信群一起討論, 學(xué)習(xí), 進(jìn)步. 此外如果有任何對于本公眾號的意見和建議也歡迎大家留言積極批評指正, 最后, 愿你我都能成為更好的自己.
我是帥帥, 一個集帥氣, 幽默與內(nèi)涵, 并且熱愛編程, 擁抱開源, 喜歡烹飪與旅游的暖男, 我們下期再見. 拜了個拜!
每文一騷
————
Why do we fall? So we can learn to pick ourselves up.
人為什么會跌倒? 因?yàn)檫@樣我們才能學(xué)會振作
日常求贊
————
你們白漂的力量就是我拖更的史詩級動力, 點(diǎn)贊, 評論, 再看, 贊賞, 看都看到這了, 隨便點(diǎn)一個咯.
關(guān)注加好友
拉你進(jìn)大佬交流群
————————————————
