DNS负载均衡与NGINX负载均衡策略
负载均衡是指的是把请求均匀的分摊到多个服务器上处理。一般常见的负载均衡有两种:①客户端与反向代理服务器之间的DNS负载均衡②反向代理服务器与应用服务器之间的负载均衡(这种负载均衡有很多,可以是weblogic的负载均衡,可以是Apache+Tomcat负载均衡,也可以是nginx负载均衡,这里只讨论nginx负载均衡)。
负载均衡的关键在于如何使请求均匀的分摊到服务器上。这里考量均匀不仅仅只的是请求数量上的一致,还有服务器压力的平均。如何均匀的分摊,取决于所选的负载均衡策略。
先说DNS负载均衡(GSLB)
dns负载均衡是通过DNS服务器实现的,主要用于把请求均匀的分布到nginx服务器上。其实真是情况中可能是用来根据地域区分请求。但是一个地域中的请求还算需要均匀的分配到nginx服务器上的。
有两个缺点:一个是无法区分服务是否挂掉,即时某个NGINX服务器挂掉了,DNS仍然会分配。另一个是DNS缓存的问题,用户访问网站,网站域名被DNS服务器解析为某个IP。这个IP一般情况都会在客户端本地进行缓存,短时间内下次再访问这个域名,会直接从缓存中拿,无法达到真正的均匀,但这对服务器影响不算太大。重要的请求个数无法真正的做到均衡,比如每个Nginx服务器拿到100个请求,但是所有的耗时大请求都集中到某一台服务器中,那么这个服务器压力将会很大。其他的会比较空闲。
Nginx负载均衡
nginx是目前流行的,优秀的反向代理服务器(其实他不仅仅是反向代理服务器,还是web服务器,也可以是邮件代理服务器,感谢俄罗斯人的智慧)。nginx作为反向代理服务器,主要负责把请求均匀的分摊到应用服务器中。为了达到均匀,Nginx有五种负载均衡策略。
1.轮询
请求依次轮流往每个应用服务器上进行分配,分配策略比较简单。
缺点:不均匀,可能会出现,某些服务器接受的请求较重,负载压力重,有些负荷小,不可控。另外服务器之间需要进行session同步。
2.权重轮询
在轮询的基础上给每个应用服务器一定的权重,比如三台服务器,权重设置为 0.4:0.4:0.2。来到10个请求(序号1到10),那么根据轮询以及权重,序号1、4、 6、 9的请求会打到 第一台服务器上,序号 2、 5 、7 、10 的请求会打到第二台服务器上,剩余序号3 、 8的 请求打到第三台服务器上。
优点:可以根据情况进行调整。可控,仍然需要进行session同步。
3.IP-hash
优点:无需进行session同步,固定IP会固定访问一台服务器。
缺点:恶意攻击,会造成某台服务器压垮。提供的服务不同,面向的地区不同,IP可能会出现集中,造成不均匀,不可控。
4.fair
这种相当于自适应,会根据服务器处理请求的速度进行负载均衡分配。处理请求最早结束的,拿到下一个请求。看上去是不是很好。但是一般都不使用,说是考虑到网络不稳定因素。还有待研究。这种也需要进行session同步。
5.URL-hash
这种是根据URL进行hash,这样某些请求永远打某台服务器。利于利用服务器的缓存,但是可能由于URL的哈希值分布不均匀,以及业务侧重造成某些服务器压力大,某些负荷低。这种也需要进行session同步。
目前比较流行的配置是使用第二种进行配置,但是实际生产中还是需要根据业务特点进行配置,每种策略都具有每种策略的优缺点。
DNS负载均衡与NGINX负载均衡策略的更多相关文章
- 浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)
1.概要 从用户在浏览器输入域名开始,到web页面加载完毕,这是一个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程称作网页加载过程.下面我将依靠自己的经验,总结一下整个过程.如有错漏,欢迎指正. ...
- 【转】浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)
1.概要 从用户在浏览器输入域名开始,到web页面加载完毕,这是一个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程称作网页加载过程.下面我将依靠自己的经验,总结一下整个过程.如有错漏,欢迎指正. ...
- zookeeper 负载均衡和 nginx 负载均衡区别 ?
zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件:但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式.
- zookeeper 负载均衡和 nginx 负载均衡区别?
zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件:但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式.
- Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡
转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...
- nginx负载均衡tomcat和配置ssl
目录 tomcat 组件功能 engine host context connector service server valve logger realm UserDatabaseRealm 工作流 ...
- day10 nfs服务,nginx负载均衡,定时任务
==================nginx 负载均衡==================== 实现nginx负载均衡的效果,并运用nfs服务共享目录,使所有nginx服务拥有共同的http目录 n ...
- nginx 负载均衡策略
nginx 负载均衡策略 1. 轮询轮询方式是nginx负载均衡的默认策略,根据每个server的权重值来轮流发送请求,例如:upstream backend {server backend1.e ...
- Nginx 负载均衡-加权轮询策略剖析
本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更 ...
随机推荐
- 实时更新Excel文档外部数据源的数据
实时更新Excel文档外部数据源的数据 单元格区域.Excel 表.数据透视表或数据透视图均可以连接到外部数据源(数据源:用于连接数据库的一组存储的"源"信息.数据源包含数据库服务 ...
- 1.ini读写操作
一.使用 TIniFile implementationvar ini:tinifile; path:string; {ini文件路径} section,key:string;{表示 ...
- Spring-Kafka —— 实现批量消费和手动提交offset
spring-kafka的官方文档介绍,可以知道自1.1版本之后, @KafkaListener开始支持批量消费,只需要设置batchListener参数为true 把application.yml中 ...
- Go项目实战:打造高并发日志采集系统(一)
项目结构 本系列文章意在记录如何搭建一个高可用的日志采集系统,实际项目中会有多个日志文件分布在服务器各个文件夹,这些日志记录了不同的功能.随着业务的增多,日志文件也再增多,企业中常常需要实现一个独立的 ...
- k8s 管理机密信息
一.启动应用安全信息的保护: Secret介绍: 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 ...
- 【Hadoop】MapReduce自定义分区Partition输出各运营商的手机号码
MapReduce和自定义Partition MobileDriver主类 package Partition; import org.apache.hadoop.io.NullWritable; i ...
- Spring boot Gradle项目搭建
Spring boot Gradle项目搭建 使用IDEA创建Gradle工程 操作大致为:File->new->Project->Gradle(在左侧选项栏中) 创 ...
- Java垃圾收集器与内存分配策略
程序的计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程而灭:栈中的栈侦随着方法的进入和退出而有条不紊地执行出栈和如栈操作. 判断对象是不是已经死亡的方法: 一.引用计数算法: 给对象添加一个引用 ...
- Android Service 入门
说明 Service 工作在主进程上.生命周期图 两种状态 Started 比如Activity通过调用startService 方法.一旦被启动(Started),服务就永久在后台运行,即使创建他的 ...
- PYTHON 100days学习笔记002:语言元素-数字变量与运算符
参考文章: Python 变量类型 Python 运算符 Day02 - 语言元素 1. 指令和程序 计算机的硬件系统通常由五大部件构成,包括:运算器.控制器.存储器.输入设备和输出设备.其中,运算器 ...