河南省重点项目建设网,数字营销网站主页优化,图片搜索图片识别,哈尔滨网站建设托管公司一、引言
明人不说暗话#xff0c;下面来解析一下 Nginx 的负载均衡。需要有 Linux 和 Nginx 环境哈。
二、nginx负载均衡的作用 高并发#xff1a;负载均衡通过算法调整负载#xff0c;尽力均匀的分配应用集群中各节点的工作量#xff0c;以此提高应用集群的并发处理能力…一、引言
明人不说暗话下面来解析一下 Nginx 的负载均衡。需要有 Linux 和 Nginx 环境哈。
二、nginx负载均衡的作用 高并发负载均衡通过算法调整负载尽力均匀的分配应用集群中各节点的工作量以此提高应用集群的并发处理能力吞吐量。 伸缩性添加或减少服务器数量然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。 高可用负载均衡器可以监控候选服务器当服务器不可用时自动跳过将请求分发给可用的服务器。这使得应用集群具备高可用的特性。 安全防护有些负载均衡软件或硬件提供了安全性功能如黑白名单处理、防火墙防 DDos 攻击等 三、upstream配置
首先给大家说下 upstream 这个配置写一组被代理的服务器地址然后配置负载均衡的算法。这里的被代理服务器地址有两种写法。
第一种方式
upstream testapp { server ip:端口; #需要代理的服务器地址ipserver ip:端口; #需要代理的服务器地址ip}server {listen 80;server_name localhost;location / { proxy_pass http://testapp; #请求转向 testapp 定义的服务器列表 }
}
第二种方式
upstream mysvr { server http://ip:端口; #需要代理的服务器ip和端口server http://ip:端口; #需要代理的服务器ip和端口}server {listen 80;server_name localhost;location / { proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表 }
}
示例
我们使用第一种方法准备三台机器
代理器 10.12.153.41
服务器1 10.12.153.222
服务器2:10.12.153.140
首先保证服务器1和2能够正常访问到web页面 现在配置代理端的nginx配置文件 配置完成后重新加载就可以进入浏览器测试了 我们通过访问代理器10.12.153.41访问到了两个服务器的页面
默认访问页面是轮询的什么是轮询下面会讲到哈
四、负载均衡算法 upstream 支持4种负载均衡调度算法: 1、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器; 2、ip_hash:每个请求按访问IP的hash结果分配同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上可以解决session问题。 3、url_hash:按访问url的hash结果来分配请求使每个url定向到同一个后端服务器。后台服务器为缓存的时候提高效率。 4、fair:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡也就是根据后端服务器的响应时间来分配请求响应时间短的优先分配。Nginx本身是不支持 fair的如果需要使用这种调度算法必须下载Nginx的 upstream_fair模块。 负载均衡调度算法配置示例
1、热备backup
当一台服务器发生事故时才启用第二台服务器给提供服务
服务器处理请求的顺序为 001 001 001 001 001 001 突然001出现故障这是访问页面则会是002 002 002 002 .... 2、轮询weight
nginx默认就是轮询其权重默认为1服务器处理请求的顺序001 002 001 002 001 002....
weight的默认值为1可以不写。上面的upstream配置实例中使用的就是普通轮询。
3、加强轮询weight
即可以使用weight修改轮询次数下面的配置轮询访问显示为001 001 001 002 002 001 001 001 002 002 ...
4、ip_hash
nginx会让相同的客户端ip请求相同的服务器使用ip_hash这种负载均衡以后可以保证用户的每一次会话都只会发送到同一台服务器上 注意事项
一旦使用了ip_hash当我们需要移除一台服务器的时候不能直接删除这个配置项而是需要在这台服务器配置后面加上关键字down表示不可用因为如果直接移除配置项会导致hash算法发生更改后续所有的请求都会发生混乱
5、nginx负载均衡配置状态参数 down表示当前的server暂时不参与负载均衡。backup预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候才会请求backup机器因此这台机器的压力最轻。 max_fails允许请求失败的次数默认为1。当超过最大次数时返回proxy_next_upstream 模块定义的错误 fail_timeout在经历了max_fails次失败后暂停服务的时间单位秒。max_fails可以和fail_timeout一起使用。 例 10.12.153.222 轮循两次且请求2次后失败失败后暂停服务2秒
10.12.153.140 轮循三次且请求2次后失败失败后暂停服务1秒
五、7层协议和4层协议介绍
7层负载和4层负载的区别 四层负载与七层负载最大的区别就是效率与功能的区别。 四层负载架构设计比较简单无需解析具体的消息内容在网络吞吐量及处理能力上会相对比较高 而七层负载均衡的优势则体现在功能多控制灵活强大。 在具体业务架构设计时使用七层负载或者四层负载还得根据具体的情况综合考虑。 七层协议
OSIOpen System Interconnection是一个开放性的通行系统互连参考模型他是一个定义的非常好的协议规范共包含七层协议
如图显示 4层协议
TCP/IP协议 之所以说TCP/IP是一个协议族是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议这些协议一起称为TCP/IP协议。
从协议分层模型方面来讲TCP/IP由四个层次组成网络接口层、网络层、传输层、应用层。 nginx在1.9.0的时候增加了一个 stream 模块用来实现四层协议网络层和传输层的转发、代理、负载均衡等。stream模块的用法跟http的用法类似允许我们配置一组TCP或者UDP等协议的监听然后通过proxy_pass来转发我们的请求通过upstream添加多个后端服务实现负载均衡
扩展 TCP (传输控制协议)和 UDP (用户数据报协议) 是两种不同的网络通信协议它们在传输数据的方式可靠性、传输速度和应用场景等方面存在一些区别。1.传输方式 TCP 是一种面向连接的协议它在传输数据之前需要先建立连接然后才能传输数据。而 UDP 是一种无连接的协议它不需要建立连接就可以直接传输数据。 2.可靠性: TCP 是一种可靠的协议它可以保证数据的传输不会出现丢失、重复或乱序等问题。它通过确认机制.超时重传和滑动窗口等技术来保证数据的可靠性。而 UDP 是一种不可靠的协议它不能保证数据的传输不会出现丢失、重复或乱序等问题。3.传输速度: TCP 的传输速度相对较慢因为它需要建立连接、确认数据的传输和进行流量控制等操作。而 UDP 的传输速度相对较快因为它不需要建立连接和进行流量控制等操作。4.应用场景: TCP 适用于需要可靠传输数据的应用场景例如文件传输、电子邮件、远程登录等。而 UDP 适用于对传输速度要求较高但对数据可靠性要求不高的应用场景例如视频会议、实时游戏、DNS 解析等。 总的来说TCP 和 UDP 都有各自的优缺点需要根据具体的应用场景来选择使用哪种协议。 好了今天就分享到这里了感谢大家观看希望能够帮助到大家