水平伸缩

用例

自动/手动伸缩

openLooKeng集群可动态增减节点,支持伸缩场景。虽然资源提供者有责任确定何时进行伸缩以及在进行缩容时要删除哪些节点,但openLooKeng会确保这些更改正常生效。特别是,在进行缩容期间,删除节点会影响该节点上的工作负载。

对于自动伸缩场景,资源提供者可能希望基于以下因素做出决策:

  • 系统指标,如CPU、内存、I/O,或
  • 节点工作负载状态(参见下面的状态API)

例如,openLooKeng可以部署在Kubernetes环境中,使用HorizontalPodAutoscaler自动伸缩集群大小。你可以在hetu-samples模块的Kubernetes下找到一些示例部署数据。

节点维护

如果一个节点需要暂时从openLooKeng集群中分离出来,例如执行一些维护任务,可以先隔离该节点,然后再重新加入集群。

节点状态API

通过调用节点的状态API,可以获取该节点的工作负载信息。包括CPU和内存的分配和使用信息。返回值结构请参考io.prestosql.server.NodeStatus类。

例如,使用curl并假设节点地址为1.2.3.4:8080

$ curl http://1.2.3.4:8080/v1/status | jq

{
  "nodeId": "...",
  ...
  "memoryInfo": {
    "availableProcessors": ...,
    "totalNodeMemory": "...",
    ...
  },
  "processors": ...,
  "processCpuLoad": ...,
  "systemCpuLoad": ...,
  "heapUsed": ...,
  "heapAvailable": ...,
  "nonHeapUsed": ...
}

节点状态管理接口

可通过节点状态管理接口实现伸缩和隔离。

关闭节点

如果集群不再需要一个节点(例如:作为缩容操作的一部分),可以关闭该节点。

这样的过程是优雅的,因为

  • 集群不会向该节点分配新的工作负载,并且
  • 节点在关闭主进程之前会尝试完成所有现有的工作负载。

关闭过程不可逆。可以通过REST API将SHUTTING_DOWN状态放到节点的info/state端点来启动该过程。例如:

$ curl -X PUT -H "Content-Type: application/json" http://1.2.3.4:8080/v1/info/state \
    -d '"SHUTTING_DOWN"'

隔离节点

隔离是将节点暂时从集群中移除。

  • 隔离可以像关闭一样优雅:首先等待工作负载完成。处于等待状态的节点处于isolating状态。
  • 隔离也可以以不优雅的方式进行,直接进入isolated状态。
  • Isolatingisolated的节点不再被分配新的工作负载。

通过REST API修改节点的隔离状态,不同的隔离状态对应不同的目标状态。例如:

# To gracefully isolate a node
$ curl -X PUT -H "Content-Type: application/json" http://1.2.3.4:8080/v1/info/state \
    -d '"ISOLATING"'

# To isolate a node immediately
$ curl -X PUT -H "Content-Type: application/json" http://1.2.3.4:8080/v1/info/state \
    -d '"ISOLATED"'

# To make the node available again
$ curl -X PUT -H "Content-Type: application/json" http://1.2.3.4:8080/v1/info/state \
    -d '"ACTIVE"'

节点状态迁移

openLooKeng节点(协调节点或工作节点)有五种状态:

  • 不活动
  • 活动
  • 正在隔离
  • 已隔离
  • 正在关闭

关闭和隔离操作使节点在这些状态之间迁移:

node-state-transitions

  1. INACTIVE外,允许到当前状态的迁移,但是没有效果
  2. 请求隔离节点,不分配新的工作负载,等待已有工作负载完成
  3. 通过不分配新的工作负载来立即隔离节点。如有现有的工作负载,则被视为不重要,可以不完成
  4. 当节点处于ISOLATING状态且活动工作负载完成时自动转换
  5. 恢复节点正常运行
  6. 请求关闭节点,不分配新的工作负载,等待已有工作负载完成
  7. 当节点处于SHUTTING_DOWN状态且活动工作负载完成时自动转换

有奖捉虫

“有虫”文档片段

0/500

存在的问题

文档存在风险与错误

● 拼写,格式,无效链接等错误;

● 技术原理、功能、规格等描述和软件不一致,存在错误;

● 原理图、架构图等存在错误;

● 版本号不匹配:文档版本或内容描述和实际软件不一致;

● 对重要数据或系统存在风险的操作,缺少安全提示;

● 排版不美观,影响阅读;

内容描述不清晰

● 描述存在歧义;

● 图形、表格、文字等晦涩难懂;

● 逻辑不清晰,该分类、分项、分步骤的没有给出;

内容获取有困难

● 很难通过搜索引擎,openLooKeng官网,相关博客找到所需内容;

示例代码错误

● 命令、命令参数等错误;

● 命令无法执行或无法完成对应功能;

内容有缺失

● 关键步骤错误或缺失,无法指导用户完成任务,比如安装、配置、部署等;

● 逻辑不清晰,该分类、分项、分步骤的没有给出

● 图形、表格、文字等晦涩难懂

● 缺少必要的前提条件、注意事项等;

● 描述存在歧义

0/500

您对文档的总体满意度

非常不满意
非常满意

请问是什么原因让您参与到这个问题中

您的邮箱

创Issue赢奖品
根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
有奖捉虫