使用keepalived监控tomcat 达到双机热备
使用keepalived監控tomcat 達到雙機熱備
通常說的雙機熱備是指兩臺機器都在運行,但并不是兩臺機器都同時在提供服務。
當提供服務的一臺出現故障的時候,另外一臺會馬上自動接管并且提供服務,而且切換的時間非常短。下面來以keepalived結合tomcat來實現一個web服務器的雙機熱備。
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虛擬路由冗余協議。在VRRP中有兩組重要的概念:VRRP路由器和虛擬路由器,主控路由器和備份路由器。
VRRP路由器是指運行VRRP的路由器,是物理實體,虛擬路由器是指VRRP協議創建的,是邏輯概念。一組VRRP路由器協同工作,共同構成一臺虛擬路由器。 Vrrp中存在著一種選舉機制,用以選出提供服務的路由即主控路由,其他的則成了備份路由。當主控路由失效后,備份路由中會重新選舉出一個主控路由,來繼續工作,來保障不間斷服務。
我們在本文中的測試環境如下:
兩臺物理服務器和一個虛擬服務器(vip):
master:192.168.248.128
backup: 192.168.248.129
vip: 192.168.248.200 (虛擬ip)
測試環境的網絡圖如下:
在NodeA和NodeB分別部署tomcat并啟動,然后安裝keepalived幫助我們監控tomcat,我們通過vip:192.168.248.200可以訪問到tomcat,這時候訪問的其實是NodeA上的tomcat,我們如果關閉NodeA上面的tomcat,這時候NodeB會自動幫助我們接管,這樣我們的服務依舊可以運行,下面我們來安裝keepalived。
1
2
3keepalived推薦使用yum安裝,源碼安裝之后的配置挺復雜的
yum install keepalived
安裝完成后需要配置keepalived的配置文件,文件位于/etc/keepalived/keepalived.conf,下圖中為需要修改的部分,默認的配置文件中在其后還有很多內容,本實例只是簡單的DEMO,所以那些內容暫時用不上,可以全部刪除,接下來說下圖中這部分的配置
● state 主服務器為MASTER,其他服務器均為BACKUP
● interface 通信用的網卡,在之前查看IP時可以看到
● virtual_router_id 主從服務器此ID必須一致
● priority 優先級,主服務器必須大于其他服務器,數值越大優先級越高
● authentication 主從服務器必須一致
● virtual_ipaddress 虛擬IP地址,主從服務器必須一致,此IP為客戶端訪問時使用的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
}
}
這兩個配置文件不同的地方就是state 表示一個是主機一個是備機,mcast_src_ip 寫上當前服務器的ip,priority 主機要比備機的要高,更多的配置說明,可以在網上搜索更多的資料
接下來就是NodeA 和 NodeB都用到的檢測tomcat是否運行的腳本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
關閉兩臺服務器的防火墻
這個腳本的意思就是檢測是否有tomcat在運行,如果沒有的話,就把keepalived給停止掉,這樣vip就能從主機master切換到備機BACKUP上了。把這個文件分別放入兩臺機器的/etc/keepalived文件夾內,然后#cd /etc/keepalived 進入到該文件夾內,輸入# chmod 777 tomcat_check.sh 為這個腳本添加可以執行的命令
我們可以使用 #./tomcat_check.sh 看看這個腳本能否執行,如果腳本報錯了,可能是文本的編碼問題,可以點擊這里解決。
這樣就全部配置完了。然后我們分別開啟兩臺機器上的tomcat以及keepalived
service keepalived restart
在NodeA 我們輸入 # ip addr
我們可以看到在 eth0這個網卡上綁定了我們的vip 192.168.248.200,
這時候,我們分別訪問http://192.168.248.128:8080/ http://192.168.248.200:8080/ http://192.168.248.129:8080/
這時候,我們停掉主機128上的tomcat,依次訪問上面的三個網址,可以發現:
在NodeB 129服務器上,我們輸入# ip addr
vip切換到備份機器上來了,這時候說明我們使用keepalived監控tomcat成功了,如果NodeA上的tomcat突然停掉,NodeB上的tomcat就會即可接管服務
轉載于:https://blog.51cto.com/2968817/2117497
總結
以上是生活随笔為你收集整理的使用keepalived监控tomcat 达到双机热备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐系统-07-lambda架构
- 下一篇: 2.4 编写第一个自动化脚本