應(yīng)用系統(tǒng)高可用
--------------------------
建設(shè)應(yīng)用系統(tǒng)高可用方案。
當(dāng)系統(tǒng)服務(wù)出現(xiàn)故障或者服務(wù)器出現(xiàn)故障時候,自動從主服務(wù)切換至備服務(wù),并預(yù)警告知人工干預(yù)修復(fù),保證產(chǎn)能不受影響。
數(shù)據(jù)庫高可用
建設(shè)數(shù)據(jù)庫高可用方案。數(shù)據(jù)庫發(fā)生宕機或者意外中斷等故障時候,能盡快恢復(fù)系統(tǒng)應(yīng)用可用,盡可能減少產(chǎn)線停機時間,保證產(chǎn)能不會因為單節(jié)點數(shù)據(jù)庫的故障而中斷;同時,因故障引起數(shù)據(jù)庫切換,切換前后數(shù)據(jù)內(nèi)容保證一致,不會因為數(shù)據(jù)缺失或者數(shù)據(jù)不一致而影響生產(chǎn)。
利用Nginx+MHA實現(xiàn)應(yīng)用服務(wù)和Mysql數(shù)據(jù)庫的高可用,提升數(shù)據(jù)安全性,提升系統(tǒng)穩(wěn)定性和防災(zāi)能力。
Nginx實現(xiàn)應(yīng)用服務(wù)
Nginx在服務(wù)器集群中起到一個代理服務(wù)器的角色(即反向代理),避免單*個服務(wù)器壓力過大,將來客戶端請求轉(zhuǎn)發(fā)給不同的服務(wù)器;并通過IP_HASH負載均衡策略負載均衡器按照基于客戶端IP的分配方式,確保相同的客戶端的請求一直發(fā)送到相同的服務(wù)器,以保證session會話完整不丟失。
MHA實現(xiàn)Mysql數(shù)據(jù)庫高可用
MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案。由兩部分組成:MHA Manager(管理節(jié)點)和MHA Node(數(shù)據(jù)節(jié)點)。MHA Manager會定時探測集群中的master節(jié)點,當(dāng)master出現(xiàn)故障時,它可以自動將數(shù)據(jù)的slave提升為新的master,然后將所有其他的slave重新指向新的master。MHA能做到在0~30秒之內(nèi)自動完成數(shù)據(jù)庫的故障切換操作,并且能在上保證數(shù)據(jù)的一致性,以達到真正高可用。
整體架構(gòu)圖
--------------------------
MHA實現(xiàn)Mysql數(shù)據(jù)庫高可用
-----------------------------------------
Mysql-Master開啟Binary Log二進制日志。
Mysql-Master在每個事務(wù)更新數(shù)據(jù)完成之前,將事務(wù)寫入二進制日志。且在事務(wù)寫入二進制日志完成后,Mysql-Master通知存儲引擎提交事務(wù)。
Mysql-Slave復(fù)制Mysql-Master的Binary Log日期,并完成數(shù)據(jù)一致性處理
Mysql-Slave開始一個工作線程--I/O線程。并在Mysql-Master上建立連接。
binlog dump process從Mysql-Master的二進制日志中讀取事件。
I/O線程將這些事件寫入中繼日志。
SQL線程從中繼日志讀取事件,并重放其中的事件而更新Mysql-Slave的數(shù)據(jù),使其與Mysql-Master中的數(shù)據(jù)一致。
故障或異常切換流程
------------------------------