负载均衡技术

概述

使用场景

软件硬件

其他软件

Google Maglev

A Load Balancer on Commodity Servers,8-core CPU capped at 12M pps (packets per second). Maglev is not using the Linux kernel network stack which would slow it down to less than 4M pps 特性

美团MGW

仿照Maglev设计

淘宝Tengin

看名字,改自nginx

京东

使用nginx模块化机制二次开发,使用nginx缓存热数据

其他

DISQUS, GitHub, Imgur, Instagram,使用HA

分类

交换机到负载均衡器用ECMP

第四层传输层

第七层应用层

Apache, Lighttpd and nginx web servers 效率相对较低,需要对协议进行处理

DNS Load Balancing

为了保证跨IDC的负载均衡,如果是一个IDC内集群,或系统内部的负载均衡,没有必要

HAProxy vs nginx

两个开源软件其实很像,c开发,都是单进程设计,为了性能,大量采用异步方式,多核心使用的时候分master与worker进程。

性能nginx不如HA(实测,差不多)

ngix官方支持每秒5万并发,实际一般到每秒2万并发左右

HA官方10w并发

nginx对windows支持但不好

使用与调优

nginx

调优

worker_processes

配置使用的cpu数目和cpu绑定,无论作为代理还是web服务器,都需要根据机器的cpu信息进行配置。

worker_connections

events模块,配置表示每个工作进程的并发连接数,默认设置为1024,在events模块下。

keepalive

http_upstream_module 模块,Activates the cache for connections to upstream servers.

access_log

记录请求的log,默认是打开的,可以在相应模块中给指定关闭,例如http模块中关闭,但实测对性能影响并不大,关闭前最后经过压力测试验证。

HAproxy

事件驱动、单一进程模型

多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接

负载均衡算法

LVS

三种工作方式

NET 效率一般,从实现方式上看应该与nginx和HA的4层负载效率差不多(待实测)

DR 效率最高,企业中应用最多

Tun 限制较多,使用不多

参考

LB 负载均衡的层次结构
HAProxy vs nginx: Why you should NEVER use nginx for load balancing!
大型网站架构系列:负载均衡详解(下)
nginx文档
压力测试
MGW——美团点评高性能四层负载均衡
Maglev介绍
Maglev论文
Tngine
使用 LVS 实现负载均衡原理及安装配置详解

Table of Contents