您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
Nginx高可用集群实战
 
作者:chengong10130
   次浏览      
2020-6-22 
 
编辑推荐:
文章主要讲解了nginx高可用集群 , 对nginx的upstream模块配置,对keepalived文件进行配置,希望对您的学习有所帮助。
本文来自于csdn,由火龙果软件Alice编辑推荐。

一、简介

下面是本人所理解的nginx高可用集群。此实验拓扑图类似keepalived拓扑,把图中keepalived字样换成nginx即可,我就不画了,有意者可重画。

实验拓扑图:

二、nginx主备模式高可用

配置nginx的upstream模块,让其反代到后端主机,后端主机配置和keepalived中雷同即可。

upstream websrvs {
server 10.1.10.5:80; #后端主机real server01
server 10.1.10.6:80; #后端主机real server02
server 10.1.10.2:80 backup; #当后端主机均不能响应时此主机响应应急页面
}

配置keepalived配置文件,实现VIP地址漂移

! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.100.18
}
vrrp_script chk_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -5
}
vrrp_script chk_nginx {
script "killall -0 nginx && exit 0 || exit 1"
interval 1
weight -5
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 57
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 98181111
}
virtual_ipaddress {
10.1.10.7/16 dev eno16777736
}
track_script {
chk_down
chk_httpd
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

实现图:

模拟单台后端主机无法提供服务及其全部宕机实验结果如下:

上诉结果可看出,此实验成功的展示了主备模式下的nginx反代,实现高可用。此实验课检测nginx的健康状态及其主备模式的切换时发邮件给管理员。

三、nginx主主模式高可用

配置keepalived配置文件,实现VIP地址漂移,和上诉主备相似

! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.120.18
}
vrrp_script chk_down { #检测此文件下是否存在down这个文件,灰度模式下上线时可使用此
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -5
}
vrrp_script chk_nginx { #检测nginx的健康状态信息
script "killall -0 nginx && exit 0 || exit 1"
interval 1
weight -5
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 53
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 9818sss1
}
virtual_ipaddress {
10.1.10.7/16 dev eno16777736
}
track_script {
chk_down
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
vrrp_instance VI_2 {
state BACKUP
interface eno16777736
virtual_router_id 54
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 9818rss1
}
virtual_ipaddress {
10.1.10.77/16 dev eno16777736
}
track_script {
chk_down
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

此时,nginx上keepalived均启动结果如图:

模拟后端主机宕机及其恢复正常结果类似keepalived如图所示:

到此,nginx的高可用集群均已实现,做实验的方法和keepalived有很多相似之处。

 

   
次浏览       
????

HTTP????
nginx??????
SD-WAN???
5G?????
 
????

??????????
IPv6???????
??????????
???????
????

????????
????????
???????????????
??????????
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
云原生架构概述
K8S高可用集群架构实现
容器云管理之K8S集群概述
k8s-整体概述和架构
十分钟学会用docker部署微服务
最新课程
云计算、微服务与分布式架构
企业私有云原理与构建
基于Kubernetes的DevOps实践
云平台架构与应用(阿里云)
Docker部署被测系统与自动化框架实践
更多...   
成功案例
北京 云平台与微服务架构设计
通用公司GE Docker原理与实践培训
某军工研究单位 MDA(模型驱动架构)
知名消费金融公司 领域驱动设计
深圳某汽车企业 模型驱动的分析设计
更多...