Hologres自V4.0版本起,针对计算组型实例,支持Multi-cluster与自动弹性扩展能力。一个计算组可以扩展出多个Cluster,并根据负载情况自动扩展Cluster数量,以满足计算组内部的高并发请求场景与资源隔离需求。
架构原理
如果未开启Multi-cluster,一个计算组的所有计算资源均归属同一Cluster。发送到该计算组的请求将共享该部分计算资源。未开启Multi-cluster时,计算组实例架构请参见计算组实例架构。
如果开启了Multi-cluster,一个计算组中将创建多个Cluster,Cluster之间计算资源物理隔离。发送到该计算组的请求将由接入节点FE自动负载均衡调度至某个Cluster中执行。
如果在Multi-cluster的基础上,进一步开启自动弹性功能,计算组将根据自身负载情况(资源水位情况、队列排队情况),在负载高时自动调度弹性计算资源,拉起新Cluster,以应对更高并发负载;在负载低时自动释放弹性Cluster,以降低成本。
适用场景
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弹性资源。
计费说明
实例预留资源:即计算组实例独享计算资源,仍按实例付费模式(包年包月/按量付费)付费。
自动弹性计算资源:实例的计算组通过自动弹性功能额外弹出的计算资源。计费公式为:
费用 = 实例实际弹出弹性资源量(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。
操作入口
登录Hologres管理控制台,在顶部菜单栏左侧,选择相应的地域。
在左侧导航栏选择实例列表,单击目标实例ID进入实例详情页。
在实例详情页的左侧导航栏单击计算组管理,并在右侧选择计算组自动弹性页签。
单击开启自动弹性,打开自动弹性开关,并配置最大Cluster数,单击保存即可生效。
使用示例
如上开启自动弹性后(单Cluster规格为32 CU,预留Cluster数为1,最大Cluster数为4),可参考如下步骤验证自动弹性能力(以PG原生性能压测工具pgbench为例)。
在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;
在压测服务器上创建压测SQL文件
select.sql
,并写入如下SQL:EXPLAIN ANALYZE SELECT * FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.col3 = tbl_2.col3 ORDER BY 1;
在压测服务器上将密码设置为环境变量。
export PGPASSWORD='<AccessKey_Secret>'
执行如下压测命令,参数配置详情请参见连接Hologres并开发。
pgbench -c 30 \ -j 30 \ -f select.sql \ -d <Database> \ -U <AccessKey_ID> \ -h <Endpoint> \ -p <Port> \ -T 1800
压测期间,计算组的监控指标如下图:
Cluster CPU使用率:
Cluster 1持续负载高,触发自动弹性(位置1),增加1个Cluster。
压测完成,2个Cluster负载低,触发自动弹性(位置2),减少1个Cluster。
计算组CPU使用率:
自动弹性增加Cluster前,计算组CPU使用率持续超过85%。
增加Cluster后,计算组整体CPU使用率下降至70%附近。
监控告警
监控指标
您可在Hologres管控台的监控指标中,查看如下指标,如有需要,可为其配置相应告警规则,详情请参见Hologres管控台的监控指标。
Cluster CPU使用率
Cluster内存使用率
计算组自动弹性弹出Core数
弹性事件执行日志
进入计算组管理页面,单击弹性事件执行日志页签。
选择自动弹性的时间范围,可查看过去的弹性事件执行情况,包括执行时间、计算组、执行状态、事件类型、预留Cluster数和目标Cluster数。
云监控事件
Hologres自动弹性实际执行横向扩展Cluster数的事件,均会记录到云监控。
进入云监控事件中心,在系统事件页面的事件监控区域选择产品Hologres,即可监控到自动弹性变配事件。其中:
Instance:Warehouse:AutoElastic:Start
:为计算组自动弹性开始事件。Instance:Warehouse:AutoElastic:Finish
:为计算组自动弹性完成事件。Instance:Warehouse:AutoElastic:Failed
:为计算组自动弹性失败事件。
您可基于云监控事件,进一步配置通知、告警等操作,详情请参见使用系统事件报警。
以自动弹性增加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数扩展操作,均会记录到操作审计中。详情请参见事件审计日志。