华为云用户手册

  • 背景信息 Elasticsearch的ISM(Index State Management)是一个索引状态管理插件,支持通过索引使用期限、索引大小或文档数等信息的变化来自动触发周期性的管理操作。通过ISM插件可以自定义索引策略,实现自动处理索引的滚动或删除,以优化集群搜索性能或降低存储成本。ISM的使用流程: 创建生命周期策略:在Kibana创建索引的生命周期策略Policy。 索引关联生命周期策略:将索引关联上创建的生命周期策略,生成索引策略。 管理索引策略:支持对索引策略进行策略修改、重启和变更。 ISM更多功能请参见索引管理官方介绍。 创建的索引生命周期策略常用于以下场景: 通过索引生命周期管理实现Elasticsearch集群自动滚动索引 通过索引生命周期管理实现Elasticsearch集群存算分离
  • 创建生命周期策略 登录 云搜索服务 管理控制台。 在“集群管理”页面选择需要登录的集群,单击“操作”列中的“Kibana”,登录Kibana页面。 在菜单栏选择“IM”或“Index Management”,进入索引管理页面 。 单击“Create policy”,配置生命周期策略。 “Policy ID”:自定义策略名称。 “Define policy”:基于策略示例,配置自定义策略。 图1 配置策略 单击“Create”,完成策略的创建。
  • 背景信息 OpenSearch的ISM(Index State Management)是一个索引状态管理插件,支持通过索引使用期限、索引大小或文档数等信息的变化来自动触发周期性的管理操作。通过ISM插件可以自定义索引策略,实现自动处理索引的滚动或删除,以优化集群搜索性能或降低存储成本。ISM的使用流程: 创建生命周期策略:在Kibana创建索引的生命周期策略Policy。 索引关联生命周期策略:将索引关联上创建的生命周期策略,生成索引策略。 管理索引策略:支持对索引策略进行策略修改、重启和变更。 ISM更多功能请参见索引管理官方介绍。 创建的索引生命周期策略常用于以下场景:通过索引生命周期管理实现OpenSearch集群自动滚动索引
  • 管理索引策略 在OpenSearch Dashboard的“Index Management”页面,选择“Managed Indices”,进入索引策略管理列表。 此处会展示当前集群已配置的索引策略。 在索引策略管理列表,管理策略。 当索引的策略状态异常时,可以勾选状态异常的索引,单击“Retry policy”,可以重试策略。 当需要更新索引的策略时,可以勾选索引,单击“Change policy”进入变更策略页面,更新策略后,单击“Change”变更策略。 当需要解除索引的策略时,可以勾选索引,单击“Remove policy”,在弹窗确认后单击“Remove”改索引将被解除策略。 具体使用可参考索引管理官方介绍。
  • 创建生命周期策略 登录 云搜索 服务管理控制台。 在“集群管理”页面选择需要登录的集群,单击“操作”列中的“Kibana”。 登录OpenSearch Dashboard,在左侧选择“Index Management”,进入索引管理页面 。 右侧单击Create policy,创建索引策略。在Configuration method对话框中,选择“JSON editor”,单击“Continue”进入创建索引策略页面。 “Policy ID”:自定义策略名称。 “Define policy”:基于策略示例,配置自定义策略。 图1 配置策略 单击Create完成索引策略的创建。
  • 约束限制 集群的节点存储容量只支持扩容不支持缩容,请基于业务量合理选择节点存储容量。 包周期集群不支持同时扩容“节点数量”和“节点存储容量”。 当一个集群包含的节点类型不同时,各节点类型支持的节点数量不同,扩容节点数量时请参考表2。 表2 集群的节点数量取值说明 一个集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 说明: ess:数据节点,即创建集群时必配的节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点。 ess-client:Client节点。 ess-cold:冷数据节点。
  • 场景描述 CSS 服务支持多种扩容场景,如表1所示。 表1 扩容场景 场景 描述 相关文档 增加节点数量和容量 只支持基于节点类型扩容集群的“节点数量”和“节点存储容量”。适用于如下场景: 当集群数据节点(ess)的写入与查询压力大、响应时间过长时,可以通过扩容数据节点的“节点存储容量”保证数据的持久性。如果因数据量过大或操作不当导致数据节点状态异常时,可以扩容“节点数量”保证集群的可用性。 冷数据节点(ess-cold)主要用于分担数据节点(ess)的压力,当发现冷数据有丢失的风险时,可以扩容冷数据节点的“节点存储容量”保证冷数据的持久性,同时也支持扩容节点个数保证集群的可用性。 扩容节点数量和节点存储容量 升级节点规格 只支持基于节点类型变更集群的“节点规格”。一般用于小规格变更为大规格,常用于如下场景: 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以升级Master节点(ess-master)的“节点规格”保证集群的正常使用。 当数据节点任务分发量、结果汇聚量过大时,可以升级Client节点(ess-client)的“节点规格”。 当数据的写入与查询突然变得缓慢时,可以升级数据节点(ess)的“节点规格”提高数据节点的查询与写入效率。 当存在冷数据查询缓慢时,可以升级冷数据节点(ess-cold)的“节点规格”提高对数据查询的效率。 变更Elasticsearch集群节点规格 增加节点类型 当集群本身没有Master节点(ess-master)和Client节点(ess-client)时,随着数据面业务增长,需要动态调整集群形态时,可以选择增加“Master节点”或“Client节点”。 添加Master或Client节点
  • 场景描述 表1 变更规格场景 场景 描述 约束限制 升级节点规格 基于某一节点类型变更集群的“节点规格”。变更规格过程中,会依次对节点进行关机,完成更改后再依次开机,是一个滚动的变更过程。 一般用于小规格变更为大规格,常用于如下场景: 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以升级Master节点的“节点规格”保证集群的正常使用。 当数据节点任务分发量、结果汇聚量过大时,可以升级Client节点的“节点规格”。 当数据的写入与查询突然变得缓慢时,可以升级数据节点的“节点规格”提高数据节点的查询与写入效率。 当存在冷数据查询缓慢时,可以升级冷数据节点的“节点规格”提高对数据查询的效率。 变更节点规格也支持将大规格更改为小规格,但是此变更会降低集群的处理性能,进而影响业务能力,请谨慎使用。 不支持同时修改节点规格和磁盘类型。 变更过程中,Kibana不可用。 变更磁盘类型 基于某一节点类型变更集群的节点存储类型。通过重建节点的方式删除原类型的磁盘,再挂载新类型的磁盘,实现更改节点的磁盘类型。 只有数据节点和冷数据节点支持变更磁盘类型,且数据节点和冷数据节点之和必须大于等于3。 本地盘不支持修改磁盘类型。 不支持同时修改节点规格和磁盘类型。 变更过程中,Kibana不可用。 在集群数据量比较大的情况下,变更节点规格耗时比较长,建议在业务低峰期更改节点规格,利于更快完成规格更改。
  • 日志文件介绍 Elasticsearch和OpenSearch集群备份的日志文件主要包括废弃操作日志、运行日志、慢索引日志、慢查询日志。 表3 日志文件类型 日志名称 描述 clustername_deprecation.log 弃用操作的日志记录。 clustername_index_indexing_slowlog.log 慢索引日志。 clustername_index_search_slowlog.log 慢索引查询日志。 clustername.log Elasticsearch运行日志。 clustername_access.log 接入日志。
  • 采集日志 日志采集可以实时将 CS S集群日志存放到本集群或其他同网络的集群中,方便通过Kibana进行日志搜索分析。 如果要使用日志采集功能,集群必须满足以下条件。当集群不满足要求时,建议先升级集群再启用日志采集。 集群版本是Elasticsearch 7.10.2、OpenSearch 1.3.6或OpenSearch 2.11.0。 集群的镜像版本号 ≥ 24.2.0。集群的镜像版本号可以在集群列表的“版本”列查看,如图所示。 图2 查看集群子版本号 登录云搜索服务管理控制台。 在“集群管理”页面,单击需要配置日志备份的集群名称,进入集群基本信息页面。 左侧导航栏,选择“日志管理”,在“日志采集开关”右侧单击开关,打开集群的日志采集功能。 如果页面上没有“日志采集开关”,则表示该集群不支持采集日志。 在“日志采集配置”弹窗中,完成参数配置。 表2 日志采集配置 参数 说明 索引前缀名称 设置采集的日志中索引名称的前缀,则日志采集的索引名称为“索引前缀名称+日志采集日期”,日志采集日期以天为单位。 索引前缀名称只支持数字、小写字母、下划线和中划线,支持1~128个字符。 保留周期 设置采集的日志的保留周期,单位为天,支持输入1~3650。当采集的日志超过保存周期时,日志将会被删除。 日志保存集群 设置采集的日志保存在哪个集群,支持选择“当前集群”和“其他集群”。 默认选择“当前集群”。当选择“其他集群”时,需要选择日志保存的目标集群,并进行集群网络联通行检查,只有在同一VPC网络下的集群才支持跨集群保存日志,且集群版本必须一致。 如果集群已经启用了日志采集功能,也可以单击右侧的编辑图标修改日志采集配置。 单击“确定”,开启集群日志采集开关。 当“状态”变成“运行中”时,表示已启动日志采集。 单击“访问Kibana”,登录集群,可以搜索查看日志。 单击“日志保存集群”处的集群名称,可以跳转到集群详情页面。 图3 日志采集 当需要关闭日志采集时,单击“日志采集开关”右侧的开关,在弹窗中单击“确定”,关闭日志采集。 日志采集关闭后,集群中已采集的日志不会被清空,仅当超过采集日志时设置的“保存周期”时才会被删除。
  • Logstash使用流程 表1 Logstash集群的使用流程 任务分类 操作 参考文档 使用 规划集群 在创建Logstash集群前,需要先完成集群规划。规划时,应考虑是否多可用区部署以提高集群的高可用性,合理配置集群的节点数量与规格,以确保集群的稳定性和性能。 Logstash集群规划建议 创建集群 基于集群规划,创建合适的Logstash集群。 创建Logstash集群 配置路由 当Logstash集群与数据源子网位于同一主网卡时,网络自动互通;如果不同,则需在Logstash集群的每个节点上配置指向源数据服务器IP的回程路由。 配置Logstash集群路由 配置Logstash迁移任务 通过Logstash集群的配置中心,可以创建并启动Logstash配置文件,以实现数据从不同数据源到目的端的迁移。 创建Logstash配置文件 启动Logstash迁移任务 运维 扩缩容 CSS服务提供灵活的扩容和缩容功能,支持增加节点数量、升级节点规格,以及随机缩容节点,以动态调整集群资源,适应不同业务需求并优化成本。 扩容Logstash集群 缩容Logstash集群 管理集群 CSS服务提供全面的集群管理功能,包括集群信息查看、标签管理、企业项目绑定、自定义CA证书上传等,旨在帮助用户高效、灵活地管理Logstash集群。 查看Logstash集群信息 设置Logstash集群标签 为Logstash集群绑定企业项目 管理Logstash集群的CA证书 强制重启Logstash集群 删除Logstash集群 监控与日志管理 CSS服务提供全面的监控和日志管理功能,包括集群、节点和Logstash管道监控指标、告警规则配置、日志备份与查看,帮助用户有效监控和分析Logstash集群,确保集群的稳定性。 CES 中Logstash集群支持的监控指标 使用CES监控Logstash集群 查询和管理Logstash集群日志 审计日志 通过 云审计 服务,用户可以记录和查询Logstash集群的关键操作事件,且操作记录在管理控制台保存最近7天,便于后续的审计和回溯。 查看Logstash集群审计日志 父主题: 使用Logstash迁移数据
  • 约束限制 集群的节点存储容量只支持扩容不支持缩容,请基于业务量合理选择节点存储容量。 包周期集群不支持同时扩容“节点数量”和“节点存储容量”。 当一个集群包含的节点类型不同时,各节点类型支持的节点数量不同,扩容节点数量时请参考表2。 表2 集群的节点数量取值说明 一个集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 说明: ess:数据节点,即创建集群时必配的节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点。 ess-client:Client节点。 ess-cold:冷数据节点。
  • 场景描述 CSS服务支持多种扩容场景,如表1所示。 表1 扩容场景 场景 描述 相关文档 增加节点数量和容量 只支持基于节点类型扩容集群的“节点数量”和“节点存储容量”。适用于如下场景: 当集群数据节点(ess)的写入与查询压力大、响应时间过长时,可以通过扩容数据节点的“节点存储容量”保证数据的持久性。如果因数据量过大或操作不当导致数据节点状态异常时,可以扩容“节点数量”保证集群的可用性。 冷数据节点(ess-cold)主要用于分担数据节点(ess)的压力,当发现冷数据有丢失的风险时,可以扩容冷数据节点的“节点存储容量”保证冷数据的持久性,同时也支持扩容节点个数保证集群的可用性。 扩容节点数量和节点存储容量 升级节点规格 只支持基于节点类型变更集群的“节点规格”。一般用于小规格变更为大规格,常用于如下场景: 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以升级Master节点(ess-master)的“节点规格”保证集群的正常使用。 当数据节点任务分发量、结果汇聚量过大时,可以升级Client节点(ess-client)的“节点规格”。 当数据的写入与查询突然变得缓慢时,可以升级数据节点(ess)的“节点规格”提高数据节点的查询与写入效率。 当存在冷数据查询缓慢时,可以升级冷数据节点(ess-cold)的“节点规格”提高对数据查询的效率。 变更OpenSearch集群节点规格 增加节点类型 当集群本身没有Master节点(ess-master)和Client节点(ess-client)时,随着数据面业务增长,需要动态调整集群形态时,可以选择增加“Master节点”或“Client节点”。 添加Master或Client节点
  • 开启访问日志记录到文件 开启访问日志记录到文件后,客户端访问集群节点,会记录为{集群名_access_log.log}文件,通过日志备份功能可以在OBS详细查看访问日志。 该功能一般用于定位问题,问题解决后,建议关闭此开关。 执行如下命令,开启访问日志记录到文件。 PUT /_cluster/settings { "persistent": { "flowcontrol.log.file.enabled": true } } 表9 访问日志记录到文件的配置项说明 参数 类型 说明 flowcontrol.log.file.enabled Boolean 是否将每个请求的日志详情记录到后台日志文件。 取值范围: true false(默认值) 执行如下命令,关闭访问日志记录到文件。 PUT /_cluster/settings { "persistent": { "flowcontrol.log.file.enabled": false } }
  • 开启并查看访问日志 执行如下命令,开启访问日志。 开启集群所有节点的访问日志 PUT /_access_log?duration_limit=30s&capacity_limit=1mb 开启集群中某一节点的访问日志 PUT /_access_log/{nodeId}?duration_limit=30s&capacity_limit=1mb “{nodeId}”为节点ID。 表6 访问日志的配置项说明 配置项 类型 说明 duration_limit String 访问日志记录时间。 取值范围:10~120 单位:s 默认值:30 capacity_limit String 访问日志记录大小。统计开启访问日志后记录的请求大小,当统计的大小大于该配置值,访问日志记录终止。 取值范围:1~5 单位:MB 默认值:1 “duration_limit”和“capacity_limit”只要有一个参数达到阈值,访问日志记录就会停止。 当所有参数指设置为“null”时,表示恢复配置默认值。 执行如下命令,查看访问日志。 查看集群所有节点的访问日志API GET /_access_log 查看集群中某一节点的访问日志API GET /_access_log/{nodeId} “{nodeId}”为节点ID。 响应示例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "css-flowcontroller", "nodes" : { "8x-ZHu-wTemBQwpcGivFKg" : { "name" : "css-flowcontroller-ess-esn-1-1", "host" : "10.0.0.98", "count" : 2, "access" : [ { "time" : "2021-02-23 02:09:50", "remote_address" : "/10.0.0.98:28191", "url" : "/_access/security/log?pretty", "method" : "GET", "content" : "" }, { "time" : "2021-02-23 02:09:52", "remote_address" : "/10.0.0.98:28193", "url" : "/_access/security/log?pretty", "method" : "GET", "content" : "" } ] } } } 表7 响应参数说明 参数名 说明 name 节点名称。 host 节点对应的IP地址。 count 统计周期内,访问节点的请求数量。 access 统计周期内,访问节点的请求详情。参数说明请参见表8。 表8 access 参数名 说明 time 记录请求时间。 remote_address 请求对应的源IP地址和端口。 url 请求的原始URL method 对应请求Path的方法。 content 对应请求的内容。 执行命令删除访问日志。 删除集群所有节点的访问日志API DELETE /_access_log 删除集群中某一节点的访问日志API DELETE /_access_log/{nodeId} “{nodeId}”为节点ID。
  • 开启一键断流 执行如下命令,开启一键断流。 PUT /_cluster/settings { "persistent": { "flowcontrol.break.enabled": true } } 执行如下命令,关闭一键断流。 PUT /_cluster/settings { "persistent": { "flowcontrol.break.enabled": false } }
  • 约束限制 2023年02月及之后创建的Elasticsearch 7.6.2和Elasticsearch 7.10.2集群仅支持流量控制2.0版本,之前创建Elasticsearch 7.6.2和Elasticsearch 7.10.2集群仅支持流量控制1.0版本。 开启流量控制功能会消耗部分节点性能。 开启流量控制会直接拒绝超过阈值的用户请求。 开启内存流控会消耗部分请求性能,开启内存流控会导致Kibana的部分search请求失败。 开启访问日志会影响集群性能。 内存流控是基于请求Path的流控,Path长度和个数不应该配置过多,否则影响集群性能。
  • 开启请求采样统计 执行如下命令,开启请求采样统计。 PUT _cluster/settings { "transient": { "flowcontrol.log.access.enabled": true } } 表4 请求采样统计的配置项说明 配置项 类型 说明 flowcontrol.log.access.enabled Boolean 请求采样统计开关,统计最近访问Elasticsearch集群的客户端IP地址及其请求数量,会统计bulk写入和search、msearch查询请求的个数。 取值范围: true false(默认值) flowcontrol.log.access.count Integer 统计最近IP地址访问集群的客户端来源个数。IP统计分为请求类型统计和日志记录开关。 取值范围:0-100 默认值:10 当所有参数指设置为“null”时,表示恢复配置默认值。 执行如下命令,关闭请求采样统计。 PUT /_cluster/settings { "persistent": { "flowcontrol.log.access.enabled": false } }
  • 查看流量控制信息 查看所有节点的流量控制情况 GET /_nodes/stats/filter/v2 查看所有节点的流量控制详细情况 GET /_nodes/stats/filter/v2?detail 查看某个具体节点的流量控制情况 GET /_nodes/{nodeId}/stats/filter/v2 “{nodeId}”为需要查看流量控制的节点ID。 响应示例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "css-xxxx", "nodes" : { "d3qnVIpPTtSoadkV0LQEkA" : { "name" : "css-xxxx-ess-esn-1-1", "host" : "192.168.x.x", "timestamp" : 1672236425112, "flow_control" : { "http" : { "current_connect" : 52, "rejected_concurrent" : 0, "rejected_rate" : 0, "rejected_black" : 0, "rejected_breaker" : 0 }, "access_items" : [ { "remote_address" : "10.0.0.x", "search_count" : 0, "bulk_count" : 0, "other_count" : 4 } ], "holding_requests" : 0 } } } } 表5 响应参数说明 参数名 说明 current_connect 节点实际的HTTP连接数据信息, 没有开启流控这个配置也会记录,等同于GET /_nodes/stats/http接口current_open值, 可以看到节点当前的客户端连接数。 rejected_concurrent HTTP流控开启生效,关闭后不清零,开启流控期间拒绝的并发连接数。 rejected_rate HTTP流控开启生效,关闭后不清零,开启流控期间拒绝的新建连接数。 rejected_black HTTP流控开启生效,关闭后不清零,配置黑名单拒绝的请求数。 rejected_breaker 一键断流开启,拒绝的新建连接数。 remote_address IP地址统计,基于配置值统计节点访问的IP地址和请求数量。 search_count 该客户端以_search、_msearch访问的次数。 bulk_count 该客户端以_bulk访问的次数。 other_count 该客户端其他请求的访问次数。
  • 场景描述 流量控制2.0提供节点级别的流量控制功能,可提供单个节点基于黑白名单的访问限制、HTTPS并发连接数限制、HTTP最大连接数限制,基于节点内存的客户端写入流量反压控制,一键断流能力。同时也提供节点访问IP统计和URL的统计能力。开启客户端写入流量反压控制功能,会在节点堆内存过大时阻止大请求涌入节点占用内存,避免节点崩溃,减少节点不可用的风险。 表1 流量控制策略 策略 描述 相关文档 HTTP/HTTPS流控 HTTP/HTTPS黑白名单设置IP和子网控制客户端IP访问,如果节点IP在黑名单中,则该客户端的连接将直接中断,节点不会处理任何请求。白名单规则优先于黑名单规则,如果客户端IP在黑白名单中都出现,客户端请求将不会被拒绝。 HTTP/HTTPS并发连接数流控通过限制节点每秒中的HTTP连接总数来限制节点流量。 HTTP/HTTPS新建连接数流控通过限制节点新建的连接数来限制节点流量。 开启HTTP/HTTPS节点流控 内存流控 基于节点堆内存使用量限制写入流量,将请求需要读取的内容反压在客户端,暂停请求的接收。同时尽力触发垃圾回收,按堆内存的空闲量继续读取请求。 开启内存流控 请求采样统计 可以记录客户端IP的访问和客户端的请求类型,用户可以基于统计值识别客户端IP的访问流量,分析当前客户端的写入和查询访问量。 开启请求采样统计 一键断流 可以切断节点的所有客户端连接,不包括Kibana访问和CSS后台运维、监控类接口。用于应对突发流量场景下的集群异常,达到快速恢复集群的目的。 开启一键断流 流量控制 提供单独的流量统计接口,记录当前客户端连接数以及客户端反压连接数,用户可以基于统计值评估流控配置阈值和衡量集群压力。 查看流量控制信息 访问日志 可以记录一段时间内节点接收的HTTP/HTTPS请求URL和Body,用户可以基于访问日志信息分析当前的流量压力。 开启并查看访问日志 访问日志记录 客户端访问集群节点,会记录为{集群名_access_log.log}访问日志文件,通过日志备份功能可以在OBS详细查看访问日志。 开启访问日志记录到文件
  • 开启内存流控 执行如下命令,开启内存流控。 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": true, "flowcontrol.memory.heap_limit": "80%" } } 表3 内存流控的配置项说明 配置项 类型 说明 flowcontrol.memory.enabled Boolean 内存流控开关,开启后持续监控内存使用情况。 取值范围: true false(默认值) flowcontrol.memory.heap_limit String 节点堆内存的阈值,限制节点全局堆内存的使用率,超过此值将进行流量反压。 取值范围:10%-100% 默认值:90% 说明: 默认值90%是一个比较保守的阈值,即堆内存大于90%使用量时会停止读取客户端超过64KB的大请求,直至堆内存下降。如堆内存下降到85%,会开始允许最多一次读取“5%×堆内存最大值”的客户端数据量。如果堆内存持续超过90%,则无法放开客户端连接的请求读取,此时会尝试触发GC算法进行垃圾回收,直到堆内存低于所设定的阈值。 日常使用时可以将“flowcontrol.memory.heap_limit”阈值设置为80%或以下,保证节点有一定的堆内存余量,供写入内存以外的行为使用,比如:Elasticsearch查询、Segment merge等。 flowcontrol.holding.in_flight_factor Float 反压释放因子,原理类似于熔断器“network.breaker.inflight_requests.overhead”参数。内存达到限制值时,该值越大反压越强,写入流量将受限。 取值范围:≥0.5 默认值:1.0 flowcontrol.holding.max TimeValue 每个请求最长的延迟时间,当延迟超过此值时可以设置断开该请求反压或断开请求链路。详见“flowcontrol.holding.max_strategy”配置。 取值范围:≥15s 默认值:60s flowcontrol.holding.max_strategy String 超过最大延迟时间后的运行策略。 取值范围: keep(默认值):如果堆内存仍在高位,选择继续反压 - 何时执行请求仍由服务器根据实时内存自主决定。 soft:如果堆内存仍在高位,也必须执行该请求。执行/拒绝权力交给inFlight熔断器。 hard:如果堆内存仍在高位,丢弃该请求,同时断开该请求的客户端连接。 flowcontrol.memory.once_free_max String 被暂停的请求队列一次性最大重新打开的内存,防止强压场景下短暂的低内存现象一次性冲挂集群。 取值范围:1%-50% 默认值:10% flowcontrol.memory.nudges_gc Boolean 写入压力过大时(1s检查一次反压连接池,所有现有连接均被阻塞无法放开新的写入请求),是否尽力触发垃圾回收,保证写入稳定性。取值: true(默认值) false 当所有参数指设置为“null”时,表示恢复配置默认值。 执行如下命令,关闭集群内存流控。 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": false } }
  • 场景描述 表1 变更规格场景 场景 描述 约束限制 升级节点规格 基于某一节点类型变更集群的“节点规格”。变更规格过程中,会依次对节点进行关机,完成更改后再依次开机,是一个滚动的变更过程。 一般用于小规格变更为大规格,常用于如下场景: 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以升级Master节点的“节点规格”保证集群的正常使用。 当数据节点任务分发量、结果汇聚量过大时,可以升级Client节点的“节点规格”。 当数据的写入与查询突然变得缓慢时,可以升级数据节点的“节点规格”提高数据节点的查询与写入效率。 当存在冷数据查询缓慢时,可以升级冷数据节点的“节点规格”提高对数据查询的效率。 变更节点规格也支持将大规格更改为小规格,但是此变更会降低集群的处理性能,进而影响业务能力,请谨慎使用。 不支持同时修改节点规格和磁盘类型。 变更过程中,Kibana不可用。 变更磁盘类型 基于某一节点类型变更集群的节点存储类型。通过重建节点的方式删除原类型的磁盘,再挂载新类型的磁盘,实现更改节点的磁盘类型。 只有数据节点和冷数据节点支持变更磁盘类型,且数据节点和冷数据节点之和必须大于等于3。 本地盘不支持修改磁盘类型。 不支持同时修改节点规格和磁盘类型。 变更过程中,Kibana不可用。 在集群数据量比较大的情况下,变更节点规格耗时比较长,建议在业务低峰期更改节点规格,利于更快完成规格更改。
  • 集群列表介绍 集群列表会展示当前账号下同一集群类型的所有集群。当集群数量较多时,会翻页显示,支持查看任何状态下的集群。 集群列表默认按时间顺序排列,时间最近的集群显示在最前端。 在集群列表页单击“导出”可以下载全量的集群列表信息。 表1 集群列表说明 参数 描述 名称/ID 展示集群的名称和ID。单击集群名称可进入集群“基本信息”页面,展现了集群的基本信息。集群ID是系统自动生成的,是集群在服务中的唯一标示。 集群状态 展示集群的运行状态。 可用:正常运行的集群。 创建中:正在创建中的集群。 处理中:重启中、扩容中、备份中或恢复中的集群。 异常:创建失败或不可用的集群。 说明: 当集群处于“不可用”状态时,支持删除集群,也支持将集群正常状态时创建的快照恢复至其他集群。但是无法扩容集群、访问Kibana、创建快照或将快照恢复至此集群。建议不要执行导入数据的操作,避免数据丢失。您可以查看监控或重启集群处理异常,当依旧执行失败时,请及时联系技术支持。 任务状态 展示重启集群、扩容集群、缩容集群等任务的状态。 版本 展示集群版本号和镜像版本号。 说明: 当集群的创建时间比较早时,数据库可能未记录其镜像信息,导致页面无法显示集群的镜像版本号。 当版本号下方显示“EOS”时,表示当前版本已经停止服务,集群存在较高风险,建议及时升级集群版本。 创建时间 展示集群的创建时间。 企业项目 展示集群所归属的企业项目。 内网访问地址 展示集群的内网访问地址和端口号,您可以使用此参数接入集群。集群有多个节点时,此处显示多个节点的内网访问地址和端口号。 计费模式 展示集群的计费模式,是“按需计费”还是“包年/包月”。 操作 展示集群可执行的操作入口,包含监控信息、重启、删除等其他更多操作。当某一操作无法执行时,按钮将置灰。
  • 步骤3:搜索数据 在OpenSearch集群中对数据进行全文检索和聚合结果显示。 全文检索 假设用户进入该电商网站,想要查找名称包含“春装牛仔裤”的商品信息,可以搜索“春装牛仔裤”。 在OpenSearch Dashboards执行如下搜索命令。 GET /my_store/_search { "query": {"match": { "productName": "春装牛仔裤" }} } 返回结果如下所示。 { "took" : 3, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4, "relation" : "eq" }, "max_score" : 1.7965372, "hits" : [ { "_index" : "my_store", "_type" : "_doc", "_id" : "9xf6VHIBfClt6SDjw7H5", "_score" : 1.7965372, "_source" : { "productName" : "2018春装新款牛仔裤女装", "size" : "M" } }, { "_index" : "my_store", "_type" : "_doc", "_id" : "-Bf6VHIBfClt6SDjw7H5", "_score" : 1.7965372, "_source" : { "productName" : "2018春装新款牛仔裤女装", "size" : "S" } }, { "_index" : "my_store", "_type" : "_doc", "_id" : "-Rf6VHIBfClt6SDjw7H5", "_score" : 0.5945667, "_source" : { "productName" : "2017春装新款休闲裤女装", "size" : "L" } }, { "_index" : "my_store", "_type" : "_doc", "_id" : "-hf6VHIBfClt6SDjw7H5", "_score" : 0.5945667, "_source" : { "productName" : "2017春装新款休闲裤女装", "size" : "S" } } ] } } OpenSearch支持IK分词,上面执行命令会将“春装牛仔裤”分词为“春装”和“牛仔裤”。 OpenSearch支持全文检索,上面执行命令会在所有商品信息中搜索包含“春装”或“牛仔裤”的商品信息。 OpenSearch与传统数据库不同,它能借助倒排索引在毫秒级返回结果。 OpenSearch支持评分排序,在上面返回结果中,前两条商品信息中同时出现了“春装”和“牛仔裤”,后两条商品信息中只出现了“春装”,所以前两条比后两条与检索关键词的匹配度更高,分数更高,排序也更靠前。 聚合结果显示 该电商网站可以提供聚合结果显示功能,例如: 对“春装”对应的产品按照尺码分类,统计不同尺码的数量。 在OpenSearch Dashboards执行如下聚合结果命令。 GET /my_store/_search { "query": { "match": { "productName": "春装" } }, "size": 0, "aggs": { "sizes": { "terms": { "field": "size" } } } } 返回结果如下所示。 { "took" : 3, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "sizes" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "S", "doc_count" : 2 }, { "key" : "L", "doc_count" : 1 }, { "key" : "M", "doc_count" : 1 } ] } } }
  • 场景描述 某女装品牌在网上经营电商业务,以前使用传统数据库来为用户提供商品搜索功能,但随着用户数量和业务的增长,使用传统数据库的弊端愈来愈明显。主要问题表现为响应速度慢、准确性低。为了改善用户体验从而避免用户流失,该电商网站开始使用云搜索服务为用户提供商品搜索功能,不仅解决了之前使用传统数据库产生的问题,而且实现了用户数量的增长。 假设该电商网站经营商品的数据如下所示: { "products":[ {"productName":"2017秋装新款文艺衬衫女装","size":"L"} {"productName":"2017秋装新款文艺衬衫女装","size":"M"} {"productName":"2017秋装新款文艺衬衫女装","size":"S"} {"productName":"2018春装新款牛仔裤女装","size":"M"} {"productName":"2018春装新款牛仔裤女装","size":"S"} {"productName":"2017春装新款休闲裤女装","size":"L"} {"productName":"2017春装新款休闲裤女装","size":"S"} ] }
  • 操作流程 以下是使用OpenSearch集群完成数据搜索的操作步骤。 开始迁移数据前,请务必按准备工作指导完成必要操作。 步骤1:创建集群:创建一个OpenSearch非安全集群用于搜索数据。 步骤2:导入数据:在OpenSearch Dashboards上使用开源Elasticsearch API导入数据。 步骤3:搜索数据:在OpenSearch集群中对数据进行全文检索和聚合结果显示。 步骤4:删除索引:当不再使用对应的索引数据时,可以删除对应索引节约资源。
  • 步骤2:导入数据 OpenSearch集群支持通过多种方式导入数据,本示例选择在OpenSearch Dashboards上使用开源Elasticsearch API导入数据。 在OpenSearch集群管理页面,选择已创建的“Sample-OSCluster”集群,单击操作列中的“Kibana”进入OpenSearch Dashboards控制台。 在OpenSearch Dashboards的左侧导航中选择“Dev Tools”,进入Console界面。 Console左侧区域为输入框,输入框右侧的三角形为执行命令按钮,Console右侧为结果输出区域。 图4 Console界面 在Console界面,执行如下命令创建索引“my_store”。 PUT /my_store { "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "productName": { "type": "text", "analyzer": "ik_smart" }, "size": { "type": "keyword" } } } } 返回结果如下所示。 { "acknowledged" : true, "shards_acknowledged" : true, "index" : "my_store" } 在Console界面,执行如下命令,将数据导入到“my_store”索引中。 POST /my_store/_doc/_bulk {"index":{}} {"productName":"2017秋装新款文艺衬衫女装","size":"L"} {"index":{}} {"productName":"2017秋装新款文艺衬衫女装","size":"M"} {"index":{}} {"productName":"2017秋装新款文艺衬衫女装","size":"S"} {"index":{}} {"productName":"2018春装新款牛仔裤女装","size":"M"} {"index":{}} {"productName":"2018春装新款牛仔裤女装","size":"S"} {"index":{}} {"productName":"2017春装新款休闲裤女装","size":"L"} {"index":{}} {"productName":"2017春装新款休闲裤女装","size":"S"} 当返回结果信息中“errors”字段的值为“false”时,表示导入数据成功。
  • 响应消息 表6 响应参数 参数名称 是否必选 参数类型 说明 id 否 String 批处理作业的ID。 appId 否 String 批处理作业的后台app ID。 name 否 String 创建时用户指定的批处理名称,不能超过128个字符。 owner 否 String 批处理作业所属用户。 proxyUser 否 String 批处理作业所属代理用户(资源租户)。 state 否 String 批处理作业的状态,详细说明请参见表7。 kind 否 String 批处理作业类型,只支持spark类型参数。 log 否 Array of strings 显示当前批处理作业的最后10条记录。 sc_type 否 String 计算资源类型。用户自定义时返回CUSTOMIZED。 cluster_name 否 String 批处理作业所在队列。 queue 是 String 用于指定队列,填写已创建 DLI 的队列名。 说明: 兼容“cluster_name”参数,即如果使用“cluster_name”指定队列仍然有效。 推荐使用“queue”参数,“queue”参数与“cluster_name”参数两者不能同时存在。 image 否 String 自定义镜像 。格式为:组织名/镜像名:镜像版本。 当用户设置“feature”为“custom”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用自定义的Spark镜像。关于如何使用自定义镜像,请参考《 数据湖探索 用户指南》。 create_time 否 Long 批处理作业的创建时间。是单位为“毫秒”的时间戳。 update_time 否 Long 批处理作业的更新时间。是单位为“毫秒”的时间戳。 duration 否 Long 作业运行时长,单位毫秒。 表7 批处理作业状态说明 参数名称 参数类型 说明 starting String 批处理作业正在启动。 running String 批处理作业正在执行任务。 dead String 批处理作业已退出。 success String 批处理作业执行成功。 recovering String 批处理作业正在恢复。
  • 请求示例 创建Spark作业,作业的Spark主类为“org.apache.spark.examples.SparkPi”,指定程序包batchTest/spark-examples_2.11-2.1.0.luxor.jar,并加载上传到DLI类型为jar的程序号和类型为files的资源包。 { "file": "batchTest/spark-examples_2.11-2.1.0.luxor.jar", "className": "org.apache.spark.examples.SparkPi", "sc_type": "A", "jars": ["demo-1.0.0.jar"], "files": ["count.txt"], "resources":[ {"name": "groupTest/testJar.jar", "type": "jar"}, {"name": "kafka-clients-0.10.0.0.jar", "type": "jar"}], "groups": [ {"name": "groupTestJar", "resources": [{"name": "testJar.jar", "type": "jar"}, {"name": "testJar1.jar", "type": "jar"}]}, {"name": "batchTest", "resources": [{"name": "luxor.jar", "type": "jar"}]}], "queue": " test", "name": "TestDemo4", "feature": "basic", "spark_version": "2.3.2" } 其中“batchTest/spark-examples_2.11-2.1.0.luxor.jar”已提前通过上传分组资源(废弃)接口上传。
  • 响应示例 { "id": "07a3e4e6-9a28-4e92-8d3f-9c538621a166", "appId": "", "name": "", "owner": "test1", "proxyUser": "", "state": "starting", "kind": "", "log": [], "sc_type": "CUSTOMIZED", "cluster_name": "aaa", "queue": "aaa", "image": "", "create_time": 1607589874156, "update_time": 1607589874156 }
共100000条