CentOS 7.4上透過keepalive實現Tomcat高可用
在本篇文章中,你將找到如何在CentOS7.4上透過Keepalive實現Tomcat 7的高可用。文章將以例項的形式來闡述,包括架構的搭建,軟體的配置,實現的方法都體現出來,力求詳盡。這對加強重要應用服務的高可用及安全具有一定的參考價值。
1. 專案背景介紹
作為企業內部IT服務部門,為使用者提供穩定,高效,安全的服務是我們的一貫宗旨。IT運維管理尤其重要,其對使用者最直接的效用在於提升IT系統的服務能力,服務中斷時間減少了,可用性提高了,那麼使用者基於IT系統的業務流才會更加順暢。為此,選擇適當的IT運維管理軟體可以保持服務的高度可用性。
2. 架構介紹
本章主要簡述針對當前部門系統應用服務的特點,提供行之有效的架構。
架構圖:
說明:
1. 節點Node A作為雙機熱備環境中的主節點,節點Node B擔任副節點的角色。當主節點出現故障時,副節點會自動接管主節點的角色保障應用的正常執行。
2. 節點NFS用於儲存Tomcat的資料
3. 192.168.1.210是提供給應用服務的虛擬地址,使用者訪問應用服務透過此虛擬地址來實現,而不是訪問節點Node A和Node B的系統地址。
3. Keepalive介紹
Keepalived主要功能是用來防止單點故障(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)的發生,從而實現高可用性和熱備。它誕生之初的目的是能夠自主呼叫ipvsadm來生成規則,並且能夠自動實現將使用者訪問的地址轉移到其他節點上進行實現的。Keepalived:核心包含一個core模組和兩個checkers和VRRP協議。Core模組為keepalived的核心,負責主程式的啟動、維護以及全域性配置檔案的載入和解析。checkers:檢查服務檢查reserved的健康狀況的,基於指令碼也可檢查服務本身的健康狀況。這裡是實現ipvs後端健康狀況的檢測的。VRRP (Virtual Router Redundancy Protocol,即虛擬路由冗餘協議):是一種容錯協議,它保證當主機的下一跳路由器出現故障時,由另一臺路由器來代替出現故障的路由器進行工作,從而保持網路通訊的連續性和可靠性。VRRP中每個節點之間都有優先順序的一般為0-255(0,255有特殊用法)數字越大優先順序越高。keepalived是以VRRP協議為實現基礎的,即將N臺提供相同功能的路由器組成一個路由器組,這個組裡面有一個master節點和多個backup節點。Master節點上面有一個對外提供服務的vip(該路由器所在區域網內其他機器的預設路由為該vip),master會發組播,當 backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先順序來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
4. 方案驗證
本章將詳述整套環境從硬體到軟體的搭建過程,讓讀者更加直觀深刻的瞭解Keepalive的配置及工作原理。
硬體環境規劃:
選擇三臺聯想xSeries 3650 M4 並按照表格所示初始化:
說明:1. xSeries 3650 M4伺服器效能和穩定性符合專案的基本需求
2. IMM (Integrated Management Module) 提供遠端管理
3. 主機板整合的第一塊網路卡Eth0用於配置系統IP地址
4. 主機板整合的第二塊網路卡Eth1用於和NFS連線,配置內網地址即可
系統及軟體環境規劃:
系統,軟體和網路的詳細資訊如表格所示:
搭建:
1. 在Node A,Node B和NFS節點上均選擇mini方式安裝CentOS 7.4 64-bit,並按照規劃配置IP地址。
2. 在節點Node A和Node B的/etc/hosts檔案上新增同樣的內容,如下:
192.168.1.198 NodeA.xx.xxx.com NodeA
10.10.10.11 NodeA.xx.xxx.com NodeA
192.168.1.199 NodeB.xx.xxx.com NodeB
10.10.10.12 NodeB.xx.xxx.com NodeB
3. 在節點Node A和Node B安裝Tomcat 7和Keepalive 1.3.5
#yum install tomcat
#yum install keeplived
4. 將Tomcat 資料的儲存路徑配置在節點NFS上
5. 配置節點Node A上的keeplive
編輯keepalive配置檔案 /etc/keepalived/keepalived.conf 作如下修改:
vrrp_instance VI_1 { state MASTER #設定節點Node A為MASTER角色 interface enp11s0f0 #網路卡 enp11s0f0 配置的是節點Node A 的系統IP地址 virtual_router_id 51 #兩臺系統保證這個數字相同 priority 100 #數字越大等級越高 advert_int 1 authentication { auth_type PASS #vrrp協議,保證兩臺系統設定一致 auth_pass 1111 } virtual_ipaddress { 192.168.1.210/24 #提供給Tomcat應用的虛擬服務地址 }
6. 配置節點Node B上的keeplive
編輯keepalive配置檔案 /etc/keepalived/keepalived.conf 作如下修改:
vrrp_instance VI_1 { state BACKUP #設定節點Node B為BACKUP角色 interface enp11s0f0 #網路卡 enp11s0f0 配置的是節點Node B 的系統IP地址 virtual_router_id 51 #兩臺系統保證這個數字相同 priority 90 #數字比MASTER即可 advert_int 1 authentication { auth_type PASS #vrrp協議,保證兩臺系統設定一致 auth_pass 1111 } virtual_ipaddress { 192.168.1.210/24 #提供給Tomcat應用的虛擬服務地址 }
7. 啟動keepalive
#systemctl start keepalived #systemct enable keepalived #設定開機自啟動
8. 驗證keepalive服務
9. 驗證節點Node A的虛擬網路服務地址
說明:預設情況下,虛擬網路服務地址192.168.1.210和主節點系統IP地址192.168.1.198繫結在相同的網路卡介面表示其執行正常。
10. 驗證節點Node B的網路地址
說明:副節點Node B 沒有看到虛擬網路服務地址且經過主節點的虛擬網路服務地址驗證,表示keepalive服務在雙機熱備環境中已經執行正常。
11. 驗證Tomcat web portal是否正常執行
說明:擁有雙機熱備架構保障的Tomcat服務執行正常
12. 驗證當主節點Node A 的keepalive服務關閉或者當機下,副節點Node B能否接管並保障Tomcat應用不受影響。
A. 檢視副節點Node B的網路地址
說明:虛擬網路服務地址192.168.1.210和副節點系統IP地址192.168.1.199繫結在相同的網路卡介面,表明副節點Node B已經成功接管主節點Node A的職責。
B. 驗證Tomcat web portal是否仍然正常執行
說明:當主節點Node A出現故障後,副節點透過keepalive服務保障了業務 的正常運轉。
5. 經驗總結
透過例項,詳細闡述瞭如何CentOS7.4上透過Keepalive實現Tomcat 7的高可用。同時也證明了此架構能夠給使用者提供穩定,高效,安全的服務,為解決類似的問題提供寶貴的案例,值得推廣。
作者簡介:
谷鐵柏
任職於某大型外資IT企業,擁有豐富的聯想x86伺服器和UNIX伺服器虛擬化,以及IBM儲存管理經驗,現負責客戶專案實施與服務管理。
麥福龍
任職於某大型外資IT企業,擁有豐富的聯想x86伺服器和IBM Power伺服器虛擬化,以及IBM儲存管理經驗,現負責Power系統技術支援。
原文作者:谷鐵柏,麥福龍;連結:http://blog.itpub.net/31545816/viewspace-2217097/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql + keepalive高可用搭建MySql
- 高可用之KeepAlive工作原理
- LVS+Keepalive 實現負載均衡高可用叢集負載
- 在 RHEL 或 CentOS 上使用 Patroni 部署 PostgreSQL 以實現高可用性CentOSSQL
- CentOS7 實現 Keepalived + Nginx 實現高可用 Web 負載均衡CentOSNginxWeb負載
- keeplied + nginx +tomcat 高可用部署NginxTomcat
- MYSQL5.6主從+keepalive高可用自動切換MySql
- keepalived + nginx 實現高可用Nginx
- nginx實現keepalived高可用Nginx
- 7.4 透過API列舉程式許可權API
- 【Mysql】高可用架構之-Lvs+keepalive+Altas+MHAMySql架構
- keepalived+MySQL實現高可用MySql
- Nginx&Keepalived 實現高可用Nginx
- Keepalived實現服務高可用
- 7. Nginx實現高可用配置Nginx
- Redis Sentinel 高可用實現說明Redis
- 利用Keepalived實現MySQL高可用MySql
- Linux下"負載均衡+高可用"叢集的考慮點 以及 高可用方案說明(Keepalive/Heartbeat)Linux負載
- CentOS 7下搭建高可用叢集CentOS
- CentOS 7 下搭建高可用叢集CentOS
- CentOS7.4 部署 DockerCentOSDocker
- 使用keepalived實現nginx的高可用Nginx
- MySQL 實現高可用架構之 MHAMySql架構
- 如何設計和實現高可用MySQLMySql
- MHA高可用架構的實現方式架構
- Apache Kyuubi 高可用的雲原生實現Apache
- MySQL 資料高可用的實現思路MySql
- MMM實現mysql高可用性薦MySql
- 透過ASM 反射實現IOCASM反射
- 實現高可用的兩種方案與實戰
- POSTGRESQL10.3原始碼安裝主從搭建 pgpoolii + keepalive 高可用(未成功,實驗中)SQL原始碼
- centos 7.4 新增新網路卡CentOS
- PowerJob 的自實現高可用方案,妙妙妙!
- Keepalived實現Nginx負載均衡高可用Nginx負載
- 如何設計和實現高可用的MySQLMySql
- Keepalived雙機熱備實現高可用
- 11、redis使用ruby實現叢集高可用Redis
- Nginx 和 Keepalived 實現站點高可用Nginx