扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这期内容当中小编将会给大家带来有关Nginx 中怎么实现高可用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
10年积累的成都网站设计、成都网站建设、外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站后付款的网站建设流程,更有范县免费网站建设让你可以放心的选择与我们合作。
高可用:启动两天相同业务服务的系统,一台出现了宕机,另外一台自动接管。如下图:
这里我们使用 Keepalived 实现高可用。
Keepalived 的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
Keepalived 工作原理:通过vrrp协议实现。
一、前期准备
准备两台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 中怎么实现高可用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流