Title Date Modified Category
hacluster 2019-07-11 12:00 2019-07-11 12:00 distribution

1. HACluster

高可用集群(High Availability Cluster,HACluster)一般至少由两台以上服务器组成,这一组服务器作为一个整体向用户提供可靠的网络服务,其中的单台服务器就叫作节点(Node)。

高可用集群可以通过多种技术手段实现,而服务器集群是实现高可用最流行的方案之一。

集群负载在高可用集群中起着核心的控制作用,通过负载均衡软件实现故障检查和业务切换的自动化。

1.1. 高可用衡量标准

高可用(High Available,HA)集群通过系统的可靠性(reliability)和可维护性(maintainability)来衡量。

通常使用平均无故障时间(MTTF)来衡量系统的可靠性,用平均维修时间(MTTR)来衡量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%。

按照这个概念,具体的HA衡量标准如下:

  • 99%为一年宕机时间不超过4天
  • 99.9%为一年宕机时间不超过10小时
  • 99.99%为一年宕机时间不超过1小时
  • 99.999%为一年宕机时间不超过6分钟

1.2. 常见高可用方案

  • 共享存储
  • 故障转移
  • 负载均衡
  • 分布集群

1.3. 虚拟服务

在所有的已知的可伸缩网络服务结构中,它们都需要一个或者多个前端的负载调度器,通过调度器的调度实现虚拟服务。

在大部分网络服务中,客户端与服务端之间都有一层或者多层代理程序。这些代理程序便是一套完整的虚拟服务实现方案。这些方案可以在不同的层次上实现多台服务器的负载均衡。

目前,用集群解决网络服务性能问题的方法可分为以下四类:

  • DNS轮询,
  • 客户端调度,
  • 应用层负载调度
  • 和IP层负载调度。

1.3.1. DNS轮询

DNS轮询也称为RR-DNS(Round-Robin Domain Name System), DNS服务器会把域名轮流解析这组服务器的不同IP地址,从而将访问负载分到各台服务器上。这是它的基本工作原理,但实际上商用的DNS负载会更为复杂(成本更大),这里有以下三个明显的问题。

  • TTL问题
  • 负载压力问题
  • 系统扩展维护问题

鉴于以上这些问题,目前DNS轮询的方案一般只用于跨区域的负载调度场景,例如一定规模的集群中,通过DNS轮询使北方的用户访问北方的服务器,南方的用户访问南方的服务器,因为在跨区域的负载调度中,DNS轮询的成本最低。

1.3.2. 客户端调度

客户端调度的方式比较少见,也不具有普遍的适用性。

1.3.3. 应用层负载调度

应用层负载调度,又叫七层负载均衡,也叫反向代理负载均衡。

其结构基本上就是多台应用服务器通过高速的网络连接成一个集群系统,在前端有一个基于应用层的负载调度器。当用户访问请求到达调度器时,请求会提交给负载均衡调度器,它分析请求并根据各个应用服务器的负载情况,重写请求并发送到其中一台应用服务器,取得结果后,再返回给用户。

这种负载方案应用非常广泛,

当然他也存在一些问题。主要是系统处理开销较大,当请求到达负载均衡调度器,一直到处理结束,调度器需要进行四次从核心空间到用户空间或从用户空间到核心空间的上下文切换和内存复制;需要进行二次TCP连接,一次是从用户到调度器,另一次是从调度器到应用服务器;需要对请求进行分析和重写。这些处理都需要一定的CPU,内存和网络等资源。当服务规模扩增时,调度器本身可能会成为系统的瓶颈。

这种防范优点十分突出,自定义程度高,可以根据要求设计出满足各种场景的负载要求。

1.3.4. IP层负载调度

与应用层负载调度方案相比,IP层负载调度的可配置程度远不及前者,但是后者的效率确实是最高的,因此在很多企业中都愿意选择IP层负载调度方案。

1.4. 工具

  • Nginx
  • HA
  • LVS

2. 参考资料

2.1. books

  • 《容器云运维实战:Docker与Kubernetes集群》

results matching ""

    No results matching ""