负载均衡LB

dns、lvs、haproxy、keepalived、nginx

负载均衡系统,通常用于将任务(比如用户请求)分配到多个服务器处理,以提高网站、应用或者数据库的性能和可靠性。

负载均衡(即任务分配器)分类

  • dns负载均衡:按地域负载均衡到不同的数据中心 或 同机房多ip入口
  • 硬件负载均衡:同一中心负载均衡到各个集群 F5(2-800w/s 特贵) A10(...)
  • 软件负载均衡:集群内负载均衡到不同节点 lvs(4层 80w/s) nginx(7层 5w/s 虽然nginx现在支持4层但用的还不多线上慎用) 32核48G 

多级导流:1级dns 2级f5 3级lvs 4级nginx

业务层到DB层的负载均衡:(分库分表后,需要将id映射到对应的库和表)

常用方案

网关负载均衡:ticket service / httpDNS

web端:nginx / haproxy + keepalived 

db访问: lvs + keepalived 

keepalived:是基于VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)的一款高可用软件。使用一个虚拟IP地址对外提供服务,当主服务器出现故障时,虚拟IP地址会自动漂移到备份服务器。

负载均衡算法

1.轮询/加权轮询

2.负载最低优先(高复杂度,这么做的少)

3.性能最优优先(高复杂度,这么做的少)

4.hash(高并发下将有共性的请求hash到一个节点上 实现分而治之)

集群规模估算

从dau出发,结合业务的特点,一般把日活转换为pv,例如平均每个用户会访问100个页面;

dau*100/86400计算出来总的qps和tps;

而后再根据通常规律*3计算出qps和tps的峰值;

加上一定的未来发展空间和高可用冗余*2~4;

结合单机能够支撑的qps和tps量,就可以计算出来整个集群的规模;

有了这些数据就可以制定出比较合理的负载均衡的策略,而不是无的放矢,凭空猜测。

============================================================

DNS

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

优点:

简单、实施容易、成本低、适用于大多数TCP/IP应用;

缺点:

1、 负载分配不均匀,DNS服务器将Http请求平均地分配到后台的Web服务器上,而不考虑每个Web服务器当前的负载情况;如果后台的Web服务器的配置和处理能力不同,最慢的Web服务器将成为系统的瓶颈,处理能力强的服务器不能充分发挥作用;

2、可靠性低,如果后台的某台Web服务器出现故障,DNS服务器仍然会把DNS请求分配到这台故障服务器上,导致不能响应客户端。

3、变更生效时间长,如果更改NDS有可能造成相当一部分客户不能享受Web服务,并且由于DNS缓存的原因,所造成的后果要持续相当长一段时间(一般DNS的刷新周期约为24小时)。

Nginx

Nginx负载均衡策略:

轮询、加权轮询、ip_hash、fair、url_hash 

1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,后端服务器分配的请求数基本一致,如果后端服务器“down掉”,能自动剔除。

2.加权轮询:根据权重来进行轮询,权重高的服务器分配的请求更多,主要适应于后端服务器性能不均的情况,如新老服务器混用。

3.ip_hash:每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,主要用于解决session的问题,如购物车类的应用。

4.fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配,能够最大化地平衡各后端服务器的压力,可以适用于后端服务器性能不均衡的情况,也可以防止某台后端服务器性能不足的情况下还继续接收同样多的请求从而造成雪崩效应。

5.url_hash:按访问URL的hash结果来分配请求,每个URL定向到同一个后端服务器,适用于后端服务器能够将URL的响应结果缓存的情况。

LVS(Linux Virtual Server)

LVS有三种常见的负载均衡的模式:NAT模式(网络地址转换模式)、IP TUN(隧道模式)、DR(知己路由模式)。阿里云还提供了两种模式:full NAT模式、ENAT模式

术语

  • DS:Director Server,指的是前端负载均衡器
  • RS:Real Server,后端真实的工作服务器
  • VIP:Virtual Ip Address,向外部直接面向用户请求,作为用户请求的目标的IP地址
  • DIP:Director Server IP,主要用于和内部主机通讯的IP地址
  • RIP:Real Server IP,后端服务器的IP地址
  • CIP:Client IP,客户端主机IP地址

NAT模式(NetWork Address Translation-网络地址转换)

客户发出请求,发送请求给链接调度器的VIP,调度器将请求报文中的目标Ip地址改为RIP。这样服务器RealServer将请求的内容发给调度器,调度器再将报文中的源IP地址改为VIP。

  • 为什么NAT要求lvs和RS在同一个vlan?
    因为回复包必须经过lvs再次修改sip为vip,client才认,如果回复包的sip不是client包请求的dip(也就是vip),那么这个连接会被reset掉。如果LVS不是网关,因为回复包的dip是cip,那么可能从其它路由就走了,LVS没有机会修改回复包的sip

Keepalived

Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能,负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs),而高可用是通过VRRP协议实现多台机器之间的故障转移服务。

VRRP 全称Virtual Router Redundancy Protocol ,中文名为虚拟路由冗余协议 ,VRRP的出现就是为了解决静态踣甶的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。

HAProxy

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值