为高可用RKE集群配置基础设施

概述

本教程旨在帮助您创建一个高可用性的 RKE 集群,可用于安装 Rancher 服务器。

注意:这些节点必须在同一区域。您可以将这些服务器放置在不同的可用性区域(数据中心)中。

要在高可用性 RKE 集群上安装 Rancher 管理服务器,我们建议设置以下基础设施。

  • 三个 Linux 节点,通常是虚拟机,在基础设施提供商中,如 Amazon 的 EC2、Google Compute Engine、Azure 或 vSphere。
    注意:在 Azure 中使用 Helm 安装 Rancher 时,请使用 L7 负载均衡器避免网络问题。请参考这里了解更多关于 Azure 负载均衡器限制的信息。
  • 一个负载均衡器,将前端流量引导到三个节点。
  • 一个 DNS 记录,将一个 URL 映射到负载均衡器。这将成为 Rancher 服务器的 URL,下游的 Kubernetes 集群需要到达它。

这些节点必须在同一个区域/数据中心。您可以将这些服务器放置在不同的可用性区域。

为什么需要三个节点?

在 RKE 集群中,Rancher 服务器数据存储在 etcd 上。这个 etcd 数据库运行在所有三个节点上。

etcd 数据库需要奇数的节点,这样它总能选出一个 leader,并占到 etcd 集群的大多数。如果 etcd 数据库不能选出一个 leader,etcd 就会脑裂,需要从备份中恢复集群。如果三个 etcd 节点中的一个节点失效,剩下的两个节点可以选出一个 leader,因为它们拥有 etcd 节点总数的多数。

步骤 1:配置 Linux 节点

确保你的节点满足操作系统、容器运行时、硬件和网络的一般安装要求。

关于设置 Linux 节点的一种方法的例子,请参考这个教程,在 Amazon EC2 中设置节点为实例。

步骤 2:配置负载均衡

您还需要设置一个负载均衡器,将流量引导到三个节点中任何一个节点上的 Rancher 副本。这将防止任何一个单一节点的中断导致与 Rancher 管理服务器的通信中断。

当 Kubernetes 在后面的步骤中得到设置时,RKE 工具将部署一个 NGINX Ingress 控制器。这个控制器将监听工人节点的 80 和 443 端口,回答指向特定主机名的流量。

当安装 Rancher 时(也在后面的步骤中),Rancher 系统会创建一个 Ingress 资源。该 Ingress 告诉 NGINX Ingress 控制器监听指向 Rancher 主机名的流量。NGINX Ingress 控制器在接收到指向 Rancher 主机名的流量时,会将该流量转发到集群中正在运行的 Rancher pod。

对于您的实施,请考虑您是否想要或需要使用第 4 层或第 7 层负载均衡器。

  • 4 层负载均衡器是两种选择中比较简单的一种,其中你是将 TCP 流量转发到你的节点上。我们建议将您的负载均衡器配置为第 4 层均衡器,将流量转发到 TCP/80 和 TCP/443 端口,再转发到 Rancher 管理集群节点。集群上的 Ingress 控制器将把 HTTP 流量重定向到 HTTPS,并在 TCP/443 端口上终止 SSL/TLS。Ingress 控制器将把 TCP/80 端口的流量转发到 Rancher 部署中的 Ingress pod。
  • 第 7 层负载均衡器比较复杂,但可以提供您可能需要的功能。例如,第 7 层负载均衡器能够在负载均衡器上处理 TLS 终止,而不是 Rancher 自己做 TLS 终止。如果你想在你的基础设施中集中处理 TLS 终止,这可能是有益的。第 7 层负载均衡还为您的负载均衡器提供了基于 HTTP 属性(如 Cookie 等)的决策能力,而第 4 层负载均衡器是无法关注这些属性的。如果你决定在第 7 层负载均衡器上终止 SSL/TLS 流量,在后面的步骤中安装 Rancher 时,你需要使用--set tls=external选项。更多信息请参考Rancher Helm Chart 选项

关于如何设置 NGINX 负载均衡器的例子,请参考本页

有关如何设置 Amazon ELB 网络负载均衡器的指南,请参阅本页

重要: 不要在安装后使用此负载均衡器(即 local集群 Ingress)来平衡 Rancher 以外的应用程序。与其他应用程序共享此 Ingress 可能会导致其他应用程序的 Ingress 配置重载后 Rancher 出现 websocket 错误。我们建议将local集群专用于 Rancher,而不是其他应用程序。

步骤 3:配置 DNS 记录

一旦您设置了负载均衡器,您将需要创建一个 DNS 记录来向该负载均衡器发送流量。

根据您的环境,这可能是指向 LB IP 的 A 记录,也可能是指向负载均衡器主机名的 CNAME。无论哪种情况,都要确保此记录是您打算让 Rancher 响应的主机名。

您需要在以后安装 Rancher 时指定此主机名,以后无法更改。确保您的决定是最终决定。

有关设置 DNS 记录以将域流量路由到 Amazon ELB 负载均衡器的操作指南,请参考 AWS 官方文档