前言

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端口,可做一个内部管理工具,使用管理工具来操作。

最新文章

  1. jQuery中eq()方法用法实例
  2. 列表屏幕(List Screen)
  3. ElasticSearch大数据分布式弹性搜索引擎使用
  4. 记Ubuntu开机黑屏及解决过程
  5. Xpath用法
  6. Codeforces Round #337 (Div. 2) D. Vika and Segments 线段树 矩阵面积并
  7. matlab绘图--线性规划图解法示意
  8. 手机响应式wap网页最佳方案
  9. (四)C语言柔性数组、指针赋值
  10. java项目中读取src目录下的文件
  11. 更新项目经常使用的Linux命令
  12. 关于Linux路由表的route命令(转)
  13. PHP中的http协议
  14. UOJ #310「UNR #2」黎明前的巧克力
  15. EasyTouch和NGUI的使用心得
  16. Linux下查看文件或文件夹大小的命令df 、du、ls
  17. 经验:使用 Cache 时注意 DateTime.Now
  18. 【iCore4 双核心板_ARM】例程十一:DMA实验——存储器到存储器的传输
  19. Word 2010 制作文档结构之图标自动编号设置
  20. python入门-函数(二)

热门文章

  1. Java反射基础(二)
  2. 【转】CStdioFile UNICODE编译 英文系统下读取中文汉字乱码解决
  3. Python_selenium之获取当前页面的href属性,id属性,图片信息和截全屏
  4. Django admin 注册多个app
  5. RocketMQ性能压测分析(转载)
  6. Eclipse虚拟内存不足【Eclipse中虚拟内存设置】
  7. Http服务器实现文件上传与下载(二)
  8. NHibernate 1.0 Released 版本发布了
  9. golang 内置函数new()
  10. C# 计算每周和每月固定日期