当前位置: 首页 > 科技观察

Java-使用Nginx负载均衡实现web服务器

时间:2023-03-12 02:50:59 科技观察

你还记得那些美好的夜晚吗?更新最新的代码到服务器,保证大家明天醒来打开网站,发现昨天的bug不见了。这时候,你瞬间失去了看电影的兴趣。这应该是一个运维人员的日常吧!为什么要在凌晨更新服务器?做过web开发的都应该明白,即使你开发的系统没有多少用户使用,你还是不敢光天化日的更新生产环境服务器,因为你不知道服务器可能会挂掉两分钟。影响,或者说“生产环境”这个词在我们心目中是神圣的,是不能随便玷污的,所以我们总是把它放在凌晨。听说过“容灾”、“异地多活”、“双机热备”这些词吗?每个人都知道“你不能把所有的鸡蛋都放在一个篮子里”。在我们的开发中仍然如此。对于需要数据和运行状态的项目,系统绝对不能突然挂掉几分钟。这样做的后果不堪设想。所以,在我们的开发中,就会有“容灾”二字。我们必须考虑这些无法避免的事件。因此,我们经常将系统部署到多台服务器上。这是“鸡蛋”的一个例子。也就是所谓的“双机热备”来保证我们系统的高可用。当一台服务器挂掉时,后面一台完全有能力接管!就好比一个程序员,你觉得他天天无事可做,你很生气的去找你的领导说:xxx天天无事可做,为什么他的工资比我高?嘿嘿嘿……在《从零开始学Java——CentOS下Nginx+Tomcat配置负载均衡》一文中,我们配置了两台服务器实现负载均衡,并且可以自定义权重。实际上,此时Nginx支持你在更新其中一台服务器时,检测到该服务器宕机,它会将所有请求转发给另一台服务器。但是,当我查看Nginx的upstream配置时,我发现有一个更好的方法,就是配置备份服务器。备份是什么鬼?当然是备份的意思。官网上的配置是这样的:backup:将服务器标记为备份服务器。当主服务器不可用时,它将传递请求。(标记为备份服务器。当主服务器不可用时,请求将传递到这些服务器。)就是说备份服务器只会在你的服务器宕机的时候使用,一般情况下是不会访问备份服务器的。好吧,让我测试一下。还记得我们上一篇文章中的负载均衡配置吗?我添加了一台Tomcat服务器3,然后,里面的网页输出的就是网址{{3333333333:0}}。具体配置文字版:这里先做一个必要的小说明:192.168.198.128:8080服务器在下面称为服务器1,每5个请求会到这里一次;192.168.198.128:8090服务器在下面称为服务器2,每五个请求会来这里四次;192.168.198.128:8091服务器在下文中称为服务器3,即备份服务器。此时服务器1、服务器2、服务器3都正常启动。当我刷新页面时,会根据权重规则请求服务器1和服务器2,不会请求服务器3(备份服务器)。接下来,我停止了服务器1,服务器2和服务器3都正常启动。我刷新了页面。此时所有的请求都是从服务器2发出的,没有请求到服务器3(备份服务器)。接下来,我停止了Server1和Server2,Server3正常启动。我刷新了页面,所有请求都被转发到Server3(备份服务器)。看图:我又依次启动了Server1和Server2,所有的请求都是按照权重规则分配的。当你所有的普通服务器都宕机时,系统仍然是高可用的,这就是备份服务器的作用!总结:无痛更新配置好备份服务器后,再也不用凌晨起床更新服务器了。随时更新,爱谁就爱谁!真的可以做到无痛无痛,无痛无痛,不断重启服务器。好了,我要睡觉了,终于可以看个小电影了……