使用keepalived监控tomcat 达到双机热备
使用keepalived監(jiān)控tomcat 達(dá)到雙機(jī)熱備
通常說的雙機(jī)熱備是指兩臺(tái)機(jī)器都在運(yùn)行,但并不是兩臺(tái)機(jī)器都同時(shí)在提供服務(wù)。
當(dāng)提供服務(wù)的一臺(tái)出現(xiàn)故障的時(shí)候,另外一臺(tái)會(huì)馬上自動(dòng)接管并且提供服務(wù),而且切換的時(shí)間非常短。下面來以keepalived結(jié)合tomcat來實(shí)現(xiàn)一個(gè)web服務(wù)器的雙機(jī)熱備。
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虛擬路由冗余協(xié)議。在VRRP中有兩組重要的概念:VRRP路由器和虛擬路由器,主控路由器和備份路由器。
VRRP路由器是指運(yùn)行VRRP的路由器,是物理實(shí)體,虛擬路由器是指VRRP協(xié)議創(chuàng)建的,是邏輯概念。一組VRRP路由器協(xié)同工作,共同構(gòu)成一臺(tái)虛擬路由器。 Vrrp中存在著一種選舉機(jī)制,用以選出提供服務(wù)的路由即主控路由,其他的則成了備份路由。當(dāng)主控路由失效后,備份路由中會(huì)重新選舉出一個(gè)主控路由,來繼續(xù)工作,來保障不間斷服務(wù)。
我們在本文中的測試環(huán)境如下:
兩臺(tái)物理服務(wù)器和一個(gè)虛擬服務(wù)器(vip):
master:192.168.248.128
backup: 192.168.248.129
vip: 192.168.248.200 (虛擬ip)
測試環(huán)境的網(wǎng)絡(luò)圖如下:
在NodeA和NodeB分別部署tomcat并啟動(dòng),然后安裝keepalived幫助我們監(jiān)控tomcat,我們通過vip:192.168.248.200可以訪問到tomcat,這時(shí)候訪問的其實(shí)是NodeA上的tomcat,我們?nèi)绻P(guān)閉NodeA上面的tomcat,這時(shí)候NodeB會(huì)自動(dòng)幫助我們接管,這樣我們的服務(wù)依舊可以運(yùn)行,下面我們來安裝keepalived。
1
2
3keepalived推薦使用yum安裝,源碼安裝之后的配置挺復(fù)雜的
yum install keepalived
安裝完成后需要配置keepalived的配置文件,文件位于/etc/keepalived/keepalived.conf,下圖中為需要修改的部分,默認(rèn)的配置文件中在其后還有很多內(nèi)容,本實(shí)例只是簡單的DEMO,所以那些內(nèi)容暫時(shí)用不上,可以全部刪除,接下來說下圖中這部分的配置
● state 主服務(wù)器為MASTER,其他服務(wù)器均為BACKUP
● interface 通信用的網(wǎng)卡,在之前查看IP時(shí)可以看到
● virtual_router_id 主從服務(wù)器此ID必須一致
● priority 優(yōu)先級(jí),主服務(wù)器必須大于其他服務(wù)器,數(shù)值越大優(yōu)先級(jí)越高
● authentication 主從服務(wù)器必須一致
● virtual_ipaddress 虛擬IP地址,主從服務(wù)器必須一致,此IP為客戶端訪問時(shí)使用的IP
NodeA的keepalived.conf配置如下
! Configuration File for keepalived
global_defs {
notification_email {br/>zhouxiao@example.com
itsection@example.com
}
notification_email_from itsection@example.com
smtp_server mail.example.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_tomcat {
#script "killall -0 nginx"
script "/etc/keepalived/tomcat_check.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
mcast_src_ip 192.168.248.128
virtual_router_id 51
priority 101
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.248.200
}
track_script {
chk_tomcat
}
}
NodeB同樣使用 # yum install keepalived 安裝
配置文件如下
! Configuration File for keepalived
global_defs {
notification_email {br/>zhouxiao@example.com
itsection@example.com
}
notification_email_from itsection@example.com
smtp_server mail.example.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_tomcat {
#script "killall -0 nginx"
script "/etc/keepalived/tomcat_check.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
mcast_src_ip 192.168.248.129
virtual_router_id 51
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.248.200
}
track_script {
chk_tomcat
}
}
這兩個(gè)配置文件不同的地方就是state 表示一個(gè)是主機(jī)一個(gè)是備機(jī),mcast_src_ip 寫上當(dāng)前服務(wù)器的ip,priority 主機(jī)要比備機(jī)的要高,更多的配置說明,可以在網(wǎng)上搜索更多的資料
接下來就是NodeA 和 NodeB都用到的檢測tomcat是否運(yùn)行的腳本tomcat_check.sh
#!/bin/bash
JAVA_PROCESS=ps -C java --no-heading| wc -l
if [ $JAVA_PROCESS -eq 0 ];then
echo "tomcat is stop"
sleep 2
if [ ps -C java --no-heading| wc -l -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
關(guān)閉兩臺(tái)服務(wù)器的防火墻
這個(gè)腳本的意思就是檢測是否有tomcat在運(yùn)行,如果沒有的話,就把keepalived給停止掉,這樣vip就能從主機(jī)master切換到備機(jī)BACKUP上了。把這個(gè)文件分別放入兩臺(tái)機(jī)器的/etc/keepalived文件夾內(nèi),然后#cd /etc/keepalived 進(jìn)入到該文件夾內(nèi),輸入# chmod 777 tomcat_check.sh 為這個(gè)腳本添加可以執(zhí)行的命令
我們可以使用 #./tomcat_check.sh 看看這個(gè)腳本能否執(zhí)行,如果腳本報(bào)錯(cuò)了,可能是文本的編碼問題,可以點(diǎn)擊這里解決。
這樣就全部配置完了。然后我們分別開啟兩臺(tái)機(jī)器上的tomcat以及keepalived
service keepalived restart
在NodeA 我們輸入 # ip addr
我們可以看到在 eth0這個(gè)網(wǎng)卡上綁定了我們的vip 192.168.248.200,
這時(shí)候,我們分別訪問http://192.168.248.128:8080/ http://192.168.248.200:8080/ http://192.168.248.129:8080/
這時(shí)候,我們停掉主機(jī)128上的tomcat,依次訪問上面的三個(gè)網(wǎng)址,可以發(fā)現(xiàn):
在NodeB 129服務(wù)器上,我們輸入# ip addr
vip切換到備份機(jī)器上來了,這時(shí)候說明我們使用keepalived監(jiān)控tomcat成功了,如果NodeA上的tomcat突然停掉,NodeB上的tomcat就會(huì)即可接管服務(wù)
轉(zhuǎn)載于:https://blog.51cto.com/2968817/2117497
總結(jié)
以上是生活随笔為你收集整理的使用keepalived监控tomcat 达到双机热备的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐系统-07-lambda架构
- 下一篇: 2.4 编写第一个自动化脚本