问答-服务器集群负载均衡原理?
当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展,使用集群和负载均衡提高整个系统的处理能力。
而我们讨论的负载均衡一般分为两种,一种是基于DNS,另一种基于IP报文。
利用DNS实现负载均衡,就是在DNS服务器配置多个A记录,不同的DNS请求会解析到不同的IP地址。大型网站一般使用DNS作为第一级负载均衡。
缺点是DNS生效时间略长,扩展性差。
基于IP的负载均衡,早期比较有代表性并且被大量使用的的就是LVS了。卖二手手机靓号平台原理是LVS在Linux内核态获取到IP报文后,根据特定的负载均衡算法将IP报文转发到整个集群的某台服务器中去。
缺点是LVS的性能依赖Linux内核的网络性能,但Linux内核的网络路径过长导致了大量开销,使得LVS单机性能较低。
那么有没有更好的负载均衡技术呢?当然有。
Google于2016年3月最新公布的负载均衡Maglev就在此列。
Maglev是谷歌为自己的数据中心研发的解决方案,并于2008开始用于生产环境。在第十三届网络系统设计与实现USENIX研讨会(NSDI ‘16)上, 来自谷歌、加州大学洛杉矶分校、SpaceX公司的工程师们分享了这一商用服务器负载均衡器Maglev的详细信息。Maglev安装后不需要预热5秒内就能应付每秒100万次请求令人惊叹不已。在谷歌的性能基准测试中,Maglev实例运行在一个8核CPU下,网络吞吐率上限为12M PPS(数据包每秒),如果Maglev使用Linux内核网络堆栈则速度会小于4M PPS。
无独有偶,国内云服务商 UCloud 进一步迭代了负载均衡产品——Vortex,成功地提升了单机性能。在技术实现上,UCloud Vortex与Google Maglev颇为相似。以一台普通性价比的x86 1U服务器为例,Vortex可以实现吞吐量达14M PPS(10G, 64字节线速),新建连接200k CPS以上,并发连接数达到3000万、10G线速的转发。
推荐阅读
-
Nginx+Tomcat+Https 服务器负载均衡配置实践方案详解
-
详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建
-
Nginx+Tomcat高性能负载均衡集群搭建教程
-
Nginx+Tomcat搭建高性能负载均衡集群的实现方法
-
Nginx配置实例-负载均衡实例:平均访问多台服务器
-
Nginx实现负载均衡时常用的分配服务器策略
-
Red Hat Linux,Apache2.0+Weblogic9.2负载均衡集群安装配置
-
用apache和tomcat搭建集群(负载均衡)
-
Centos 7.6配置nginx反向代理负载均衡集群
-
高可用负载均衡服务器实现(keepalived+haproxy)