高可用集群架構的演進

2022-04-11 20:37:08 字數 1285 閱讀 7465

我們專案組是做企業資料匯流排的,一開始的架構是採用apache httpd + mod_jk 做負載均衡,應用則部署在tomcat集群上面,該架構方案雖然考慮了tomcat容器級別的高可用,但並未考慮httpd的高可用,該方案的拓撲圖如下:

該方案的缺點顯而易見,一旦httpd宕機,使用者將無法訪問應用,考慮到系統的高可用性,我把架構改變成如下拓撲圖:

在新的架構中,我們決定使用mod_cluster來代替mod_jk, 因為mod_cluster有反向註冊功能,也就是說當我需要新增或刪除tomcat節點的時候,我只需要在tomcat端做配置,不需要到httpd端做配置,這樣很好地保證了tomcat節點的動態橫向擴充套件性。新架構中多了一台備用httpd伺服器,並且主備httpd伺服器由keepalived來做集群管理,備用httpd是熱備方案,一旦主httpd宕機,備用httpd立即公升級為主httpd接受使用者請求。

該架構實現了3個級別的高可用:

1. httpd負載均衡器的高可用。

2. tomcat容器的高可用。

3. session級別的高可用(使用tomcat的來達到這一點,本質上是各tomcat節點間session複製)。

這個架構的乙個不足之處是session共享方面的高可用暫未實現,由以上拓撲圖可知,該方案採用的session複製方案,而session複製方案在多tomcat節點的時候會引起廣播風暴從而影響效能,而且本質上來說session複製方案也無法跨虛擬機器複製,各個虛擬機器之間的tomcat session依然不是高可用的,而要達到這一點則必須使用memcached或redis來做分布式session共享,這是下一步要做的。

在效能測試階段我們發現了乙個問題,當loadrunner的虛擬使用者達到100以上之後,系統的響應時間明顯變長而且吞吐量下降很嚴重,仔細檢視6個tomcat節點的日誌發現真正負載的只有一台機器且日誌中包含連線不上mod_cluster的錯誤,其他5台則完全沒有反應,但是其他5臺的配置跟那台正常的tomcat的配置是一樣的,最後歸結為jboss的mod_cluster元件不穩定,決定放棄mod_cluster,也就是放棄tomcat集群的動態橫向擴充套件這一特性,轉而使用apache原生mod_jk元件來管理tomcat集群,使用mod_jk元件之後,即使loadrunner上500虛擬使用者的併發量,依然能夠保證響應時間在100毫秒內並達到了2m每秒的吞吐量,tomcat日誌中的錯誤也消失了。

linux集群架構 keepalived高可用

1.什麼是高可用,為什麼要設計高可用?兩台機器啟動著相同的業務系統時,當有一台宕機,另外一台伺服器能快速的接管,對於訪問的使用者是減少系統不能提供服務的時間 2.高可用使用什麼工具來實現?硬體還是軟體?軟體 keepalived 3.keepalived如何實現高可用?通過vrrp協議實現,虛擬路由...

mysql集群高可用架構

前言 高可用架構對於網際網路服務基本是標配,無論是應用服務還是資料庫服務都需要做到高可用。對於乙個系統而言,可能包含很多模組,比如前端應用,快取,資料庫,搜尋,訊息佇列等,每個模組都需要做到高可用,才能保證整個系統的高可用。對於資料庫服務而言,高可用可能更複雜,對使用者的服務可用,不僅僅是能訪問,還...

Mycat集群架構

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