Nginx 中怎么实现高可用

发布时间:2021-08-05 16:10:44 作者:Leah
来源:亿速云 阅读:110

这期内容当中小编将会给大家带来有关Nginx 中怎么实现高可用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

高可用:启动两天相同业务服务的系统,一台出现了宕机,另外一台自动接管。如下图:

Nginx 中怎么实现高可用

这里我们使用 Keepalived 实现高可用。

Keepalived 的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

Keepalived 工作原理:通过vrrp协议实现。

Nginx 中怎么实现高可用

一、前期准备

准备两台Nginx服务器,IP分别为:

host1:192.168.56.103
host2:192.168.56.104

两台服务器都需要安装Keepalived,并且配置虚拟IP用于访问。

二、安装 Keepalived

下载安装

yum install keepalived -y
rpm -q -a keepalived
keepalived-1.3.5-19.el7.x86_64

修改配置文件

cd /etc/keepalived
vi keepalived.conf

两台Nginx服务器都需要下载配置keepalived。

host1配置如下:

global_defs {
   notification_email {  # keepalived 服务器宕机异常出现的时候,发送通知邮件,可以配置多个邮箱地址
     acassen@163.com  # 收件人邮箱1
     failover@163.com # 收件人邮箱2
   }
   notification_email_from 2333@163.com # 邮箱发件人
   smtp_server smtp.163.com # 邮箱服务器地址
   smtp_connect_timeout 30 # 超时时间
   router_id LVS_DEVEL # 访问的主机地址
   vrrp_skip_check_adv_addr # 默认不跳过检查
   vrrp_gna_interval 0 # 单位秒,在一个网卡上每组消息之间的延迟时间,默认为 0
}

vrrp_script chk_nginx {
  script "/usr/local/src/nginx_check.sh"  # 检测文件的地址
  interval 2   # 检测脚本执行的间隔
  weight 2   # 权重
}

vrrp_instance VI_1 {
    state MASTER    # 主机MASTER、备机BACKUP    
    interface ens33   # 通信端口,通过 ifconfig 命令可以看到,根据自己的机器配置
    virtual_router_id 51 # 虚拟路由 ID ,主实例和副本实例保持一致
    priority 100  # 访问优先级,主机值较大,备机较小
    advert_int 1 # 心跳间隔,单位秒, keepalived 多机器集群通过心跳检测,如果发送心跳没反应,就立刻接管
    authentication { # 服务器之间的通信密码
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress { # 自定义虚拟 ip ,可以配置多个,每行一个
        192.168.56.105  # 虚拟ip
    }
}

host2配置如下:

global_defs {
   notification_email {  # keepalived 服务器宕机异常出现的时候,发送通知邮件,可以配置多个邮箱地址
     acassen@163.com  # 收件人邮箱1
     failover@163.com # 收件人邮箱2
   }
   notification_email_from 2333@163.com # 邮箱发件人
   smtp_server smtp.163.com # 邮箱服务器地址
   smtp_connect_timeout 30 # 超时时间
   router_id LVS_DEVEL # 访问的主机地址
   vrrp_skip_check_adv_addr # 默认不跳过检查
   vrrp_gna_interval 0 # 单位秒,在一个网卡上每组消息之间的延迟时间,默认为 0
}

vrrp_script chk_nginx {
  script "/usr/local/src/nginx_check.sh"  # 检测文件的地址
  interval 2   # 检测脚本执行的间隔
  weight 2   # 权重
}

vrrp_instance VI_1 {
    state BACKUP    # 主机MASTER、备机BACKUP    
    interface ens33   # 通信端口,通过 ifconfig 命令可以看到,根据自己的机器配置
    virtual_router_id 51 # 虚拟路由 ID ,主实例和副本实例保持一致
    priority 90  # 访问优先级,主机值较大,备机较小
    advert_int 1 # 心跳间隔,单位秒, keepalived 多机器集群通过心跳检测,如果发送心跳没反应,就立刻接管
    authentication { # 服务器之间的通信密码
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress { # 自定义虚拟 ip ,可以配置多个,每行一个
        192.168.56.105  # 虚拟ip
    }
}

我们分别启动 keepalived。

systemctl start keepalived.service

分别查看nginx 和 keepalived 是否启动。 

// 查看 nginx 是否成功启动
ps -ef | grep nginx

// 查看 keepalived 是否成功启动
ps -ef | grep keepalived

三、测试

配置信息如下

主服务器:192.168.56.103

从服务器:192.168.56.104

虚拟 IP:192.168.56.105

1、浏览器访问:192.168.56.105

2、关闭主机 192.168.56.103 上的 Nginx 和 Keepalived,再次访问虚拟IP,发现可以正常访问,并且访问的是从机。

上述就是小编为大家分享的Nginx 中怎么实现高可用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. nginx规范
  2. 深入浅出Nginx

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nginx

上一篇:VSCode 中 GitLens插件的作用是什么

下一篇:如何解决某些HTML字符打不出来的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》