负载均衡杂谈

负载均衡杂谈

  最近春节临近,又到了一年一度春运时节,而春运又免不了各种抢票,由此抢票软件也就应运而生,此时,我们发出的大量请求会给网站带来负载。这当然很正常,但是当我们给这些服务器增加负载时,会发生什么呢?这时,事情可能变得很糟糕,如果负载过高(抢票的人太多),网站就可能出现性能损失。它会逐渐变慢,直到最后完全没有反应。而这当然不是我们所期望的。这时候,要解决这个问题,就需要更多的资源。可以选择购买一台配置更高的机器来代替当前的服务器(scale up,纵向扩展),或者购买另外一台普通配置的机器来和当前的服务器一起搭配工作(scale out,横向扩展)。下面对纵向扩展和横向扩展进行一下介绍。

纵向扩展

  纵向扩展常用于应用需要更多的计算能力的情况。例如数据库增长过快,导致之前内存不够用;又如硬盘空间不足,或者数据库需要更大的计算能力和处理更多的请求。

  总的来说,数据库是纵向扩张的很好的实例,因为传统来说,将数据分散到多台机器上运行会出现严重的问题。原因在于,很多在单台机器上理所当然的设计无法在多台机器上运行。比如,如何在多台机器上高效的共享数据表?这是一个很难解决的问题,也正是MongoDB和CouchDB一些新的数据库设计成以另外一种方式运行的原因。

  但纵向扩展可能会非常昂贵(土豪无视)。通常,当需求达到特定规格时,服务器的价格会突然暴增。现在的机器都有一个高规格的RAID控制器、多个企业级硬盘和一个新型处理器(看起来很神秘,实际上和之前的处理器表现差不多,但标价却高出很多)。如果你只需要更新几个部件,可能纵向扩展比横向扩展便宜,但你很可能发现,这么做并不合算。也就是说,如果需要的只是额外的几千兆RAM或者更大的硬盘,或者只需要提高某种用途的性能,这才可能使你的最佳选择。

横向扩展

  横向扩展会出现在你手里有两台或者三台机器,而非单台机器时,纵向扩展的问题在于,到了某种程度,你会碰到无法逾越的限制(土豪,这就是有价无市啊)。单台机器能容纳的计算能力和内存都有限。如果你需要的不止是那些,该这么办呢?其实很好解决,横向扩展的优势就是你可以不断的加机器,当然咯,到达某种程度之后,也会开始碰到存储空间以及计算能力的问题,但是通过横向扩展肯定能获得比纵向扩展更大的计算能力。除此之外,在进行横向扩展的时候,如果其中某台机器没法工作了,仍然可以用其他的机器来处理负载,而纵向扩展,若机器没法工作了,一切都将无法运行。横向扩展当然也会有问题,比如说如何对多台机器同时操作,来使它们能像单台机器一样工作?

  这时,负载均衡就应运而生(词汇量不行,一个词用两遍,求不吐槽~)。那么问题来了:什么是负载均衡呢?

什么是负载均衡

  伟大的度娘是这么说的:

  负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

  负载均衡(又称为负载分担),英文名称为Load Balance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器FTP服务器企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

  下面来介绍一下基于DNS的负载均衡。

基于DNS的负载均衡

  对于实际的负载均衡,它的工作机制非常简单。它使用一种称为轮转的方式,来向特定域的一组服务器分发连接请求。这种操作是顺序执行的(按照第一、第二、第三等步骤)。要向服务器增加基于DNS的负载均衡,只需为域增加多个A记录即可,是的,你没听错,就是这么简单。BND会负载完成其它工作!

基于DNS的负载均衡的优势

  1. 简便。你可以增加另一个完全一样的系统来增加负载能力,使其能处理更多请求。或者,你可以让几个几个带宽很小的直连互联网的地址指向同一台服务器,来增加服务器的总带宽。
  2. 配置简单。你只要把地址加入到DNS数据库即可,不能更简单有没有~
  3. 易于调试。调试和处理DNS问题有大量的工具可以使用,包括dig、ping、nslookup。
  4. 容易扩展。可以基于现有平台进行快速扩展。

基于DNS的负载的问题

  1.粘性。这个问题经常出现在动态网页,众所周知,HTTP是一种无状态协议。它患有严重的慢性失忆症,无法将会话信息从一个请求保留到下一个请求。为了解决这个问题,你可以和每个请求一起,发送一个唯一的标识。这个标识就是cookie,当然也有其它方法来达到类似的效果,这个唯一的标识允许Web浏览器收集并保留你跟网站当前交互相关的信息,所有的信息都会跟那个唯一标识进行绑定。这里的问题在于,这个数据并非在所有的服务器上都有,所以如果有了新的DNS请求要求查找服务器IP时,不能保证你就一定能回到之前连接信息的那个服务器上。

  2.负载处理方式。举个栗子,比如说,你可能会遇到这种情况,两个请求中,一个是高强度的请求,一个是低强度的请求。我们做个最坏的假设,所有的高强度请求都跑到一个服务器上,而所有的低强度请求都跑到另一个服务器上,这时就不再平衡了,若不进行处理,将有一半的用户无法使用该网站。

  3.容错性。如果有一台服务器宕机了,基于DNS负载均衡器无法进行判别,所有它仍然向那台宕机的服务器发送请求,也就是说,会有一半的请求死掉,用户只能不断刷新(F5已烂,笑~),直到切换到某个正常工作的服务器为止。

  好了,此次的负载均衡就到此为止了,如果本文有不对的地方敬请指出~

  PS:本博客欢迎转发,但请注明博客地址及作者~

   博客地址:http://www.cnblogs.com/voidy/

   <。)#)))≦  

时间: 2024-10-26 12:05:10

负载均衡杂谈的相关文章

Nginx做负载均衡时session共享问题详解

用nginx做负载均衡时,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 再者Nginx连接Memcached集群时,Nignx的请求从memcached服务器中根据key获得了value则直接返回value,如果没有获得到value则去MySQL中查询再返回. location / { set $memcached_key "$request_uri"; #设置请求memcached服务器的key memca

nginxtomca负载均衡

Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎.能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型. 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务.

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

centos 7 LVS+keepalived实现nginx的高可用以及负载均衡

一.准备工作:关闭防火墙,selinux以免对实验结果造成影响,准备虚机,设置IP地址.主机名 hostname:Nginx01 IP:192.168.1.87 Role:Nginx Server hostname:Nginx02 IP: 192.168.1.88 Role:Nginx Server hostname:LVS01 IP: 192.168.1.89 Role:LVS+Keepalived hostname:LVS02 IP: 192.168.1.90 Role:LVS+Keepal

nginx负载均衡+keepalive心跳检测

环境标准: 一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一 内核:2.6.32-642.el6.x86_64 系统:CentOS release 6.8 (Final) ip: web01:10.0.0.8 nginx 解析手机端 均做了nginx的负载均衡但是只均衡一台机器可以后续往里填 web02:10.0.0.200 nginx 解析电脑端 均做了nginx的负载均衡但是只均衡一台机器可以后续往里填 lb01

大型网站架构系列:负载均衡详解

面对大量用户访问.高并发请求,海量数据,可以使用高性能的服务器.大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题.从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统.分布式和业务拆分解决了,从集中到分布的问题,但是每个部署的独立业务还存在单点的问题和访问统一入口问题,为解决单点故障,我们可

负载均衡原理

双机热备:有流量经过的设备即为主设备,为流量经过的设备即为备份设备 防火墙基于会话状态的数据同步:批量备份.实时备份批量备份:先运行的防火墙会将已有的会话表项一次性同步到加入的设备实时备份:保证表项完全一致,防火墙在产生新表项或表项变化后会及时备份到另一台设备上 双机热备:只支持数据同步.不支持配置同步 链路负载均衡:策略路由策略路由配置不方便,不够灵活,无法适应动态网络结构变化,策略路由无法根据带宽进行报文分发链路负载均衡通过动态算法,能够在多链路中进行负载均衡,算法配置简单,且具有自适应能力

dns + nginx实现负载均衡

一 搭建环境说明: 服务器公网地址 用途 服务器内网地址 123.56.x.92 Nginx负载兼web服务 10.171.132.57 123.57.x.176 Nginx负载兼Web服务 10.172.235.86 两台服务器上面分别有三个站点,web,app,h5 1  PC站前端    nginx  80 2  H5站前端    nginx+tomcat  28180 3 app客户端   nginx+tomcat  28543 负载均衡实现方式和前提 准备用dns轮询解析来实现负载均衡

负载均衡算法的几种常用方案

总结下负载均衡的常用方案及适用场景 轮询调度 以轮询的方式依次请求调度不同的服务器:实现时,一般为服务器带上权重:这样有两个好处: 针对服务器的性能差异可分配不同的负载: 当需要将某个结点剔除时,只需要将其权重设置为0即可: 优点:实现简单.高效:易水平扩展: 缺点:请求到目的结点的不确定,造成其无法适用于有写的场景(缓存,数据库写) 应用场景:数据库或应用服务层中只有读的场景: 随机方式 请求随机分布到各个结点:在数据足够大的场景能达到一个均衡分布: 优点:实现简单.易水平扩展: 缺点:同Ro