程序员的nginx技能包(5)——负载均衡,高大上架构的起源

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 背景不管是否很大型的系统,采用负载均衡的意义都是相当滴重要。

如果是大型系统,毫无疑问当系统负载能力达到一个服务所能承受的极限时,用多个服务来分摊用户请求的压力是非常合理的想法。这就好比汽车站刚开始只有一辆汽车,当人实在是太多时,最简单拓展运输能力的方式就是再来一辆汽车。


如果是小型系统,负载均衡也是相当重要,最基本的需求,当你的代码需要升级时,要求系统运行不能停止,如果只有一个服务在跑,那就没办法了。但是如果有负载均衡,完全可以在负载比较低时,一台一台的更新。


综上所述,无论你是大神架构师,还是虾米程序员,都应该对负载均衡有些了解。


这其中,nginx实现负载均衡那是相当简单,而且高效,厉害了。


原理

原理灰常简单,nginx监听一个80端口,然后将请求转发到不同服务去处理即可。


注意此处不同服务可能是一台服务器上的不同端口的web服务,也可以是不同服务器上的各个端口的web服务,都可以。


原理如此简单,实现也很容易,详细说下。


搭建实践环境

无非是安装一个nginx,用来监听请求,安装两个tomcat,用来测试是否实现了负载均衡。


具体安装nginx和两个tomcat的过程此处不再一一细讲,前面的章节说的很明白了。


我们要的效果是nginx在80端口如图:

image.png

image.png

配置nginx负载均衡

很简单,如下,我感觉都无需解释了:


首先nginx server监听80端口,然后将请求转发到mytomcats。


mytomcats这个upstream有两个权重一样的服务器负责接收请求,也就是如果有100个请求,那这老哥俩一人500个请求呗。这哥俩就是8012端口和8022端口的服务。


当然如果你想负载均衡到别的机器上,可以将127.0.0.1改成别的IP或者域名。

image.png

重新加载下nginx,命令为:nginx -s reload,然后看效果,就会发现请求同一个地址,有时候是tomcat1响应,有时候是tomcat2响应。当然不是严格的第一次tomcat1响应,第二次就tomcat2响应,毕竟咱们的请求来自同一台计算机,nginx肯定有比较复杂的考量以提高效率,比如IP相似的机器的请求优先安排同一台服务器响应。

image.png

总结与展望

本篇简明但不算扼要的说了nginx如何实现负载均衡,当然nginx负载均衡有很多策略,单独说策略没有意思,下篇还是结合实际场景说下如何来设置具体策略。


项目源码、系列教程及更多内容,请访问熊猫编程网

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
141 59
|
14天前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
60 9
|
1月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
24天前
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
86 5
|
27天前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
50 3
|
1月前
|
存储 负载均衡 监控
如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
在数字化时代,构建高可靠性服务架构至关重要。本文探讨了如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
36 1
|
1月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
65 0
|
1月前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
84 3
|
2月前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
|
2月前
|
架构师 安全 程序员
为什么大部分 PHP 程序员做不了架构师?
【10月更文挑战第23天】本文分析了PHP程序员向架构师转型时面临的挑战,包括语言特性限制认知范围、缺乏分布式系统经验、性能优化深度不足、安全意识和安全架构能力不足,以及对其他技术栈的融合能力有限等问题。这些问题限制了PHP程序员在系统设计和架构领域的全面发展。