keepalived,nginx作HA

一,准备工做
1:准备2台机器,分别安装上Java、Tomcat、Nginx、Ipvs和Keepalived
2:规划:
(1)虚拟ip用192.168.1.77
(2)Master机器的ip:192.168.1.106 , Nginx端口80,Tomcat端口8080
(3)Backup机器的ip:192.168.1.201 ,Nginx端口80,Tomcat端口8080
n 配置Nginx,Nginx对两台机器的Tomcat作负载均衡
n 配置Keepalived
1:master配置,示例以下:
global_defs {
notification_email { cc@cc.com }
notification_email_from cc@cc.com
smtp_server smtp.cc.com
smtp_connect_timeout 30
router_id nginx_master
}nginx

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.77
}
}
2:Backup的配置,示例以下:
global_defs {
notification_email { cc@cc.com }
notification_email_from cc@cc.com
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id cc_backeup
}shell

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.77
}
}
3:运行后能够经过以下命令查看
watch ipvsadm -lc:查看IPVS的链接状况
也可用以下命令查看:ipvsadm -Lc服务器

让Keepalived监控Nginx的状态
当NginX中止服务的时候可以自动切换,从而实现服务的高可用性。
1:这个就须要shell脚原本处理,示例以下:
NGINX=/usr/common/nginx/sbin/nginx
PORT=80
nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
$NGINX -s stop
$NGINX
sleep 3
nmap localhost -p $PORT | grep "$PORT/tcp open"
[ $? -ne 0 ] && cd /usr/common/keepalived/sbin && pkill keepalived
echo "over"
fi
注意:要对这个脚本文件设置权限,如:chmod 777 checkNginx.sh负载均衡

2:而后在keepalived.conf中添加对对脚本的调用
(1)在VRRP服务器配置前,增长:
vrrp_script chk_http_port {
script "/usr/common/keepalived/etc/keepalived/checkNginx.sh"
interval 2
weight 2
}
(2)在vrrp_instance配置里面的最后部分,添加:
track_script {
chk_http_port
}tcp

Keepalived用作HA
Keepalived用作HA的时候,和具体的应用或服务是没有关系的,相似于前
面学习的Keepalived+Nginx,一样能够实现:
1:Keepalived + Varnish
2:Keepalived + Tomcat
3:Keepalived + Redis
4:Keepalived + MySql
5:Keepalived + ……任意的其余服务或应用学习

相关文章
相关标签/搜索