LVS 调度器 - 集群的概念和分类

LVS属于 LB 集群现负载均衡的功能,将用户的请求按照调度算法转发在后端服务器上。

LB 集群是load balance 集群的简写,翻译成中文就是负载均衡集群

1.2 系统提升性能的扩展

系统性能扩展

  • 系统性能扩展方式∶

    • Scale UP: 垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务

    • Scale Out: 水平扩展,向外扩展,增加设备,并行地运行多个服务调度分配问题,Cluster

  • 垂直扩展不再提及∶

    • 随着计算机性能的增长,其价格会成倍增长

    • 单台计算机的性能是有上限的,不可能无限制地垂直扩展

    • 多核CPU意味着即使是单台计算机也可以并行的。那么,为什么不一开始就并行化技术?

垂直扩展:

在当前的基础之上,不增加服务器的情况下来增强该服务器现在的性能。比如更新更好的硬件,换更好的性能就是物理上。

水平扩展:

当前服务器不能提供,我就将增加多台服务器提供服务。一台不行多加几台,有多个服务器同时对外提供服务。

1.3 集群的概念

Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统。而这个组成的系统成为集群,集群又分成三种类型的集群。

Linux Cluster类型:

  • LB集群:Load Balancing,实现负载均衡的功能,将用户的请求按照调度算法转发在后端服务器上。

  • HA高可用性集群:High Availiablity,高可用,SPOF(single Point Of failure 单点失败)

    • MTBF:Mean Time Between Failure 平均无故障时间

    • MTTR:Mean Time To Restoration( repair)平均恢复前时间

    • A=MTBF/(MTBF+MTTR) (0,1):99%,99.5%,99.9%,99.99%,99.999% 这个值越高越好

    • HPC高可用性计算集群:High-performance computing,高性能 www.top500.org

  • 分布式系统:

    • 分布式存储: Ceph,GlusterFS,FastDFS,MogileFS

    • 分布式计算:hadoop,Spark

在我们工作中主要用的LB集群和HA集群。

1.4 集群和分布式

集群:

同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的

分布式:

  • 一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。

  • 分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

  • 对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且一台服务器宕机了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败。

1.5 集群的设计原则

  • 可扩展性:集群的横向扩展能力

  • 可用性:无故障时间(SLA)

  • 性能:访问响应时间

  • 容量:单位时间内的最大并发吞吐量 (C1OK并发问题)

基础设施层面:

  • 提升硬件资源性能:从入口防火墙到后端web server均使用更高性能的硬件资源

  • 多域名:DNS 轮询A记录解析

  • 多入口:将A记录解析到多个公网IP入口

  • 多机房:同城+异地容灾

  • CDN(Content Delivery Network)—基于GSLB(Global Server Load Balance)实现全局负载均衡,如:DNS

业务层面:

  • 分层:安全层、负载层、静态层、动态层、(缓存层、存储层)持久化与非持久化

  • 分割:基于功能分割大业务为小服务

  • 分布式:对于特殊场景的业务,使用分布式计算

1.5.1 分布式

  • 分布式应用:服务按照功能拆分,使用微服务

  • 分布式静态资源:静态资源放在不同的存储集群上

  • 分布式数据和存储:使用key-value缓存系统

  • 分布式计算:对特殊业务使用分布式计算,比如 Hadoop 集群

1.6 集群的分类

LVS 的功能集中在负载均衡的集群上

Lvs 是内核级功能(达到几百万的并发)

LB Cluster的实现

  • 硬件: F5 Big-IP Citrix Netscaler A10A10

  • 软件:

    lvs : Linux Virtual Server,阿里四层 SLB (Server Load Balance) 使用 nginx: 支持七层调度,阿里七层SLB使用Tengine haproxy∶支持七层调度 ats : Apache Traffic Server , yahoo捐助给apache perlbal : Perl编写 pound

基于工作的协议层次划分:

  • 传输层(通用):DPORT

    • LVS:

    • nginx:stream

    • haproxy:mode tcp

  • 应用层(专用):针对特定协议,自定义的请求模型分类

    • proxy server:

    • http:nginx, httpd, haproxy(mode http), …

    • fastcgi:nginx, httpd, …

    • mysql:mysql-proxy, …

会话保持:负载均衡

LVS是 IOS 的下四层进行调度管理

(1) session sticky:同一用户调度固定服务器

Source IP:LVS sh算法(对某一特定服务而言)

Cookie

(2) session replication:每台服务器拥有全部session

session multicast cluster

(3) session server:专门的session服务器

Memcached,Redis

1.6.1 HA 集群实现方案

Lvs调度器存在单点失败的问题。所以需要keepalived软件来解决Lvs单点四百的问题。

Lvs和keepalived这两个软件是天生一对。

  • keepalived:vrrp协议

  • Ais:应用接口规范

    • heartbeat

    • cman+rgmanager(RHCS)

    • coresync_pacemaker

点赞