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.confglobal_defs
vrrp_instance vi_1
virtual_ipaddress
}
backup
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf global_defsvrrp_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 grep2.判斷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.confglobal_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.shvip=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.confglobal_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 多個中介軟體的架構 問題 主從之...