(1)问题
nginx宕机的情况下,仍提供服务。
(2)高可用
(2-1)主从机器
master主,nginx1的IP192.168.0.83
slave备,nginx2的IP192.168.0.160
(2-2)tomcat1和tomcat2
当master死了,就使用slave完成请求。
主备都需要keepalived软件
虚拟IP
(3)准备工作
(3-1)需要两台服务器192.168.0.83和192.168.0.160
192.168.0.83 myuse1
192.168.0.160 myuse2
(3-2)需要两台服务器都安装nginx
nginx默认侦听端口是80
windows中浏览器输入192.168.0.83或192.168.0.160均可以访问到
(3-3)需要两台服务器都安装keepalived。
#yum -y install keepalived
#rpm -qa keepalived查看有没有安装成功
#cd /etc/keepalived/配置文件在此目录中
keepalived.conf后面更改这个文件即可
(3-4)改主配置文件
添加检查脚本
nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [$A -eq 0];then
/usr/sbin/nginx
sleep 2
if [`ps -C nginx --no-header | wc -l` -eq 0];then
killall keepalived
fi
fi
keepalived.conf_master
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.0.83
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/root/nginx_check.sh"
interval 2 #检测脚本执行的间隔
weight 2
}
vrrp_instance VI_1 {
state MASTER # 备份服务器上将MASTER改为BACKUP
interface enp0s3 #网卡
virtual_router_id 51 #主、备机的virtual_router_id必须相同
priority 100 #主、备机取不同的优先级,主机值比较大,备机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.10 #VRRP虚拟地址
}
}
(3-5)改备配置文件
添加检查脚本
nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [$A -eq 0];then
/usr/sbin/nginx
sleep 2
if [`ps -C nginx --no-header | wc -l` -eq 0];then
killall keepalived
fi
fi
keepalived.conf_backup
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.0.83
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/root/nginx_check.sh"
interval 2 #检测脚本执行的间隔
weight 2
}
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将MASTER改为BACKUP
interface enp0s3 #网卡
virtual_router_id 51 #主、备机的virtual_router_id必须相同
priority 90 #主、备机取不同的优先级,主机值比较大,备机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.10 #VRRP虚拟地址
}
}
(4)主备都启动nginx和keepalived
#systemctl start nginx
#systemctl start keepalived
#ps -ef | grep nginx
#ps -ef | grep keepalived
(5)测试
(5-1)浏览器中输入虚拟IP:192.168.0.10
可以访问
主服务器中看到虚拟IP的绑定
#ip a
inet 192.168.0.10/32 scope global enp0s3
valid_lft forever preferred_lft forever
(5-2)关闭主服务器中的keepalived和nginx服务
#systemctl stop keepalived
#systemctl stop nginx
浏览器中输入虚拟IP:192.168.0.10
仍然可以访问
备份服务器中看到虚拟IP的绑定
#ip a
inet 192.168.0.10/32 scope global enp0s3
valid_lft forever preferred_lft forever