还记得那些美妙的夜晚吗

你洗洗打算看一个小电影就睡了,这个时候突然想起来今天晚上是服务器更新的日子,你要在凌晨时分去把最新的代码更新到服务器,以保证明天大家一觉醒来打开网站,发现昨天的 Bug 都不见了。这时候你瞬间没有了看电影的兴致了,这应该就是一个运维人员的日常了吧!

为什么要在凌晨时分去更新服务器?

做过 Web 开发的应该都明白,可能尽管你开发的系统并没有多少用户在使用,但是,你依然不敢大白天去更新生产环境服务器,因为你并不知道服务器可能暂停两分钟会带来的影响,又或者我们心目中的「生产环境」这个词是圣神而不可随便玷污的,所以,我们总是放在凌晨时分。

你听过「灾备」、「异地多活」、「双机热备」这些词么

大家都知道「不能把鸡蛋放在一个篮子里」,在我们开发中依然是如此,如果是稍微对系统数据及运行状态有要求的项目,千万可不能突然系统挂掉几分钟,这带来的后果是不可想象的。所以,在我们开发中就会有「灾备」这个词,我们要考虑到这些不可预防的事件发生,所以,往往我们会把系统部署到多台服务器上面,这就是「鸡蛋」的例子,也就是所谓的「双机热备」,以保证我们系统的高可用,当一个服务器挂掉,后边的这个完全有能力顶上去!就好像一个程序员你感觉他天天没什么事儿可干,非常气愤的去找你领导说:xxx 天天没事干,为什么他工资比我高?呵呵呵...

从零开始学 Java - CentOS 下 Nginx + Tomcat 配置负载均衡 这篇文章中,我们已经配置了两台服务器实现负载均衡,并且可以自定义权重,其实这个时候 Nginx 是支持你去更新其中一个服务器的时候,它监测到这个服务器挂掉了,它把请求都转发到另一台服务器的。但是,我在翻看 Nginx 的 upstream 配置的时候发现有种更好的方式,就是配置备份服务器。

backup 是什么鬼

当然是备份的意思了。看到官网的配置(http://nginx.org/en/docs/http/ngx_http_upstream_module.html)是这个样子的:

  • backup : marks the server as a backup server. It will be passed requests when the primary servers are unavailable.(标记为备用服务器。当主服务器不可用以后,请求会被传给这些服务器。)

    这意思就是,只有当你的服务器挂掉的时候才会使用备份服务器,正常情况下不会访问到备份服务器,那好,我来测试一下,还记得我们上一篇负载均衡的配置么,我增加一个Tomcat服务器3,然后,里边网页输出这是网站3333333333

具体配置文字版:

upstream backend {
server 192.168.198.128:8080 weight=1;
server 192.168.198.128:8090 weight=4;
server 192.168.198.128:8091 backup;
} server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
proxy_pass http://backend;
}

我这里先做一个必要的小说明:

  • 192.168.198.128:8080 服务器下面会称为 服务器1 ,每五次请求会到这里一次;
  • 192.168.198.128:8090 服务器下面会称为 服务器2 ,每五次请求会到这里四次;
  • 192.168.198.128:8091 服务器下面会称为 服务器3 ,即备份服务器。

这个时候服务器1服务器2服务器3都正常启动,我刷新页面,会按照权重规则请求服务器1服务器2,并不会请求服务器3(备份服务器)

接下来我把服务器1停掉,服务器2服务器3都正常启动,我刷新页面,这个时候所有请求都是服务器2,也并不会请求服务器3(备份服务器)

接下来我把服务器1服务器2都停掉,服务器3正常启动,我刷新页面,所有请求都转发到服务器3(备份服务器),看图片:

我再次依次启动服务器1服务器2,所有请求都又按照权重规则分配了。在你所有正常服务器都挂掉时,系统依然高可用,这就是备份服务器的用处

总结:无痛更新

配置完备份服务器后,你再也不用再凌晨时分爬起床去更新服务器了,你想什么时间更新就什么时间更新,爱谁谁!真的可以做到无痛、无痛、无痛,不断网重启服务器。

好了,我洗洗睡觉了,我特么终于可以去看一部小电影了...

从零开始学 Java - 利用 Nginx 负载均衡实现 Web 服务器更新不影响访问的更多相关文章

  1. 关于Tomcat+Nginx负载均衡与Jmeter服务器测压的日记

    Jmeter测压 1.Jmeter-5.1.1下载:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.1.1.zip 2 ...

  2. 从零开始学 Java - 我放弃了 .NET ?

    这不是一篇引起战争的文章 毫无疑问,我之前是一名在微软温暖怀抱下干了近三年的 .NET 开发者,为什么要牛(sha)X一样去搞 Java 呢?因为我喜欢 iOS 阿!哈哈,开个玩笑.其实,开始学 Ja ...

  3. 利用Nginx实现反向代理web服务器

    一.Nginx简介 Nginx是一个很强大的高性能Web服务器和反向代理服务器,它具有很多非常优越的特性: 可以高并发连接 内存消耗少 成本低廉 配置文件非常简单 支持Rewrite重写 内置的健康检 ...

  4. nginx负载均衡实验

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  5. 11.2,nginx负载均衡实验

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  6. Linux之nginx负载均衡

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  7. nginx负载均衡 理解与测试

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  8. nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理

    Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...

  9. (转)nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理

    Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...

随机推荐

  1. 基于空项目模板创建使用Owin来host的WebApi项目

    首先创建一个空的web项目,如下图所示: 项目创建成功以后,安装下面三个package. Install-Package Microsoft.AspNet.WebApi -Version 5.2.2I ...

  2. ClickOnce部署

    (1):一些发布方式 ClickOnce是什么玩意儿,这个问题嘛,在21世纪的互联网严重发达的时代,估计也没有必要大费奏章去介绍了,弄不好的话,还有抄袭之嫌.因此,有关ClickOnce的介绍,各位朋 ...

  3. SQL Server 链接服务器的安全

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 安全设置(Security Settings) 实现效果:用户A能看见能使用,B用户不能看见这 ...

  4. 关于xcode导出设置中的一些概念

    Development Certificates:在电脑通过秘钥串生成一个私人秘钥,这就是:CertificateSigningRequest.certSigningRequest 简称CSR,团队中 ...

  5. javascript运动系列第九篇——碰撞运动

    × 目录 [1]碰撞检测 [2]无损碰撞 [3]有损碰撞 前面的话 碰撞可以分为碰壁和互碰两种形式,上篇介绍了碰壁运动,本文将从浅入深地介绍碰撞运动的互碰形式 碰撞检测 对于互碰形式的碰撞运动来说,首 ...

  6. xUnit安装及注意事项

    前言 对于单元测试,想必大家都已再熟悉不过了,同时单元测试的重要性也越发突出,在招聘中也特别强调单元测试,但是对于微软内置的单元测试还是太过于繁琐,于是都在寻找一种简洁并且更加轻量的测试工具.用的最多 ...

  7. 亚马逊云架设WordPress博客

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 这篇文章介绍如何在亚马逊云架设WordPress博客.最强的云,加上最流行的建站工 ...

  8. golang操作文件

    1.读取文件信息: /* 读取文件信息 */ func readFile(path string) string { fi, err := os.Open(path) if err != nil { ...

  9. “英雄之旅”见闻和小结----angular2系列(三)

    前言: 本系列在前面两篇文章,介绍了Zone.js和angular2的基础概念.而后对于ng2的学习,还是由官方的 Tour of Heroes 开始. 以下内容经过提炼和个人理解,当然也会有不正确的 ...

  10. 使用Jquery的Ajax实现无刷新更新,修改,删除页面

    本文将向大家讲述一下最近工作的一些总结,主要包括了以下内容,注册界面以及详细信息界面的编辑.主要是介绍了AJAX技术,因为我觉得其他方面没什么好介绍的.首先是跟大家说一下Ajax的优点,假如你删除了一 ...