Nginx+Keepalived实现简单的服务高可用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Nginx+Keepalived实现简单的服务高可用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3622字,纯文字阅读大概需要6分钟。
内容图文
![Nginx+Keepalived实现简单的服务高可用](/upload/InfoBanner/zyjiaocheng/926/222e4174caec4c0390f8a661afedc47b.jpg)
Nginx+Keepalived实现简单的服务高可用
?一般情况下,如果我们做小型项目,前端用一个nginx做反向代理即可,大概是这样的
?
但是,作为互联网项目,纯2C的话必然需要做高可用,不仅后端的Server有N个,Nginx同样需要有N个,一主N备,当有一个服务器挂掉的时候,服务能瞬间切换到其他服务器,大概是这样的
?
下面就以上图为例,说明一下如何实现server的高可用。
1、准备
虚拟机两台,同样安装nginx,keepalived,最简单的安装方法yum -y install nginx,yum -y install keepalived。如果找不到安装到哪儿了,可以使用whereis nginx查看,这里不再赘述。
网络划分如下
名称 | IP | 虚拟IP | 操作系统 |
---|---|---|---|
虚拟机1(VM1) | 192.168.136.2 | 192.168.136.99 | centos7.6 |
虚拟机2(VM2) | 192.168.136.4 | 192.168.136.99 | centos7.6 |
2、关闭防火墙,修改nginx首页,启动nginx
- 关闭防火墙
systemctl stop firewalld.service #临时关闭,重启失效
systemctl disable firewalld.service #禁止开机启动
- 简单起见,我们认为每个nginx都是代理一个服务,只用nginx默认带的静态页作为测试,分别修改页面内容为"Welcome to 192.168.136.4"和“Welcome to 192.168.136.2”
- 启动nginx
systemctl start nginx
3、修改keepalived的配置文件
主配置如下(默认配置文件:/etc/keepalived/keepalived.conf):
! 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_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER # 标识为主服务
interface ens33 #绑定虚拟机的IP
virtual_router_id 51 # 虚拟路由id,和从机保持一致
#mcast_src_ip 192.168.126.2 #本机ip
priority 100 #权重,需要高于从机
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
virtual_ipaddress {
192.168.136.99 #/32 brd 255.255.255.0 dev ens33 label ens33:vip #虚拟IP地址
# 192.168.200.17
# 192.168.200.18
}
}
从机配置(默认配置文件:/etc/keepalived/keepalived.conf)
! 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 dreamer1
# vrrp_skip_check_adv_addr
# vrrp_strict
# vrrp_garp_interval 0
# vrrp_gna_interval 0
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
#mcast_src_ip 192.168.136.4 ## 本机 IP 地址
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
virtual_ipaddress {
192.168.136.99
#192.168.200.17
#192.168.200.18
}
}
3、编写监测心跳脚本
上面配置中可以看到有一个脚本文件:/etc/keepalived/nginx_check.sh
查看nginx是否启动,如果没启动则启动,如果启动不起来,停掉keepalived服务,此时心跳断掉,服务转向另一个nginx。
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/usr/sbin/nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
4、测试
- 启动192.168.136.2上的nginx和keepalive
- 启动192.168.136.4上的nginx和keepalive
-
访问虚拟IP:http://192.168.136.99
image.png
-
停掉192.168.136.2上的keepalive
image.png
- 重新启动192.168.136.2上的keepalive,又会回到 Welcome to 192.168.136.2
-
停掉192.168.136.2上的nginx,系统会自动调回Welcome to 192.168.136.4
image.png
就是这样。
内容总结
以上是互联网集市为您收集整理的Nginx+Keepalived实现简单的服务高可用全部内容,希望文章能够帮你解决Nginx+Keepalived实现简单的服务高可用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。