Nginx进阶-不停服更新
前言
7*24小时不间断的提供对外服务和产品快速迭代是互联网行业的特征,基于需求所有的发布都不能停止当前对外的服务。本文围绕此话题衍生出,不停服上下线工具实现。
看本文前请先看
作案工具
站点部署
源码下载后,分别部署在两台不同的IIS中,部署不做解释,直接上图


Tengine配置
本文演示直接使用淘宝开源Tengine进行配置,而不使用Nginx官网原生加入淘宝开源插件进行配置,如需要使用官网插件形式部署,可以查看开源配置,送飞机票:https://github.com/yaoweibin/nginx_upstream_check_module;
常规配置在Nginx初识中已经说明了,其他不做解释,开始上干货
#删除原有默认配置
rm -rf /usr/local/nginx/conf/nginx.conf
#新建空白配置文件
vim /usr/local/nginx/conf/nginx.conf
插入如下(主要看upstream节点中的check,其他节点不做说明,查看nginx初识文章)
#user nginx;
worker_processes ;
error_log /usr/local/nginx/logs/error.log warn;
pid /usr/local/nginx/logs/nginx.pid;
events {
worker_connections ;
}
http {
include /usr/local/nginx/conf/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout ;
#gzip on; #include /etc/nginx/conf.d/*.conf; upstream iis_pool
{
server 10.2.1.111:8011 weight=4 max_fails=2 fail_timeout=10s;
server 10.2.1.144:8011 weight=4 max_fails=2 fail_timeout=10s;
check interval=3000 rise=2 fall=2 timeout=20000 type=http;#每隔三秒检查,检查两次失败则整个宕机,检查两次成功则机器正常
check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\nHost:ng.zhoudemo.com\r\n\r\n";#检查地址 / 斜杠表示根域名,访问http://ng.zhoudemo.com
#当为/ngcheck 表示访问http://ng.zhoudemo/ngcheck检查
check_http_expect_alive http_2xx;#表示httpresponse中响应吗为2xx开头则为正常
keepalive 300;#最大缓存连接数 按需设置
} server
{
listen 80;
server_name ng.zhoudemo.com; location / {
proxy_pass http://iis_pool;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
保存后,重启ng服务 service nginx restart
最终效果
正常情况如下


此时输入实际IP加端口访问站点后,点击开启/停止服务(开启/停止服务为修改站点静态变量,当为停止时,则访问该路径返回统一的非2xx编码)


此时nginx存活检测中每隔3秒自动检测到10.2.1.111:8011服务器响应码错误,将不再提供流量至10.2.1.111服务器,我们可以刷新ng.zhoudemo.com站点,此时流量只会打到10.2.1.144站点,说明停止服务成功。
结尾
流量已经不到10.2.1.111服务器了,我们就是对服务器不管做什么都不影响实际生产平台,我们在实现发布,发布后进行接口或站点校验是否发布正确,如正确在开启服务,至此不停服更新完成,不停服更新在实际使用情况,不可能去记忆如此多生产环境IP端口,可做一个内部管理工具,使用管理工具来操作。
Nginx进阶-不停服更新的更多相关文章
- JAVA代码热部署,在线不停服动态更新
本地debug的时候,可以实时编译并更新代码,线上也可以不停服来动态更新类,即所说的java热部署. JDK代理的两种方式: 1.premain方式是Java SE5开始就提供的代理方式,但其必须 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- nginx重新加载配置(不停服)
RT,改变配置想让它生效而不停止服务,如下两种方式都可以: 1) nginx -t; nginx -s reload2) nginx -t; kill -HUP
- nginx重新编译不停服
找到安装nginx的源码根目录,如果没有就下载新的安装包 .tar.gz 查看ngixn版本极其编译参数 /usr/local/nginx/sbin/nginx -V 进入nginx源码目录 cd n ...
- springboot 不停服动态更新定时任务时间(转)
转 https://blog.csdn.net/u012129558/article/details/80834303 Spring框架自3.0版本起,自带了任务调度功能,好比是一个轻量级的Quart ...
- 架构设计:负载均衡层设计方案(3)——Nginx进阶
版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) 目录(?)[-] Nginx继续进阶 1gzip ...
- antd Select进阶功能 动态更新、函数防抖
一.动态更新Options Antd Select自带的搜索功能很多时候需要结合后端的接口,输入一个关键字的时候会自动更新选择器的选项. 下面列一些注意点 基础实现 选择器选项必须和每次更新的数据挂钩 ...
- nginx配置文服
修改nginx.conf 添加如下内容 autoindex on; # 显示目录 autoindex_exact_size on; # 显示文件大小 autoindex_localtime on; # ...
- nginx命令(持续更新)
关闭服务:nginx -s stop | service nginx stop 启动服务:nginx | service nginx start 重新加载配置文件:nginx -s reload | ...
随机推荐
- ActiveMQ安装优化
ActiveMQ性能測试 http://m.blog.csdn.net/blog/brushli/41750615 1.下载ActiveMQ 官网:http://activemq.apache.org ...
- CSS:层叠样式表的冲突处理
前言 重叠样式表的冲突是通过重叠过程排序,最终确定文档的显示方式的,也就是是说通过重叠排序来处理冲突问题.这过程起决定性作用的是选择器及其相关申明的特殊性,以及继承机制. 基本流程 1.找出所有相关规 ...
- iOS -转载-使用Navicat查看数据表的ER关系图
Navicat软件真是一个好东西.今天需要分析一个数据库,然后想看看各个表之间的关系,所以需要查看表与表之间的关系图,专业术语叫做ER关系图. 默认情况下,Navicat显示的界面是这样的: 软件将表 ...
- Android中使用OnClickListener接口实现button点击的低级失误
今天写了几行极为简单的代码,就是想implements View.OnCLickListener.然后实现按钮点击操作.可是按钮却没有反应.找了五分钟还是没有结果. 下面是我的代码,希望大家不要嘲笑 ...
- 深入java虚拟机(一) 虚拟机内存结构
java虚拟机所管理的内存区域(运行时数据区)主要分为如下几个部分:堆(heap).方法区(method area).虚拟机栈(VM stack).本地方法栈(native method stack) ...
- c# vue 跨域get post cookie等问题
背景介绍: 开发微信公共号时前后端分离,后台用C#开发,前端使用vue框架,数据采用axios传输 具体问题: 1:前后端分离造成的跨域访问问题 2:跨域后cookie传输和设置问题 解决方案: 1: ...
- Android搜索控件的基本使用方法
在Android中,搜索是一个非常核心的功能,我们可以通过它搜索到任意我们可以获得的信息.这些信息可以是存储在手机中的联系人.文件等信息,也可以是在网络上的资源. Android为了给用户提供良好的搜 ...
- HDU 1863 畅通工程(Kruskal)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- SQLSERVER 创建索引实现代码
是SQL Server编排数据的内部方法.它为SQL Server提供一种方法来编排查询数据 什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数 ...
- orchestrator-Raft集群部署
本文简要说明下orchestrator的Raft集群部署,其实部署很简单主要是好好研究下配置文件的配置,这里我的样例配置文件暂时只适用于我们这块业务 如果您自己使用请根据情况自行修改. 主要通过配置文 ...