集群缩容

停用节点时,Hubble允许节点完成运行中的请求,拒绝任何新请求,并将所有范围副本和范围租约转移到该节点之外,以便可以安全地将其关闭。

注意事项 在停用某个节点之前,请确保其他节点可用于从该节点接管分片副本。如果没有其他可用节点,则停用过程将无限期地挂起。 当前版本节点停用后将永久删除,不可以重新启用。 当退役多个节点时候,建议单独退役节点,防止分片副本接管过程中出现问题。

退役单个活动节点(安全模式)

前提条件

为确保您的群集可以充分处理停用节点:

  • 一次仅停用一个节点,并且在停用每个节点之前,请确认没有重复不足或不可用的分片。

  • 如果您有一个正在挂起的停用节点,则可以重新启用该节点。

  • 如果可能,请保持节点运行而不是杀死它,因为挂起的停用过程可能导致问题,甚至数据丢失。

  • 确认有足够的节点来接管您要删除的节点的副本。请参阅上面的一些示例方案。

步骤 1:检查节点

展示所有节点状态:

hubble node status  --all  --certs-dir=certs --host=<any address of nodes>

参考以上语句

hubble node status  --all --certs-dir=certs  --host=hubble01:15432
  id | address  | is_available | is_live | is_decommissioning | membership| is_draining
+----+----------+ --------------+---------+
   1 | h3:26257 |  true         | true    |        true       |  active   |    false
   2 | h2:26257 |  true         | true    |        true       |  active   |    false
   3 | h3:26257 |  true         | true    |        true       |  active   |    false
   4 | h4:26257 |  true         | true    |        true       |  active   |    false
   5 | h5:26257 |  true         | true    |        true       |  active   |    false  

步骤2:关闭需要停用的节点:

systemctl stop hubble.service

步骤3:退役节点

SSH到运行该节点的计算机,并使用--decommission命令:(<NODEID>换成数字5即可)

hubble node --decommission <NODEID> --certs-dir=certs --host=<address of node to remove>

参考以上语句

hubble node --decommission    5     --certs-dir=certs  --host=hubble05:15432

然后,您将在退役状态更改时将信息打印:

 id | is_live | replicas | is_decommissioning | is_draining  
+---+---------+----------+--------------------+-------------+
  5 |  true   |       73 |        true        |    false     
(1 row)

节点完全退役并停止后,您将看到一个确认:

 id | is_live | replicas | is_decommissioning | is_draining  
+---+---------+----------+--------------------+-------------+
  5 |  true   |        0 |        true        |    false     
(1 row)

No more data reported on target nodes. Please verify cluster health before removing the nodes.
ok

步骤4:停用后检查群集

检查集群状态

hubble node status --all --certs-dir=certs --host=<any address of nodes>

参考以上语句

hubble node status  --all --certs-dir=certs  --host=hubble01:15432
  id | address  | is_available| is_live | is_decommissioning|  membership  | is_draining
+----+----------+ ------------+---------+-------------------+--------------+-------------
   1 | h3:26257 |  true       | true    |        false      |  active      |    false
   2 | h2:26257 |  true       | true    |        false      |  active      |    false
   3 | h3:26257 |  true       | true    |        false      |  active      |    false
   4 | h4:26257 |  true       | true    |        false      |  active      |    false
(4 rows)

检查集群decommission状态:

hubble node status --decommission  --certs-dir=certs --host=<any address of nodes>

参考以上语句

hubble node status  --decommission --certs-dir=certs  --host=hubble01:15432
id | address  | is_available| is_live | is_decommissioning|  membership  | is_draining
+----+----------+ ------------+---------+-------------------+--------------+-------------
   1 | h3:26257 |  true       | true    |        false      |  active      |    false
   2 | h2:26257 |  true       | true    |        false      |  active      |    false
   3 | h3:26257 |  true       | true    |        false      |  active      |    false
   4 | h4:26257 |  true       | true    |        false      |  active      |    false
   5 | h5:26257 |  false      | false   |        true       |decommissioned|    false  
(5 rows)

注意: id=5 的节点is_availableis_liveis_decommissioningmembership值与其他节点的不同