linux集群架構 keepalived高可用

2022-09-11 02:42:14 字數 3567 閱讀 1631

1.什麼是高可用,為什麼要設計高可用?

兩台機器啟動著相同的業務系統時,當有一台宕機,另外一台伺服器能快速的接管,對於訪問的使用者是減少系統不能提供服務的時間

2.高可用使用什麼工具來實現?硬體還是軟體?

軟體:keepalived

3.keepalived如何實現高可用?

通過vrrp協議實現,虛擬路由冗餘協議

4.5.

6.7.keepalived高可用的安裝與配置

10.0.0.5

10.0.0.6兩台機器都做了負載均衡

1.安裝

yum install keepalived -y

2.配置(master |backup)

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf 

global_defs

vrrp_instance vi_1

virtual_ipaddress

}

backup

[root@lb02 ~]# cat /etc/keepalived/keepalived.conf global_defs 

vrrp_instance vi_1

virtual_ipaddress

}

啟動[root@lb01 ~]# systemctl start keepalived

[root@lb01 ~]# systemctl enable keepalived

驗證[root@lb01 ~]# ip addr|grep 10.0.0.3

8.keepalived高可用搶占式與非搶占式?

1.master故障----backup頂上-----master恢復-----      搶占式 預設

2.master故障----backup頂上------master恢復-----backup繼續工作      非搶占式

1、兩個節點的state都必須配置為backup(官方建議)

2、兩個節點都在vrrp_instance中新增nopreempt引數

3、其中乙個節點的優先順序必須要高於另外乙個節點的優先順序。

兩台伺服器都角色狀態啟用nopreempt後,必須修改角色狀態統一為backup,唯一的區分就是優先順序。

特點:搶占:硬體配置不一

非搶占:硬體配置一致

keepalived高可用與nginx整合,位址實現漂移高可用

nginx與keepalivd本質上沒有什麼關係,但nginx需要借助keepalived vip 位址漂移 實現高可用

9.如果nginx宕機,會導致使用者請求失敗,但keepalived並不會進行切換,所以需要編寫乙個指令碼檢測nginx的存活

1.判斷nginx程序是否存在            ps aux|grep nginx|grep -v grep

2.判斷nginx的埠是否存在 netstat -lntp|grep :80|wc -l

3.通過curl來模擬訪問,判斷訪問結果是否ok curl -h host:url.oldxu.com http://

10.0.0.3

編寫指令碼

[root@lb01 ~]# mkdir /scripts

[root@lb01 ~]# vim /scripts/check_web.sh

#!/usr/bin/bash

nginx_port=$(netstat -lntp|grep :80|wc -l)

if [ $nginx_port -ne 1

];then

systemctl start nginx &>/dev/null

rc=$?sleep

3if [ $rc -ne 0

];then

systemctl stop keepalived

fifi

[root@lb01 ~]# chmod +x /scripts/check_web.sh

2.keeplaived呼叫該指令碼

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf 

global_defs

定義指令碼名稱,以及指令碼所在的路徑

vrrp_script check_web

vrrp_instance vi_1

virtual_ipaddress

#呼叫指令碼名稱

track_script

}

模擬nginx停止,檢查nginx是否會被拉起

systemctl stop nginx

systemctl starus nginx

10keepalived高可用腦裂與故障解決

腦裂(split-brain),指在乙個高可用(ha)系統中,當聯絡著的兩個節點斷開聯絡時,本來為乙個整體的系統,**為兩個獨立節點,這時兩個節點開始爭搶共享資源,結果會導致系統混亂,資料損壞。

對於無狀態服務的ha,無所謂腦裂不腦裂;

但對有狀態服務(比如mysql)的ha,必須要嚴格防止腦裂。

(但有些生產環境下的系統按照無狀態服務ha的那一套去配置有狀態服務,結果可想而知...)

在備上編寫檢測指令碼,測試如果能ping通主並且備節點還有vip的話則認為產生了腦裂

[root@lb02 conf.d]# cat /scripts/check_spilt.sh 

vip=10.0.0.3

master_ip=10.0.0.5

ping -c2 $master_ip &>/dev/null

if [ $? -eq 0

];then

ip_check=$(ip addr | grep "

$vip

" | wc -l)

if [ $ip_check -eq 1

];then

echo "腦列

"systemctl stop keepalived

fifi

執行指令碼

[root@lb02 conf.d]# cat /etc/keepalived/keepalived.conf 

global_defs

vrrp_script check_spilt

vrrp_instance vi_1

virtual_ipaddress

track_script

}

keeplaived使用:

1.不能在公有雲上使用

2.公有雲要想實現負載均衡高可用-----> 購買的slb  自帶高可用

3.虛擬ip咋使--->真實的硬體環境:

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf global_defs 

定義指令碼名稱,以及指令碼所在的路徑vrrp_script check_web

vrrp_instance vi_1 virtual_ipaddress

#呼叫指令碼名稱track_script }

Linux集群架構

高可用集群通常為2臺伺服器 功能和角色是一樣的 一台在工作,另一台作為冗餘。當提供服務的機器宕機,冗餘將接替繼續提供服務,這樣就可以提供系統可用的效率。高可用集群的衡量標準要保證集群服務100 時間永遠完全可用,幾乎可以說是一件不可能完成的任務。比如,在這幾年雙十一剛開始的時候,一下子進來買東西的人...

Mycat集群架構

架構圖集群總共需要有8臺機子,mysql需要4臺,mycat需要2臺,負載均衡和高可用需要2臺。之所以mycat需要集群這樣的架構,是為了避免mycat單點失效的情況,mysql主機有4臺 db1 db4 其中db1和db3是組一 主主複製 db2和db4是組二 主主複製 之所以需要主主複製是因為m...

MYSQL集群架構

1 讀寫分離架構 主從架構 一寫多讀,一主多從 問題 應用程式需要連線多個資料來源 mycat可以解決 主從之間同步是非同步的 資料時弱一致性的 pxc集群 2 中介軟體 問題 主從之間同步是非同步的 資料時弱一致性的 pxc集群 中介軟體的效能將成為系統的瓶頸 3 多個中介軟體的架構 問題 主從之...