Linux集群
使用多臺服務器搭建成一個集群來運行應用程式,不僅可以避免單點故障,還能提升服務器的承載能力
集群從功能實作上分為兩種:高可用集群和負載均衡集群
高可用集群,當一臺服務器宕機不能提供服務時,還有另外的服務器頂替
負載均衡集群,把用戶的請求分攤到多臺服務器上
搭建高可用集群
高可用集群,即“HA集群”,也稱作“雙機熱備”
常見實作高可用的開源軟體有heartbeat和keepalived
keepalived作業原理
VRRP協議,是實作路由高可用的一種通信協議,在這個協議里會將多臺功能相同的路由器組成一個小組,這個小組里有一個master主機和n個backup備用機,作業時,master會通過組播的形式向各個backup發送VRRP協議的資料包,當backup收不到master發來的VRRP資料包時,就會認為master宕機了,
keepalived就是采用VRRP協議實作的高可用,keepalived要有三個模塊,分別是core、check和vrrp,其中core模塊為keepalived的核心,負責主行程的啟動、維護以及全域組態檔的加載和決議;check模塊負責健康檢查;vrrp模塊用來實作VRRP協議
實作Wed高可用
VIP:虛擬ip,服務器靠這個ip對外提供服務,當master機器宕機時,VIP被分配到backup
安裝服務
準備兩臺機器,一臺master,一臺backup
在兩臺機器上安裝keepalived和nginx服務
# yum install -y keepalived
# yum install -y epel-release
# yum install -y nginx
配置keepalived檔案
編輯master的組態檔
# vi /etc/keepalived/keepalived.conf

global_defs {
notification_email {
[email protected] //定義接收告警的人}
notification_email_from [email protected] //定義發郵件地址
smtp_server 127.0.0.1 //定義發郵件地址,127.0.0.1為使用本機自帶郵件服務器發送
smtp_connect_timeout 30
router_id LVS_DEVEL
} vrrp_script kei_nginx {
script "/usr/local/sbin/check_ng.sh" //自定義腳本,該腳本為監控nginx服務的腳本
interval 3 //每隔3s執行一次該腳本
} vrrp_instance VI_1 {
state MASTER //角色為master interface ens33 //針對哪個網卡監聽VIP
virtual_router_id 51
priority 100 //權重為100,master要比backup大
advert_int 1
authentication {
auth_type PASS
auth_pass kei>com //定義自定義密碼
}
virtual_ipaddress {
192.168.37.100 //定義VIP
}
track_script {
kei_nginx //定義監控腳本
}
} 退出保存 編輯backup的組態檔 # vi /etc/keepalived/keepalived.conf

global_defs {
notification_email {[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
} vrrp_script kei_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
} vrrp_instance VI_1 {
state BACKUP //角色為backup
interface ens33
virtual_router_id 51
priority 90 //比master數值小
advert_int 1
authentication {
auth_type PASS
auth_pass kei>com
}
virtual_ipaddress {
192.168.37.100
} track_script {
kei_nginx
}
} 退出保存
編輯監控腳本(此腳本兩臺機器配置一樣)
定義一個監控nginx服務的腳本 # vi /usr/local/sbin/check_ng.sh
d=`date --date today +%Y%m%d_%H:%M:%S`
//時間變數,用于記錄日志
n=`ps -C nginx --no-heading|wc -l`
計算nginx行程數量if [ $n -eq "0" ]; then
systemctl start nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi //如果行程為0,則啟動nginx,并再次檢測行程數量 //如果還為0,說明nginx無法啟動,此時需要關閉keepalived
其他配置(兩臺機器操作)
給腳本權限
# chmod a+x /usr/local/sbin/check_ng.sh
啟動keepalived
# systemctl start keepalived
查看狀態
在master機器上
查看IP
# ip addr

查看nginx服務行程
# ps aux |grep nginx

驗證高可用
先把master上的nginx關掉
# systemctl stop nginx

等3s再次檢測埠,發現服務被啟動

模擬master宕機
# iptables -I OUTPUT -p vrrp -j DROP
在backup機器上查看是否被設定VIP

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/128283.html
標籤:Linux
上一篇:vnc連接遠端linux服務器
下一篇:Linux常用查看版本指令
