keepalived ,egnix ,tomcat 高可用,高并发 应用架构的搭建
keepalived 中需要构建Virtual IP 地址 ,并创建一个nginx check 文件 检测 nginx Server 运行状态 ,如果ngnix 进程不可访问,则kill掉killall keepalived 进程,实现VIP 漂移
ngnix 托管tocmat 服务器地址,因此在tomcat web 服务器上不再需要LVS 功能 即 去掉 lo:A 设备的绑定
本架构共四台机器 :
服务器 A ,IP 192.168.168.101 安装 keepalived ,ngnix ,配置 keepalived(MASTER) ,ngnix(A,B ngnxi 配置要完全相同),不需要lvs
服务器 B ,IP 192.168.168.102 安装 keepalived ,ngnix ,配置 keepalived(BACKUP) ,ngnix(A,B ngnxi 配置要完全相同),不需要lvs
服务器 C,IP 192.168.168.103 安装tomcat ,不需要lvs
服务器 D,IP 192.168.168.104 安装tomcat,不需要lvs
示例 keepalived 配置:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from hello@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script check_nginx {
script "/home/check_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 199
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.239.100/24 dev eth0 label eth0:1
}
track_script {
check_nginx
}
}
====
check_nginx,sh
#!/bin/bash
#
URL="http://192.168.239.30/"
code=`curl -I -m 5 -o /dev/null -s -w %{http_code} $URL`
if [ $code -ne 200 ];then
sleep 2
code=`curl -I -m 5 -o /dev/null -s -w %{http_code} $URL`
if [ $code -ne 200 ];then
killall keepalived
fi
fi
====
示例 ngnix 配置: