Multi-cluster与自动弹性(Beta)

HologresV4.0版本起,针对计算组型实例,支持Multi-cluster与自动弹性扩展能力。一个计算组可以扩展出多个Cluster,并根据负载情况自动扩展Cluster数量,以满足计算组内部的高并发请求场景与资源隔离需求。

架构原理

  • 如果未开启Multi-cluster,一个计算组的所有计算资源均归属同一Cluster。发送到该计算组的请求将共享该部分计算资源。未开启Multi-cluster时,计算组实例架构请参见计算组实例架构

  • 如果开启了Multi-cluster,一个计算组中将创建多个Cluster,Cluster之间计算资源物理隔离。发送到该计算组的请求将由接入节点FE自动负载均衡调度至某个Cluster中执行。

  • 如果在Multi-cluster的基础上,进一步开启自动弹性功能,计算组将根据自身负载情况(资源水位情况、队列排队情况),在负载高时自动调度弹性计算资源,拉起新Cluster,以应对更高并发负载;在负载低时自动释放弹性Cluster,以降低成本。

image

适用场景

Multi-cluster功能

  • 适用于高并发的中小查询请求场景,依托Cluster的负载隔离能力与FE的负载均衡调度,实现更高并发请求承载能力、请求自动分组隔离能力。

  • 不适合低并发的大任务场景,以架构原理中写入计算组2为例,其负责大数据量离线写入,需要在单个Cluster中使用更多计算资源,因此更适合使用计算组的纵向扩展能力,如手动扩容、分时弹性扩容。

自动弹性功能

自动弹性功能的适用场景如下:

  • 高并发的中小查询请求:同Multi-cluster的适用场景。

  • 请求峰值难以预测:如果可以预测,可通过手动调整Cluster数,或分时弹性扩容解决。

名词解释

Multi-cluster相关概念、实例与计算组级别计算资源的定义,请参见资源弹性概述

以如下实例资源使用情况为例:

  • 实例

    • 实例预留资源:64 CU,其中,

      • 已分配资源:32 CU,属于计算组init_warehouse的预留计算资源。

      • 未分配资源:32 CU,该资源可用于继续新建计算组,或增加计算组init_warehouse的预留计算资源。

    • 实例弹性资源:32 CU,为计算组init_warehouse使用弹性功能弹出的计算资源。

  • init_warehouse计算组:

    • 预留Cluster数:1个。

    • Cluster规格:32 CU。

    • 预留资源:32 CU(1*32)。

    • 当前Cluster数:2个,其中1个预留Cluster,1个弹性Cluster。

    • 弹性资源:32 CU,为自动弹性功能弹出计算资源。

    • 总计算资源:64 CU,其中32 CU预留资源,32 CU弹性资源。

image

计费说明

  • 实例预留资源:即计算组实例独享计算资源,仍按实例付费模式(包年包月/按量付费)付费。

  • 自动弹性计算资源:实例的计算组通过自动弹性功能额外弹出的计算资源。计费公式为:费用 = 实例实际弹出弹性资源量(CU*小时) * 资源单价,具体资源单价请参见计费概述

    说明
    • 系统每分钟均记录实例当前弹性资源使用情况,每小时完成用量计算、单位转换和该小时账单推送,并从账户中自动扣除费用。

    • 实例弹性资源与实例未分配资源不相关。即使实例预留资源中仍有未分配资源,自动弹性功能仍会额外弹出弹性计算资源,而不会使用实例未分配资源。

使用限制

  • Hologres V4.0及以上版本支持计算组Multi-cluster与自动弹性功能。

  • 仅支持计算组型实例,不支持Serverless型实例和通用型实例。

  • 支持地域

    • Multi-cluster功能:支持全部地域。

    • 自动弹性功能:

      地域

      自动弹性支持情况

      说明

      华东1(杭州)

      支持

      该地域处于公测期,请使用阿里云账号(主账号)填写表单,申请试用。

      华东2(上海)、华北2(北京)、华南1(深圳)、中国(香港)、新加坡、德国(法兰克福)、美国(硅谷)、美国(弗吉尼亚)、日本(东京)、马来西亚(吉隆坡)、印度尼西亚(雅加达)、华东2(上海)金融云、华北2(北京)政务云、华南1(深圳)金融云

      不支持

      无法申请试用。

注意事项

  • 使用Multi-cluster与自动弹性功能所需权限:

    • 需要使用阿里云账号,或被授予了AliyunHologresWarehouseFullAccess权限的RAM用户,该权限包含了Hologres管理控制台的只读权限和自动弹性功能的配置权限,授权方式请参见授予RAM用户权限

    • 需要账号拥有实例内部的Superuser权限,授权方式请参见授予RAM用户实例的开发权限

  • 计算组增加/减少Cluster数可能存在一定影响,详情请参见计算组管理

  • 对于同一计算组,不支持同时使用分时弹性、自动弹性两个功能。

  • 配置了自动弹性的计算组,仍支持在管控台完成全部计算组管理操作,如纵向扩/缩容、启动/停止、删除等。

Multi-cluster使用指南

支持通过修改计算组的“预留Cluster数”使用Multi-cluster功能。操作详情请参见计算组管理

自动弹性使用指南

支持对计算组开启自动弹性功能开关,实现在计算组预留Cluster数的基础上,根据计算组负载情况(资源水位情况、队列排队情况)自动扩展弹性Cluster。

操作入口

  1. 登录Hologres管理控制台,在顶部菜单栏左侧,选择相应的地域。

  2. 在左侧导航栏选择实例列表,单击目标实例ID进入实例详情页。

  3. 在实例详情页的左侧导航栏单击计算组管理,并在右侧选择计算组自动弹性页签。

  4. 单击开启自动弹性,打开自动弹性开关,并配置最大Cluster,单击保存即可生效。

image

使用示例

如上开启自动弹性后(单Cluster规格为32 CU,预留Cluster数为1,最大Cluster数为4),可参考如下步骤验证自动弹性能力(以PG原生性能压测工具pgbench为例)。

  1. Hologres中创建测试表并写入数据。

    CREATE TABLE tbl_1 (col1 int, col2 int, col3 text);
    CREATE TABLE tbl_2 (col1 int, col2 int, col3 text);
    INSERT INTO tbl_1 SELECT i, i+1, md5(random()::text) FROM generate_series (0, 500000) AS i;
    INSERT INTO tbl_2 SELECT i, i+1, md5(random()::text) FROM generate_series (0, 500000) AS i;
  2. 在压测服务器上创建压测SQL文件select.sql,并写入如下SQL:

    EXPLAIN ANALYZE SELECT * FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.col3 = tbl_2.col3 ORDER BY 1;
  3. 在压测服务器上将密码设置为环境变量。

    export PGPASSWORD='<AccessKey_Secret>'
  4. 执行如下压测命令,参数配置详情请参见连接Hologres并开发

    pgbench
    -c 30 \
    -j 30 \
    -f select.sql \
    -d <Database> \
    -U <AccessKey_ID> \
    -h <Endpoint> \
    -p <Port> \
    -T 1800

    压测期间,计算组的监控指标如下图:

    • Cluster CPU使用率:image

      • Cluster 1持续负载高,触发自动弹性(位置1),增加1Cluster。

      • 压测完成,2Cluster负载低,触发自动弹性(位置2),减少1Cluster。

    • 计算组CPU使用率:image

      • 自动弹性增加Cluster前,计算组CPU使用率持续超过85%。

      • 增加Cluster后,计算组整体CPU使用率下降至70%附近。

监控告警

监控指标

您可在Hologres管控台的监控指标中,查看如下指标,如有需要,可为其配置相应告警规则,详情请参见Hologres管控台的监控指标

  • Cluster CPU使用率

  • Cluster内存使用率

  • 计算组自动弹性弹出Core

弹性事件执行日志

  1. 进入计算组管理页面,单击弹性事件执行日志页签。

  2. 选择自动弹性的时间范围,可查看过去的弹性事件执行情况,包括执行时间、计算组、执行状态、事件类型、预留Cluster数和目标Cluster数。image

云监控事件

Hologres自动弹性实际执行横向扩展Cluster数的事件,均会记录到云监控。

  1. 进入云监控事件中心,在系统事件页面的事件监控区域选择产品Hologres,即可监控到自动弹性变配事件。其中:

    • Instance:Warehouse:AutoElastic:Start:为计算组自动弹性开始事件。

    • Instance:Warehouse:AutoElastic:Finish:为计算组自动弹性完成事件。

    • Instance:Warehouse:AutoElastic:Failed:为计算组自动弹性失败事件。

  2. 您可基于云监控事件,进一步配置通知、告警等操作,详情请参见使用系统事件报警

以自动弹性增加Cluster失败事件为例,云监控事件详情示例如下:

{
    "status": "Failed",
    "instanceName": "<instance_id>",
    "resourceId": "<instance_resource_id>",
    "content": {
        "AutoElasticCPU": <cpu_num>,
        "ScaleType": "ScaleOut",
        "ScheduleId": "xxxxxx",
        "WarehouseId": "<warehouse_id>",
        "WarehouseName": "<warehouse_name>" 
    },
    "product": "hologres",
    "time": 1722852008000,
    "level": "WARN",
    "regionId": "<region>",
    "id": "<event_id>",
    "groupId": "0",
    "name": "Instance:Warehouse:TimedElastic:Failed"
}

操作审计

Hologres管理控制台上执行的编辑自动弹性等操作,以及自动弹性实际执行Cluster数扩展操作,均会记录到操作审计中。详情请参见事件审计日志