尚硅谷nginx教程-7nginx配置示例-配置高可用的集群

1.什么是nginx的高可用?

1.1普通模式的问题

发送一个请求,先到nginx,再由nginx转发到不同的服务器中去。

问题:

  • 1.tomcat宕机,会自动从列表中剔除。
  • 2.nginx宕机,请求就无法实现

1.2高可用

高可用就是nginx宕机了,依然可以正常请求。

2台Nginx服务器,1台主服务器,1台从服务器。主nginx挂掉,就自动切换到从nginx上,让它作为主nginx进行网络访问。
主从服务器需要用keepalived,其类似一个路由,通过一组脚本来检测当前的nginx服务器是否还活着。如果还活着,就进行访问;如果宕机了,就切换到另一台备用的nginx。
虚拟IP:这个IP不存在,但我们是通过这个IP访问。假如虚拟IP是192.168.17.50,现在对外是用192.168.17.50进行访问,而把这个IP绑定到服务器中,类似绑定一个网卡。当keepalived检测到主nginx挂掉之后,把虚拟Ip绑定到备份服务器中。
按照这个过程,就可以实现nginx的高可用效果,这是主-从模式。

2.准备工作

在操作中,需要一个nginx主服务器和nginx备份服务器。另外在主和备里面,都需要keepalived,同时需要一个虚拟IP进行绑定。虚拟IP不是实际存在的,但用它可以进行nginx的访问。

2.1 准备2台nginx服务器

2.2 安装配置keepalived

# 安装keepalived
yum install -y keepalived
# 确认安装成功
rpm -q -a keepalived

keepalived配置文件:/etc/keepalived/

! 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.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL  #通过这个名字能访问到主机,其余用处不大
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
# 相关脚本配置
vrrp_script chk_http_port{
  script "/usr/local/src/nginx_check.sh"
  interval 2  #检测脚本执行的间隔
  weight 2  #权重。当脚本的条件成立,把当前的权重加2;如果值为负数(-20),就减少20。通过修改weight来改变主从服务器
}
# 虚拟IP的配置
vrrp_instance VI_1 {
    state MASTER  #主MATER 从BACKUP
    interface enp0s3  #网卡 通过ifconfig查看
    virtual_router_id 51  #主从机的virtual_router_id必须相同
    priority 100  #主从机取不同的优先级,主机值较大,备份机值较小
    advert_int 1  #心跳时间间隔,用于检测主机或服务器是否还活着,默认1秒。表示每隔多长时间发生一个心跳
    authentication {  #权限校验方式
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress { #通过它就可以完成keepalived的配置
        172.16.1.50
    }
}

从服务器只需要修改虚拟IP的state和priority即可。

需要的脚本/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/nginx
	sleep 2
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
		killall keepalived
	fi
fi

3. 验证

3.1 启动nginx和keepalived

在两台服务器中分别启动nginx和keepalived

./nginx -s stop
./nginx
systemctl start keepalived.service

3.2 查看虚拟IP

启动成功后,进入服务器,可以查看到虚拟IP已经绑定到网卡

ip a

3.3 浏览器验证

1.浏览器输入地址 http://172.16.1.50/ ,能访问到nginx,证明主服务器可用。
2.主服务器停止nginx和keepalived,再次访问 http://172.16.1.50/ ,依然能访问到nginx,证明从服务器可用

# 先停止keepalived
systemctl stop keepalived.service
# 再停止nginx
./nginx -s stop

3.从服务器停止nginx和keepalived,再次访问 http://172.16.1.50/ ,应该访问失败。

posted on 2020-04-11 22:43  singleSpace  阅读(345)  评论(0编辑  收藏  举报