这期内容当中小编将会给大家带来有关Nginx 中怎么实现高可用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
高可用:启动两天相同业务服务的系统,一台出现了宕机,另外一台自动接管。如下图:
这里我们使用 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 中怎么实现高可用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/piaoxianren/blog/5012966