多节点OpenStack Charms 部署指南0.0.1.dev303--20--控制器高可用性

参考文档:

Controller high availability

为了确保已部署应用程序的高可用性,控制器本身必须具有高可用性。这就需要创建其他控制器,所有这些控制器自然都位于“控制器”模型内。初始控制器被称为主控制器,如果它与集群对等方失去连接,则会进行自动故障转移。

有关应用程序方面的信息,请参阅应用程序高可用性

概述

控制器HA使用juju enable-ha命令进行管理。它通过确保集群具有必需数量的控制器来实现。缺省情况下,此数字为三,但是-n开关可用于更改该数字。因此,此命令既可以启用HA,也可以补偿任何丢失的控制器,就像启用HA然后删除一个或多个控制器的情况一样。

设置控制器后,API服务器代码将与MongoDB数据库一起安装。

控制器的数量必须为奇数,以便主机可以在其对等主机之间“投票”。成员数偶数的群集将导致随机成员变为非活动状态。后一个系统将成为“热备用”系统,并在其他成员发生故障时自动变为活动状态。此外,由于HA上下文中基础数据库的限制,该数字不能超过7。所有这些意味着一个集群只能具有三个,五个或七个活动成员。

Juju客户和代理与群集中的任何控制器进行对话。这意味着控制器(API)级别的处理是分布式的。但是,在任何给定时间只有一个主数据库,并且所有控制器都将其写入。因此,“主”实际上是指基础数据库。

启用控制器HA

要启用控制器HA,只需调用enable-ha命令:

juju enable-ha

由于未请求特定数量的群集计算机,因此使用默认的三台。因此,我们希望出现两个新的控制器。实际上,以上命令的输出反映了这一点:

maintaining machines: 0
adding machines: 1, 2

我们还可以查询“控制器”模型中的机器:

juju machines -m controller

输出应显示正在配置的两台新计算机:

Machine  State    DNS            Inst id              Series  AZ          Message
0        started  54.166.164.0   i-04790c2414e4c8e80  xenial  us-east-1a  running
1        pending  54.145.192.13  i-071660e9ce3c3cee5  xenial  us-east-1c  running
2        pending  54.80.176.66   i-0b36284d1ebb816cf  xenial  us-east-1a  running

由于已经存在三个控制器,因此再次调用juju enable-ha将没有任何效果。
使用juju controllers --refresh刷新控制器列表显示HA级别为3:

Controller  Model    User   Access     Cloud/Region         Models  Machines    HA  Version
aws-ha*     default  admin  superuser  aws/us-east-1             2         3     3  2.4-beta2

从集群中删除计算机

可以随时从群集中删除计算机。这样做的典型原因是:

  • 控制器行为异常,您的意图是将其替换为另一个控制器。

  • 您已决定不需要当前的HA级别,并且希望降低它。

    • 如果卸载控制器将导致偶数系统,则将充当“热备用”。
    • 如果卸下控制器会导致奇数个系统,则每台都将积极参与集群。

通过从模型中删除控制器的机器(juju remove-machine),可以从集群中删除控制器。

使用前面章节中的示例,这是我们将怎样删除机器“ 1”:

juju remove-machine -m controller 1

现在juju controllers --refresh 的输出为:

Controller  Model    User   Access     Cloud/Region         Models  Machines    HA  Version
aws-ha*     default  admin  superuser  aws/us-east-1             2         2   1/2  2.4-beta2

现在,该集群中只有一个活动控制器(和一个备用控制器)(即,两个活动控制器中的一个处于活动状态)。请注意,这种情况应尽快纠正。

将计算机添加到集群

使用enable-ha命令可达到所需的控制器数量(即HA级别)。

在我们正在进行的示例中,我们原来的3成员集群现在有两台计算机。我们可以通过再次发出juju enable-ha将其恢复到三个,但是如果我们决定将其设置为5个成员集群,则可以执行以下操作:

juju enable-ha -n 5

这将导致再生成三个控制器(2 + 3 = 5)。

juju controllers --refresh的输出为:

Controller  Model    User   Access     Cloud/Region         Models  Machines    HA  Version
aws-ha*     default  admin  superuser  aws/us-east-1             2         5     5  2.4-beta2

查看扩展控制器HA信息

可以从show-controller命令获取有关控制器HA的扩展信息:

juju show-controller

下面列出了我们的5成员集群的部分输出:
 ...
 ...
 controller-machines:
    "0":
      instance-id: i-04790c2414e4c8e80
      ha-status: ha-enabled
    "2":
      instance-id: i-0b36284d1ebb816cf
      ha-status: ha-enabled
    "3":
      instance-id: i-09ff42ba5fb9429b0
      ha-status: ha-enabled
    "4":
      instance-id: i-098222dad56cbe9a0
      ha-status: ha-enabled
    "5":
      instance-id: i-0613fb1fa8346de8a
      ha-status: ha-enabled
  models:
    controller:
      uuid: e8c4d910-8818-4a8a-8839-25766a1875d3
      machine-count: 5
      core-count: 5
  ...
  ...

此处,计算机数量是“控制器”模型中的计算机总数,而核心数量是控制器计算机的数量。如果成员处于活动状态,则密钥状态会显示为“ ha-enabled”(已启用),如果成员处于热备用模式,则状态为“ ha-pending”。

从控制器故障中恢复

在出现故障的控制器时,不会自动重新生成新的控制器,也不会删除故障的控制器。但是,只要原始成员数量的一半以上仍然可用,手动恢复就很简单:

  1. 卸下损坏的控制器(如上所述)。
  2. 添加新的控制器(如上所述)。

在添加新控制器之前,必须先删除控制器,因为enable-ha命令不会检查故障。它只是确保存在成员总数。

在不幸的情况下,如果存在可用的工作控制器数量不足,则必须从备份中还原。请参阅备份和还原Juju以了解其工作原理。

如果控制器进入“down”状态,则认为该控制器发生故障。可以通过将状态命令应用于“控制器”模型来对其进行监视:

juju status -m controller

此输出表明,在机器“ 3”上运行的控制器已失去与集群其余部分的连接:

Machine  State    DNS             Inst id              Series  AZ          Message
0        started  54.166.164.0    i-04790c2414e4c8e80  xenial  us-east-1a  running
2        started  54.80.176.66    i-0b36284d1ebb816cf  xenial  us-east-1a  running
3        down     54.157.161.147  i-09ff42ba5fb9429b0  xenial  us-east-1e  running
4        started  54.227.91.241   i-098222dad56cbe9a0  xenial  us-east-1d  running
5        started  174.129.90.47   i-0613fb1fa8346de8a  xenial  us-east-1c  running

但是,juju控制器的输出中的“ HA”列–refresh仍然像以前一样显示为“ 5”:

Controller  Model    User   Access     Cloud/Region         Models  Machines    HA  Version
aws-ha*     default  admin  superuser  aws/us-east-1             2         5     5  2.4-beta2

要从此降级的群集中恢复,请执行以下操作:

juju remove-machine -m controller 3
juju enable-ha -n 5

控制器HA和日志记录

所有Juju计算机都将其日志发送到HA群集中的控制器。每个控制器依次将这些日志发送到MongoDB数据库,该数据库在各个控制器之间是同步的。用户通常使用juju debug-log命令读取日志信息。请参阅Juju日志。

猜你喜欢

转载自blog.csdn.net/m0_49212388/article/details/115318074