目录
(1)方案规划:
方案规划是:安装2台tomcat服务器,并且每一个tomcat上都有一个keepalived,通过keepalived映射的VIP访问tomcat服务器。keepalived通过shell脚本定时检查tomcat健康状态,如果tomcat进程死掉,就立即杀死对应的keepalived并邮件通知管理员。此时备keepalived开始起作用,tomcat服务可正常访问,如此便做到了高可用。示意图如下:
(2)安装tomcat:
在主、备服务器上安装tomcat,注意两个tomcat配置的端口号必须要一致。
(3)安装keepalived:
在主、备服务器上安装keepalived,操作步骤见上述操作。
(4)配置keepalived:
配置文件:/etc/keepalived/keepalived.conf
A、主服务器:
global_defs {
router_id host_192.168.0.141 #唯一标识符
}
vrrp_script checktomcat {
script "/data/shell/tomcat_check.sh" #健康检查脚本
interval 3 #定时3秒执行一次脚本
}
vrrp_instance VI_1 {
state MASTER #主、备角色
interface eth0 #网卡
virtual_router_id 51 #keepalived主、备群唯一符号,必须相同
priority 100 #优先级,主高、备低
nopreempt #非争抢VIP模式
advert_int 1
authentication {
auth_type PASS #keepalived主、备群密码,必须相同
auth_pass 2222 #keepalived主、备群密码,必须相同
}
virtual_ipaddress {
192.168.100.160 #VIP
}
track_script {
checktomcat #vrrp_script名称必须放在VIP下面
}
}
B、备服务器:
global_defs {
router_id host_192.168.0.142
}
vrrp_script checktomcat {
script "/data/shell/tomcat_check.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
192.168.100.160
}
track_script {
checktomcat
}
}
简单来说,就是复制主服务器上keepalived.conf配置文件,然后修改参数:router_id、state、priority,三个参数值即可。
(5)编写tomcat健康检查脚本:
编写脚本检查tomcat是否正常启动运行,如果检测到tomcat停止,那么就将该服务器上的keepalived进行杀死(还可以在此添加发送邮件的功能,keepalived自带的发送邮件只能发送服务器内部邮件,无法发送外部网络邮件),因为keepalived的高可用是体现在keepalived软件上,只有当该软件进程被杀死,VIP才会进行浮动到备用keepalived上。
具体脚本资源见:https://download.csdn.net/download/LSY_CSDN_/12051747,该脚本中只是检查tomcat健康,没有杀死keepalived,下载后只需要在.sh脚本文件中监测到tomcat异常发送邮件的地方添加上:service keepalived stop,命令即可。
(6)启动测试:
首先,将主、备服务器上tomcat先启动好,然后再将keepalived启动好,然后通过浏览器输入VIP+tomcat端口号访问。
将主keepalived上的tomcat服务杀死,此时tomcat健康检查的脚本会发现tomcat进程没有了,就会杀死主keepalived,然后VIP就会浮动到备服务器上,此时浏览器中刷新访问就会访问到备服务器上tomcat。
将主keepalived上的tomcat、keepalived都启动好。如果配置的非抢占VIP模式,那么访问的还是备服务器上tomcat,否则VIP会浮动到主keepalived上,将访问主服务器上tomcat。