假期平臺子系統高可用方案
假期平臺子系統高可用方案
近期,本人給公司寫了個方案,大家也幫我一起來探討一下這個方案吧。
一、 方案背景
假期平臺子系統:
在北京和海口各部署一套tomcat和MySQL,並且資料時時同步。以北京地區為生產主系統,海口只做備份用。當北京伺服器發生故障後,可以自動將應用切換到海口的備機。
考慮到MySQL資料庫是異地時時同步,網路因素和業務訪問量不可控,所以可能會出現在北京資料庫上寫資料後,不一定能在海口資料庫上及時檢視到資料,所以海口庫只做備份,不做查詢使用。
另外,由於北京和海口沒有對方的路由表,所以不能使用浮動ip的方式實現故障自動切換(因為海口伺服器不能繫結北京的ip地址使用)。
二、拓撲圖
三、方案說明
1、前端用Apache做轉發。兩個Apache伺服器之間透過keepalive做高可用,當一個Apache當機後,可以自動切換到另外一個Apache機器上;
2、tomcat A和tomcat B 之間透過rsync進行檔案同步,當管理員在tomcat A伺服器更新檔案後,系統會自動將更新檔案同步到tomcat B伺服器;
3、兩個MySQL資料庫做成AB主主複製方式,平時用北京的MySQL進行讀寫,海口只做備份。
4、在北京的tomcat A伺服器上每隔一分鐘執行如下監控指令碼:
[root@dg ~]# crontab -l
*/1 * * * * /bin/sh /root/monitor_mysql.sh
[root@dg ~]# cat /root/monitor_mysql.sh
#!/bin/bash
num=0
for ((i=1;i<=5;i++))
do
mysql -h10.72.16.228 -uroot -pqwe.123 -e "select host from mysql.user limit 1" > /tmp/a.txt
value=`grep host /tmp/a.txt`
if [ -z $value ];then
let num++
echo $num > /tmp/b.txt
fi
sleep 10
done
#在使用本指令碼的時候,下面if語句的部分,可以改成當北京資料庫A不可用的時候,修改tomcat A資料庫連線檔案,將DB指向海口資料庫。
if [ $num -eq 5 ];then
echo `date +'%Y-%m-%d %H:%M:%S'` 10.72.16.228的 mysql 狀態是:stop >> /tmp/result.txt
else
echo `date +'%Y-%m-%d %H:%M:%S'` 10.72.16.228的 mysql 狀態是: start >> /tmp/result.txt
fi
注:上面指令碼的作用,是在北京tomcat A伺服器上每隔10秒,自動登入一下北京的MySQL A,當有連續5次登入失敗後,可以判定MySQL A已經不可用,這時候tomcat A就把自己的tomcat服務關掉,然後將資料庫連線地址指向海口的DB,最後再開啟自己的tomcat A服務。這樣就實現了當MySQL資料庫當機後,可以自動切換到海口備庫,而不需要人工干預。
5、如果北京的tomcat A伺服器當機後怎麼辦?
我們可以仿照上面第四條的方式,即也可以在Apache A上執行上述指令碼,如果發現tomcat A不可用的話,就自動將Apache A的連線指向海口的tomcat B(平時Apache A是指向北京的tomcat A的)。
6、如果北京的Apache A當機後怎麼辦?
因為在北京對Apache A 和Apache B做了HA(透過keepalived方式),可以自動切換到備機。
以上是假期平臺子系統的高可用方案,有問題大家一起討論。
附件列表
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-1468893/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 高可用Hadoop平臺-探索Hadoop
- 高可用Hadoop平臺-實戰Hadoop
- 高可用Hadoop平臺-啟航Hadoop
- 配置高可用的Hadoop平臺Hadoop
- 高可用Hadoop平臺-答疑篇Hadoop
- 高可用Hadoop平臺-整合Hive HAProxyHadoopHive
- 高可用Hadoop平臺-Hue In HadoopHadoop
- 家居建材行業電子採購平臺系統解決方案行業
- 主機系統高可用
- Oracle RAC & Data Guard搭建高可用資料庫系統方案Oracle資料庫
- 高可用Hadoop平臺-執行MapReduce程式Hadoop
- 高可用Hadoop平臺-Ganglia安裝部署Hadoop
- 高可用Hadoop平臺-應用JAR部署HadoopJAR
- 高可用Hadoop平臺-HBase叢集搭建Hadoop
- 高可用Hadoop平臺-Oozie工作流Hadoop
- 搭建高併發、高可用的系統
- 高可用Hadoop平臺-實戰尾聲篇Hadoop
- 微服務高可用方案微服務
- 高可用解決方案
- MySQL MHA高可用方案MySql
- 理解redis高可用方案Redis
- MySQL MMM高可用方案MySql
- Quartz排程系統入門和排程高可用實現方案quartz
- 高可用訂單系統設計
- 【轉】如何建設高可用系統
- 關於系統高可用的思考
- 構建高併發高可用的電商平臺架構實踐架構
- 高效能、高可用平臺架構演變史架構
- 容器化redis高可用方案Redis
- MySQL高可用方案介紹MySql
- Mysql高可用架構方案MySql架構
- 高可用系列文章之三 - NGINX 高可用實施方案Nginx
- OpenStack的高可用系統構建(1)
- OpenStack的高可用系統構建(2)
- 高可用Hadoop平臺-Flume NG實戰圖解篇Hadoop圖解
- 電子採購系統,一站式電子採購平臺
- 電子電氣研發平臺解決方案
- 家電跨境電子商務平臺解決方案