linux负载均衡杂谈

假如架构中的主机拥有全量数据集,即使其中一台挂了,也不会导致离线,高可用(负载均衡集群)

假如架构中的各主机只拥有sharing,那我们谓之 分布式集群

硬件ctrix

F5-BIG-IP(一台动辄20w,40w,80w一买就是两台)

A10 A10

Array Redware

软件: httpd  nginx varnishi缓存代理服务器 lvs haproxy ats(Apache traffic server基于C)

perlbal web负载均衡程序(I/O前半段异步)事件驱动

基于工作层次划分:

传输层:lvs(不用监听套接字,400-500万个并发连接,但能达到百万级并发的站点有几个,不过除了负载均衡以外,没有其他更多功能了)、 haproxy(mode tcp这一模式可以模拟tcp层调度,支持应用层协议,tcp方面都工作在内核,可能承载3万左右并发/每秒,一天是86400秒,假如一个页面有40个链接, 能响应的pv就达到千万级别了,更别提上了cdn以后,很多请求实际轮不到后端来处理),lvs还是个入门级的负载均衡器,用不到,但几乎是企业必谈话题

应用层:haproxy,nginx,ats,perlbal(套接字工作程序,监听80端口)

假定这样一个使用场景,一个lvs负责n个mysql服务器的负载均衡调度(请求3306端口)

 lvs(linux virtual server)工作在传输层,任何请求在内核协议栈中必须理解 3306应该怎么处理,正常流程 netfilter-prelocating blah blah(anyway本来应该找注册了监听套接字的3306端口的服务,但是没找,直接甩给了后端的mysql服务器),这就要求建立能分析协议报文的负载均衡(据说lvs强于原来apt的dnet所以被linux收录进内核)

而真正提供服务的mysqlserver才是realserver,tcp二层交换设备叫交换机---就是一个负载均衡设备,它具备转发功能----就是一个转发器,接收来自一个主机或者多个主机对一个主机的访问,他也能把来自一个主机的很多请求分发到多个主机上去(只要目标不同),所以说他是个分发装备,但它是基于目标mac地址分发的,所以把它称作二层设备

路由器把报文做转发的时候,把ip作为转发地址 路由器是三层设备

lvs所在主机为四层设备,他根据请求报文的目标ip和端口做分发(也被称作layer4交换机或四层路由),根据负载均衡算法,从集群中挑选出一个主机作为请求的响应,依附于netfilter

有5个流向

 当

正常流程prerouting-input 

原文地址:https://www.cnblogs.com/saintdingspage/p/9977297.html