负载均衡架构设计

1.系统扩展方向

场景:并发流量激增

  • 垂直扩展:

    提升单机硬件配置:cpu、内存、网卡、硬盘

    问题:摩尔定律,每隔18~24月,集成电路上可容纳元器件数目增加一倍,性能也将提升一倍,摩尔定律已经放缓。单机扩展性能有限,且成本会越来越高。

  • 水平扩展

    在系统能支持水平扩展的前提下,增加服务器数量,部署更多机器集群,能够带来无限的性能提升。

    网络分发:网络负载均衡器

    F5、LVS、Nginx、CDN

2.无限水平扩展

2.1负载均衡器-Nginx

反向代理

stable version 稳定版本

Nginx一般做到10万并发,常用调优手法:

Nginx参数: 进程与CPU绑定worker_cpu_affinity(线程无需切换)、并发连接数、缓存区、超时时间、压缩、日志

​ worker_connections 并发连接数

接口响应时间:50ms 要求高 100ms 1s

操作系统网络参数:

能打开的最大文件数: net.ipv4.tcp_keepalive_time

ulimit -a 命令查看 open_files

too many file

tcp 缓冲区 /proc/sys/net/ipv4/tcp_mem、rmem、wmem

为什么一般做到10w并发,不继续做优化?

Nginx通常用作HTTP反向代理的场景,在网络模型中,HTTP属于第七层应用层协议。http请求的处理包括解析和封装http内容,要处理更多请求,需要更多的内存、CPU等等资源。高配置的硬件价格很高,通常组成Nginx集群来获取更高的处理能力。

Nginx单机扛不住

使用nginx集群

2.2负载均衡器-LVS

Nginx集群使用LVS做分发

核心理念:原本是请求LVS服务器的数据包,被lvs软件篡改了数据包的目的地,将流量转移到了Nginx所在的机器IP,从而实现负载均衡。

LVS+keepalived 高可用、双机热备

2.3nginx的比较

LVS性能比Nginx强,能支持更高的并发量,lvs的功能没有nginx强大。

lvs比nginx快原因:网络第四层所使用的协议(如tcp)内容比http简单,解析和组装消耗的CPU、内存等资源比nginx低

2.4硬件设备,F5

华为、思科、浪潮、F5

LVS集群,使用F5做负载均衡

2.5服务端上限

Nginx支持 1w~10w并发

LVS支持10w~50w并发

F5支持200w~1000w并发

2.6 DNS-无限水平扩展的终极奥秘

DNS域名系统,Domain Name System 万维网上作为域名和ip地址相互映射的一个分布式数据库,服务商提供的域名解析功能,同一个域名多个IP

DNS + Nginx + java (比较多)

F5 + java

F5 + Nginx + java

3.常用架构图

g4J1hv.png

(Nginx支持 1w~10w并发

LVS支持10w~50w并发

F5支持200w~1000w并发)

F5: 专业硬件实现

LVS:工作在网络四层,服务器内核集成

Nginx:工作在网络七层,软件实现


   转载规则


《负载均衡架构设计》 keyj 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Redis Redis
1. Redis基础1.1 Redis介绍 Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的API。 本质是客户端-服务端应用软件程序。 特点是使用简单,性能强悍、功能
2019-07-04 keyj
下一篇 
RabbitMQ RabbitMQ
RabbitMQ中有虚拟机、交换机、绑定、队列等概念。 其中交换机类型有四种,分别是Direct exchange、Fanout exchange 、Topic exchange、Headers exchange 参考:https://w
2019-06-28 keyj
  目录