高可用集群通常為2臺伺服器(功能和角色是一樣的),一台在工作,另一台作為冗餘。當提供服務的機器宕機,冗餘將接替繼續提供服務,這樣就可以提供系統可用的效率。
高可用集群的衡量標準
描述要保證集群服務100%時間永遠完全可用,幾乎可以說是一件不可能完成的任務。比如,**在這幾年雙十一剛開始的時候,一下子進來買東西的人很多,訪問量大,都出現一些問題,如下單後卻支付不了。所以說只能保證服務盡可能的可用,當然有些場景相信還是可能做到100%可用的。
通常用平均無故障時間(mttf)來度量系統的可靠性,用平均故障維修時間(mttr)來度量系統的可維護性。於是可用性被定義為:ha=mttf/(mttf+mttr)*100%。
具體ha衡量標準:
通俗叫法
可用性級別
年度停機時間
基本可用性
2個999%
87.6小時
較高可用性
3個999.9%
8.8小時
具有故障自動恢復能力的可用性
4個999.99%
53分鐘
極高可用性
5個999.999%
5分鐘
負載均衡集群
需要有一台伺服器作為分發器,它負責把使用者的請求分發給後端的伺服器處理,在這個集群裡,除了分發器外,就是給使用者提供服務的伺服器了,這些伺服器數量至少是2臺。
實現負載均衡的開源軟體有lvs keepalived haproxy nginx ,商業使用的有f5 和netscaler等負載均衡器。優勢在於更高的應答量和良好的穩定性。
使用開源軟體來搭建的負載均衡,其穩定性依賴伺服器的穩定性
global_defs //
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id lvs_devel
}vrrp_script chk_nginx
vrrp_instance vi_1
virtual_ipaddress
track_script
}
#!/bin/bash
#時間變數,用於記錄日誌
d=`date --date today +%y%m%d_%h:%m:%s` //表示時間
#計算nginx程序數量
n=`ps -c nginx --no-heading|wc -l` //計算nginx的程序數
#如果程序為0,則啟動nginx,並且再次檢測nginx程序數量,
#如果還為0,說明nginx無法啟動,此時需要關閉keepalived
if [ $n
-eq"0" ]; then
/etc/init.d/nginx start
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 //nginx服務沒有啟動時,停止keepalived,給backup使用。
fifi
chmod
755 /usr/local/sbin/check_ng.sh
[root@chunt ~]# systemctl start keepalived
[root@chunt ~]# ps aux |grep keepalived
root 1582
0.00.1
120740
1408 ? ss 00:38
0:00 /usr/sbin/keepalived -d
root 1583
0.00.3
127476
3276 ? s 00:38
0:00 /usr/sbin/keepalived -d
root 1584
0.20.3
131780
3116 ? s 00:38
0:00 /usr/sbin/keepalived -d
root 1640
0.00.0
112676
980 pts/1 s+ 00:39
0:00
grep --color=auto keepalived
[root@chunt ~]#
[root@spring ~]# getenforce
disabled
[root@spring ~]# systemctl stop firewalld
[root@spring ~]# !ipt
iptables -nvl
chain
input (policy accept
0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
chain
forward (policy accept
0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
chain
output (policy accept
0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
[root@spring ~]#
編寫監控指令碼/usr/local/sbin/check_ng.sh,加入以下內容global_defs
notification_email_from root@aminglinux.com
smtp_server 127.0
.0.1
smtp_connect_timeout 30
router_id lvs_devel
}vrrp_script chk_nginx
vrrp_instance vi_1
virtual_ipaddress
track_script
}
並修改為755的許可權,啟動服務。#時間變數,用於記錄日誌
d=`date --date today +%y%m%d_%h:%m:%s`
#計算nginx程序數量
n=`ps -c nginx --no-heading|wc -l`
#如果程序為0,則啟動nginx,並且再次檢測nginx程序數量,
#如果還為0,說明nginx無法啟動,此時需要關閉keepalived
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
fifi
測試訪問主ip顯示的是master,訪問從ip顯示backup ,訪問192.168.244.100顯示的資訊和主上是一樣的。[root@spring ~]# chmod 755 !$
chmod
755 /usr/local/sbin//check_ng.sh
[root@spring ~]# systemctl start keepalived
[root@spring ~]# ps aux |grep keepalived
root 1516
0.00.0
120740
1408 ? ss 01:01
0:00 /usr/sbin/keepalived -d
root 1517
0.00.1
127476
3276 ? s 01:01
0:00 /usr/sbin/keepalived -d
root 1518
0.10.1
131780
3108 ? s 01:01
0:00 /usr/sbin/keepalived -d
root 1575
0.00.0
112676
976 pts/0 s+ 01:02
0:00
grep --color=auto keepalived
[root@spring ~]#
iptables -i output -p vrrp -j drop
在master上關閉keepalived服務後再檢視ip,發現192.168.244.100ip不在master上了,而是去到了backup上面。當啟動master上的keepalived服務後,vip又回到了master上 linux集群架構 keepalived高可用
1.什麼是高可用,為什麼要設計高可用?兩台機器啟動著相同的業務系統時,當有一台宕機,另外一台伺服器能快速的接管,對於訪問的使用者是減少系統不能提供服務的時間 2.高可用使用什麼工具來實現?硬體還是軟體?軟體 keepalived 3.keepalived如何實現高可用?通過vrrp協議實現,虛擬路由...
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 多個中介軟體的架構 問題 主從之...