欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

负载均衡的认识

程序员文章站 2023-11-16 11:26:46
一、什么是负载均衡 一、什么是负载均衡 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而 ......

一、什么是负载均衡

    负载均衡(load balance)其意思就是分摊到多个操作单元上进行执行,例如web服务器、ftp服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
 
  单从字面上的意思来理解就可以解释n台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上即可。
 
  负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

二、负载均衡的优

       减少服务器的压力,将原本一台服务器索要承受的访问量分给多台,并提高项目的可用性,当一台服务器挂掉的时候不会导致项目瘫痪。

三、四层负载均衡和七层负载均衡

负载均衡的认识

  四层负载均衡工作在osi模型的传输层,主要工作是转发,它在接收到客户端的流量以后通过修改数据包的地址信息将流量转发到应用服务器。

  七层负载均衡工作在osi模型的应用层,因为它需要解析应用层流量,所以七层负载均衡在接到客户端的流量以后,还需要一个完整的tcp/ip协议栈。七层负载均衡会与客户端建立一条完整的连接并将应用层的请求流量解析出来,再按照调度算法选择一个应用服务器,并与应用服务器建立另外一条连接将请求发送过去,因此七层负载均衡的主要工作就是代理。 七层负载均衡 也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

 七层负载均衡的优点:这种方式可以对客户端的请求和服务器的响应进行任意意义上的修改,极大的提升了应用系统在网络层的灵活性;安全性高。
 
    七层负载均衡,主要还是着重于应用广泛的http协议,所以其应用范围主要是众多的网站或者内部信息平台等基于b/s开发的系统。 四层负载均衡则对应其他tcp应用,例如基于c/s开发的erp等系统

四、负载均衡的使用软件

          负载均衡软件有nginx、lvs、haproxy等是目前使用最广泛的三种负载均衡软件

五、负载均衡算法

  1.  round robin: 对所有的backend轮循发送请求,算是最简单的方式了,也是默认的分配方式;

  2. least connections(least_conn): 跟踪和backend当前的活跃连接数目,最少的连接数目说明这个backend负载最轻,将请求分配给他,这种方式会考虑到配置中给每个upstream分配的weight权重信息;

  3. least time(least_time): 请求会分配给响应最快和活跃连接数最少的backend;

  4. ip hash(ip_hash): 对请求来源ip地址计算hash值,ipv4会考虑前3个octet,ipv6会考虑所有的地址位,然后根据得到的hash值通过某种映射分配到backend;

  5. generic hash(hash): 以用户自定义资源(比如url)的方式计算hash值完成分配,其可选consistent关键字支持一致性hash特性;

六、基于dns的负载均衡

  通常现代的网络服务者一个域名会关连到多个主机,在进行dns查询的时候,默认情况下dns服务器会以round-robin形式以不同的顺序返回ip地址列表,因此天然将客户请求分配到不同的主机上去。不过这种方式含有固有的缺陷:dns不会检查主机和ip地址的可访问性,所以分配给客户端的ip不确保是可用的(google 404);dns的解析结果会在客户端、多个中间dns服务器不断的缓存,所以backend的分配不会那么的理想。