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 | ...
随机推荐
- 隐式意图调用系统自带组件的各种Uri总结
调用系统应用解析(必需要加各自使用的权限) android intent 隐式意图和显示意图(activity跳转) 显示意图要求必须知道被激活组件的包和class 隐式意图仅仅须要知道跳转acti ...
- oauth 2
OAuth2是基于HTTP的认证API,一般与OAuth2搭配的API也是基于HTTP的REST风格API(比如新浪微博和github),很多人一定想过是否可以直接从浏览器端调用REST API. 我 ...
- 第十篇:顺序容器vector,deque,list的选用规则
前言 常见的顺序容器主要有三种 - vector,deque,list.它们实现的功能相差不大,那么实际开发中该如何进行选择呢?本文将为你解答这个问题. 分析 由于这三种容器实现的数据结构原型不同(v ...
- Eclipse修改背景颜色
windows->peferences->General->Editors->Text EditorAppearance color options:选择Background ...
- poj万人题
poj提交数量过万的题,除了水爆了的题就是无比经典的,不得不刷的题. 准备将poj上提交次数过万的题刷个遍. 持续更新中... poj 2828(线段树) 此题乃是Zhu, Zeyuan神牛出的,拿到 ...
- 【Double】double精度问题和int、long除不尽取舍问题
看了老半天,真心没搞懂,留下几篇文章,后面继续跟进吧.... 一.如何理解double精度丢失问题? - 知乎 https://www.zhihu.com/question/42024389/answ ...
- HDU 3388 Coprime(容斥原理+二分)
Coprime Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- caffe web demo运行+源码分析
caffe web demo学习 1.运行 安装好caffe后,进入/opt/caffe/examples/web_demo/的caffe web demo项目目录,查看一下app.py文件,这是一个 ...
- js生成二维码/html2canvas生成屏幕截图
1.需求简述 (1) 最初需求: 根据后台接口获取url,生成一个二维码,用户可以长按保存为图片.(这时的二维码只是纯黑白像素构成的二维码) 方案1: 使用jquery.qrcode.min.js插件 ...
- Linux学习笔记(4)磁盘分区(fdisk)、挂载与文件系统命令
Linux学习笔记(4)磁盘分区(fdisk).挂载与文件系统命令 1.磁盘分区是怎么表示的? 1.1 对于IDE接口,第一主盘为hda,第1从盘为hdb,第1从盘的第1个分区为hdb1 1.2 对于 ...