1.安装keepalived、nginx
yum install keepalived –y
//centos默认无nginx源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
2.修改keepalived配置文件(/etc/keepalived/keepalived.conf)
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id BACKUP # 主机标识
vrrp_skip_check_adv_addr
# vrrp_strict # 一定要注释掉
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/etc/keepalived/chk_nginx.sh" # 检测脚本
interval 2 # 执行脚本间隔 2s
weight -30 # 本服务器宕机后权重减少 -30
}
vrrp_instance VI_1 {
state BACKUP # MASTER主服务器,BACKUP备份服务器
interface ens33 #网卡
virtual_router_id 51 # 虚拟路由ID,主备必须一致
priority 80 # 优先级,即权重,主比备要高
advert_int 1 # 服务器心跳 1s 检测一次
authentication {
auth_type PASS # 认证方式 主备需一致
auth_pass 1111 # 认证密码 主备需一致
}
virtual_ipaddress {
192.168.72.155 # 虚拟地址,可以多个
}
}
3.nginx检测脚本
#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then
# 以下两行暂时先注掉,防止测试时,手动关闭nginx后,脚本又自动启动nginx
# /usr/sbin/nginx
# sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
# 修改脚本权限
chmod 777 nginx_check.sh
4.重启keepalivee、nginx
service nginx restart
service keepalived restart
5.查看虚地址是否绑定成功
ip a
6.测试
断开主节点,看是能飘逸到备节点上
实际运用
原因:Nginx+Tomcat实现负载均衡我们已经能通过Nginx来实现Tomcat应用的负载均衡,但是单个的Nginx会存在单点隐患,如果Nginx挂掉,那么全部的Tomcat应用都将变得不可用,所以实现Nginx的高可用是必不可少的一步。
云环境的运用
1.申请虚拟IP
阿里云和腾讯云的 HAVIP是可以实现的,不清楚天翼云的VIP能不能实现该功能
2.将EIP绑定到虚拟IP,或者过防火墙用防火墙的公网IP
注意不要去绑定某一台主机