linux lnmp分布式集群,LNMP 分布式集群(六):keepalived 高可用方案
前言
LNMP 分布式集群的部署實踐 系列文章:
衡量一個集群的高可用性在于沒有單點故障,即其中任何一臺服務(wù)器宕機都不會造成整個服務(wù)中斷。
之前的LNMP分布式集群的實踐中,顯然在將Nginx作為負(fù)載均衡服務(wù)器時,upstream機制能檢測出后端服務(wù)器是否可用,如果其中一臺服務(wù)器宕機,Nginx能自動轉(zhuǎn)移到后端正常的服務(wù)器中,以保持系統(tǒng)持續(xù)可用。
但現(xiàn)在只有一臺負(fù)載均衡服務(wù)器,一旦該服務(wù)器發(fā)生故障,就會造成整個集群服務(wù)中斷,為此,使用 keepalived 部署備用服務(wù)器,實現(xiàn)故障轉(zhuǎn)移。
Keepalived 內(nèi)置了 VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協(xié)議)功能,用于解決靜態(tài)路由出現(xiàn)的單點故障問題,它通過IP多播的方式通信,當(dāng)發(fā)現(xiàn)路由故障時,通過選舉策略將備用路由更換為主路由,從而繼續(xù)提供服務(wù)。
Keepalived 實現(xiàn)了將提供對外訪問的IP地址(Virtual IP)自動在主服務(wù)器(Master)和備用服務(wù)器(Backup)之間切換,正常情況下用Master,當(dāng)它故障了那么監(jiān)控它的Backup會通過優(yōu)先級機制競爭接管Virtual IP繼續(xù)對外服務(wù),其他落選的就繼續(xù)監(jiān)控當(dāng)前使用的 Virtual IP 服務(wù)器。
高可用環(huán)境中的服務(wù)器:
角色
Real IP(RIP)
Virtual IP(VIP)
說明
Master
192.168.177.21
192.168.177.11
Nginx + Keepalived
Backup
192.168.177.22
192.168.177.11
Nginx + Keepalived
-
192.168.177.1X
-
后端服務(wù)器集群
然后我們對之前的LNMP分布式集群架構(gòu)做出更改:
這就是LNMP高可用分布式集群!
但是為了演示我們不加入集群,使用兩個簡單的后端服務(wù)器,RIP分別為192.168.177.23和192.168.177.24,Keepalived 服務(wù)的虛擬IP改為192.168.177.20:
角色
Real IP(RIP)
Virtual IP(VIP)
說明
Master
192.168.177.21
192.168.177.20
Nginx + Keepalived
Backup
192.168.177.22
192.168.177.20
Nginx + Keepalived
-
192.168.177.23
-
后端服務(wù)器1
-
192.168.177.24
-
后端服務(wù)器2
部署
安裝和配置 keepalived 服務(wù)
部署和配置主服務(wù)器
cd /usr/local/nginx/html
echo 'This is Master' > index.html
curl http://localhost
tar -zxvf keepalived-1.2.24.tar.gz
cd keepalived-1.2.24
./configure
make && make install && cd ..
cd /usr/local/etc/rc.d/init.d
cp keepalived /etc/init.d/keepalived
chmod +x /etc/init.d/keepalived
chkconfig keepalived on
cd /usr/local/etc/sysconfig
ln -s `pwd`/keepalived /etc/sysconfig/keepalived
cd /usr/local/sbin
ln -s `pwd`/keepalived /usr/sbin/keepalived
# 配置主服務(wù)器的 keepalived
less /usr/local/etc/keepalived/keepalived.conf # 查看配置文件模板
mkdir /etc/keepalived # 手動創(chuàng)建默認(rèn)加載的配置文件
vi /etc/keepalived/keepalived.conf
vrrp_instance VI_1 { # 配置一個虛擬路由
state MASTER
interface ens33 # 指定監(jiān)測的網(wǎng)卡
virtual_router_id 21 #虛擬路由的標(biāo)識,同一個 VRRP 的 Master 和 Backup 應(yīng)一致
mcast_src_ip 192.168.177.21 # 設(shè)置 real IP,可省略,有默認(rèn)自動使用主IP
priority 100 # 優(yōu)先級、權(quán)重(權(quán)重最高的主機將接管 Virtual IP),范圍0-254
advert_int 1 # MASTER 和 BACKUP 之間同步檢查的時間間隔,單位秒
authentication {
auth_type PASS # 驗證類型,PASS表示密碼驗證
auth_pass 123456 # 設(shè)置密碼
}
virtual_ipaddress { # 配置 虛擬IP地址池,每行一個
192.168.177.20 # 為 MASTER 和 Backup 設(shè)置相同的虛擬IP
}
}
# 啟動 keepalived 服務(wù)
service keepalived start
ps aux | grep keepalived
ip a | grep 192.168.177.20
#### 配置備用服務(wù)器的 keepalived
基于主服務(wù)器克隆出一臺備用服務(wù)器,IP為192.168.177.22。然后打開 keepalived 配置:
```bash
vrrp_instance VI_1 {
state BACKUP # 修改身份為 BACKUP
priority 90 # 修改優(yōu)先級為90(低于MASTER)
……
}
# Master 和 Backup 通過 VRRP 的 112 端口通信
iptables -I INPUT -s192.168.177.21 -p112 -jACCEPT
service iptables save
iptables -I INPUT -s192.168.177.22 -p112 -jACCEPT
service iptables save
service keepalived start # 啟動 Backup服務(wù)器的 Keepalived 服務(wù)
# 區(qū)分當(dāng)前訪問的是哪一臺服務(wù)器
cd /usr/local/nginx/html
echo 'This is Backup' > index.html
# 測試,訪問192.168.177.20
service network stop
service network start
復(fù)制代碼
至此就部署完畢了。
使用Keepalived 監(jiān)控本機服務(wù)
除了可以監(jiān)控其他服務(wù)器中的Keepalived是否正常,也可以監(jiān)控本機中的某個服務(wù)是否正常:
監(jiān)控本機Nginx服務(wù)
vrrp_script chk_nginx {
script "/chk_nginx.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
……
track_script {
chk_nginx
}
}
vi /chk_nginx.sh # 創(chuàng)建監(jiān)控腳本
# !/bin/bash
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
service nginx start
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
service keepalived stop
fi
fi
chmod +x /chk_nginx.sh
service keepalived reload
復(fù)制代碼
高可用測試
service nginx stop # 手動停用
ps -C nginx --no-header # 等待2秒,查看是否恢復(fù)啟動
# 創(chuàng)建停止 Nginx 服務(wù)并立即取消 Nginx 程序執(zhí)行權(quán)限的腳本
cd /usr/local/nginx/sbin
vi test.sh
#! /bin/bash
service nginx stop
chmod -x nginx
chmod +x test.sh
./test.sh
# 看是否自動切換到備用服務(wù)器
復(fù)制代碼
LNMP 分布式集群的部署實踐 系列文章:
dfface 的版權(quán)聲明:所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0
許可協(xié)議。轉(zhuǎn)載請注明出處,嚴(yán)禁商業(yè)用途!
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的linux lnmp分布式集群,LNMP 分布式集群(六):keepalived 高可用方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux输出mac,Linux(Mac
- 下一篇: linux kernel基本构成的内容有