简介
假设主服务器挂掉之后,会自动切换到备份服务器,而备份服务器也可以将请求转发到不同的tomcat中去,这就是高可用的效果。
主备服务器中需要用到一个软件,名字叫做keepalived,它相当于是一个路由,它里面会通过一个脚本来检测Nginx是否还活着,如果还活着,则进行访问,否则将切换到另一台备份服务器,在这个过程中,它需要对外展示一个虚拟IP,这个IP实际上是不存在的,但是我们需要通过这个IP来进行访问,首先主服务器要绑定这个IP,假设主服务器挂掉之后,keepalived会将虚拟IP绑定到备份服务器,以此实现高可用的效果。
具体实现
-
准备工作
(1) 需要两台服务器
(2) 在两台服务器上安装Nginx
(3) 在两台服务器上安装Keepalived
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpmyum install keepalived -yrpm -q -a keepalived
-
进行主从配置
修改两台服务器上的/etc/keepalived/keepalived.conf
配置文件
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.2.190 # 备机更改为自己的IPsmtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_script chk_http_port {script "/usr/local/src/nginx_check.sh"interval 2 #(检测脚本执行的间隔)weight 2
}vrrp_instance VI_1 {state MASTER // 备份服务器上MASTER改为BACKUPinterface ens33 //网卡virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大100,备份机值较小90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.2.30 // VRRP H 虚拟地址}
}
-
在/usr/local/src
添加脚本nginx_check.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi
-
启动两台服务器的Nginx和Keepalived
./nginx
systemctl start keepalived.service
-
测试
(1)输入虚拟IP访问
(2)停止主服务器的Nginx和Keepalived,再次访问虚拟IP
./nginx -s stop
systemctl stop keepalived.service