华为云用户手册

  • 切换可用区时长 切换可用区的时长估算公式如下: 变更时长(分钟)= 15(分钟)x 待切换的节点个数 + 数据迁移时长(分钟) 其中:15分钟为初始化等非数据迁移操作的基准耗时,是经验值。 数据迁移时长(分钟)= 待切换节点的数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)] 其中: 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。 以上公式为理想状态下的理论估算值,实际迁移速率受集群负载影响。
  • 查看切换任务 在切换可用区页面的“任务记录”列表,可以查看当前切换任务。 展开任务列表,单击“查看进度”查看详细的切换进度。 当“任务状态”为“失败”时,可以重试任务或者直接终止任务。 重试切换任务:在任务列表的操作列,单击“重试”,重新切换可用区。 终止切换任务:在任务列表的操作列,单击“终止”,结束切换可用区。 当任务终止后,如果原节点还未切换成功,可以通过替换Elasticsearch集群指定节点尝试恢复节点。 当部分节点已完成可用区(AZ)切换时,集群的可用区分布状态已发生改变。此时如果终止切换任务,系统可能无法基于原始参数重新下发指令,请避免在此状态下终止任务。
  • 变更影响 在切换集群可用区前,您需要了解以下关键影响和操作建议,以便合理规划变更,最小化业务影响。 性能影响 切换可用区不会中断业务,但是数据迁移会消耗IO性能,且切换过程中单节点下线可能影响集群性能。 建议在业务低峰期提高数据迁移速率以缩短任务耗时,并在业务高峰期前降低迁移速率以减轻对集群性能的影响。数据迁移速率由“indices.recovery.max_bytes_per_sec”参数决定,该参数值默认是“CPU核数 x 32MB”(如4核CPU默认128MB)。该参数取值范围为40MB至1000MB,可根据业务需求调整。 PUT /_cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "1000MB" } } 请求处理影响 节点替换过程中,发送到该节点的请求可能会失败。为了降低影响可以采用如下措施: 通过终端节点服务或独享型负载均衡器访问集群,确保请求自动路由到可用节点。 在客户端实现指数退避重试机制(建议配置3次重试)。 在业务低峰期进行规格变更。 变更过程特性 切换可用区任务一旦启动就无法中止,直到任务成功或失败才会结束。
  • 变更影响 在变更集群规格前,您需要了解以下关键影响和操作建议,以便合理规划变更,最小化业务影响。 性能影响(仅变更节点存储类型受影响) 变更节点存储类型不会中断业务,但是该过程的数据迁移会消耗IO性能,且变更过程中单节点下线可能影响集群性能。 建议在业务低峰期提高数据迁移速率以缩短任务耗时,并在业务高峰期前降低迁移速率以减轻对集群性能的影响。数据迁移速率由“indices.recovery.max_bytes_per_sec”参数决定,该参数值默认是“CPU核数 x 32MB”(如4核CPU默认128MB)。该参数取值范围为40MB至1000MB,可根据业务需求调整。 PUT /_cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "1000MB" } } 请求处理影响 下线单个节点通常不会中断业务,但在节点下线过程中,发送到该节点的请求可能会失败。为了降低影响可以采用如下措施: 通过终端节点服务或独享型负载均衡器访问集群,确保请求自动路由到可用节点。 在客户端实现指数退避重试机制(建议配置3次重试)。 在业务低峰期进行规格变更。 索引副本影响 如果集群中的索引没有设置副本,节点下线期间该分片数据将不可用,相关业务可能会中断。建议在变更前为所有重要索引添加副本。 OpenSearch Dashboards和Cerebro组件影响 变更节点存储类型时,系统会重建OpenSearch Dashboards和Cerebro,在此期间服务将暂时不可用。变更节点规格时,如果OpenSearch Dashboards和Cerebro运行于被下线的节点上会导致访问失败,此时刷新页面或重新登录,系统会自动重新调度到可用节点。 变更过程特性 规格变更任务一旦启动就无法中止,直到任务成功或失败才会结束。任务失败通常只影响单个节点,在有副本的情况下业务不受影响,但需要及时修复失败节点。 当需要紧急进行规格变更时,您也可以提交工单联系技术支持进行变更评估和检查。
  • 变更规格时长 变更节点规格的时长估算公式如下: 变更时长(分钟)= 10(分钟)x 节点总个数 + 数据恢复时长(分钟) 其中: 10分钟为初始化等非数据恢复操作的基准耗时,是经验值。 节点总个数是集群的数据节点、Master节点、Client节点和冷数据节点数量之和。 数据恢复时长(分钟)= 数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)] 其中: 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。 以上公式为理想状态下的理论估算值,实际恢复速率受集群负载影响。 变更节点存储类型的时长估算公式如下: 变更时长(分钟)= 15(分钟)x 节点总个数 + 数据迁移时长(分钟) 其中: 15分钟为初始化等非数据迁移操作的基准耗时,是经验值。 节点总个数是集群的数据节点、Master节点、Client节点和冷数据节点数量之和。 数据迁移时长(分钟)= 数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)] 其中: 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。 以上公式为理想状态下的理论估算值,实际迁移速率受集群负载影响。
  • 升级影响 在进行集群版本升级前,您需要了解以下关键影响和操作建议,以便合理规划升级,确保升级过程平滑且对业务影响最小。 性能影响 升级采用逐个节点滚动进行,确保业务不中断。但该过程中的数据迁移会消耗IO性能,且单节点下线可能影响集群性能。 建议在业务低峰期提高数据迁移速率以缩短任务耗时,并在业务高峰期前降低迁移速率以减轻对集群性能的影响。数据迁移速率由“indices.recovery.max_bytes_per_sec”参数决定,该参数值默认是“CPU核数 x 32MB”(如4核CPU默认128MB)。该参数取值范围为40MB至1000MB,可根据业务需求调整。 PUT /_cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "1000MB" } } 请求处理影响 升级过程中,节点替换可能导致发送到该节点的请求可能会失败。为了降低影响可以采用如下措施: 通过终端节点服务或独享型负载均衡器访问集群,确保请求自动路由到可用节点。 在客户端实现指数退避重试机制(建议配置3次重试)。 在业务低峰期进行升级。 OpenSearch Dashboard和Cerebro组件重建 升级会重建OpenSearch Dashboard和Cerebro,可能导致暂时无法访问。由于不同OpenSearch Dashboard版本不兼容,升级期间OpenSearch Dashboard可能因版本问题无法使用。这些问题在集群升级成功后会自动恢复。 升级过程特性 升级任务一旦启动就无法中止,直到任务成功或失败才会结束。任务失败通常只影响单个节点,在有副本的情况下业务不受影响。如有需要可以通过替换OpenSearch集群指定节点修复当升级失败的节点。
  • 升级时长 集群升级时长的估算公式如下: 升级时长(分钟)= 15(分钟)x 节点总个数 + 数据迁移时长(分钟) 其中: 15分钟为初始化、升级镜像等非数据迁移操作的基准耗时,是经验值。 节点总个数是集群的数据节点、Master节点、Client节点和冷数据节点数量之和。 数据迁移时长(分钟)= 数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)x 并发度 ] 其中: 当并发度大于1时,实际迁移速率受集群负载影响,实际迁移速率只能达到并发度一半的提升效果。 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。 以上公式为理想状态下的理论估算值,建议在实际计算时增加20%-30%的冗余时间。
  • 查看升级任务 在升级页面的“任务记录”列表,可以查看当前升级任务。 展开任务列表,单击“查看进度”查看详细的升级进度。 当“任务状态”为“失败”时,可以重试任务或者直接终止任务。 重试升级:在任务列表的操作列,单击“重试”,重新升级。 终止升级:在任务列表的操作列,单击“终止”,结束升级。 当升级任务终止后,升级失败的节点会维持当前状态,而升级成功的节点不会回退到旧版本。因此,终止升级可能导致集群中存在多个版本(部分节点为旧版本,部分节点为新版本)。建议在处理完问题后尽快重新启动升级,以确保所有节点版本一致,避免影响业务稳定性。 执行跨版本升级时,当系统显示“任务状态”为“失败”,必须验证所有节点均未成功升级,方可终止升级任务。
  • 查询存储在OBS中冷数据的缓存状态 冻结索引之后,当冷数据第一次被查询时,系统会自动进行数据缓存,集群支持查询存储在OBS中冷数据的缓存状态。当需要调试集群性能时,也可以重置缓存状态。 查询节点中存储在OBS中冷数据的缓存状态。 执行如下命令,查询所有节点中冷数据的缓存信息。 GET _frozen_stats 执行如下命令,查询指定节点中冷数据的缓存信息。 GET _frozen_stats/${node_id} 表9 请求参数说明 参数名 说明 node_id 节点ID。 返回结果如下: { "_nodes" : { "total" : 3, // 所有节点数量 "successful" : 3, // 成功的节点数量 "failed" : 0 // 失败的节点数量 }, "cluster_name" : "css-zzz1", // 集群名称 "nodes" : { "7uwKO38RRoaON37YsXhCYw" : { "name" : "css-zzz1-ess-esn-2-1", // 节点名称 "transport_address" : "10.0.0.247:9300", // 节点transport连接地址 "host" : "10.0.0.247", // 节点host "ip" : "10.0.0.247", // 节点IP "block_cache" : { "default" : { "type" : "memory", // cache类型,memory表示内存cache "block_cache_capacity" : 8192, // cache容量 "block_cache_blocksize" : 8192, // cache中单个block大小,单位为bytes,如此处表示8k "block_cache_size" : 12, // cache已被占用的大小 "block_cache_hit" : 14, // cache命中数 "block_cache_miss" : 0, // cache未命中数 "block_cache_eviction" : 0, // cache被逐出次数 "block_cache_store_fail" : 0 // 如果cache满了,可能导致新的cache存储失败,此处表示存储失败的次数 } }, "obs_stats" : { "list" : { "obs_list_count" : 17, // 调用OBS list接口的次数 "obs_list_ms" : 265, // 调用OBS list接口的总耗时 "obs_list_avg_ms" : 15 // 调用OBS list接口的平均耗时 }, "get_meta" : { "obs_get_meta_count" : 79, // 调用OBS 获取元数据接口的次数 "obs_get_meta_ms" : 183, // 调用OBS 获取元数据接口的总耗时 "obs_get_meta_avg_ms" : 2 // 调用OBS 获取元数据接口的平均耗时 }, "get_obj" : { "obs_get_obj_count" : 12, // 调用OBS getObject接口的次数 "obs_get_obj_ms" : 123, // 调用OBS getObject接口的总耗时 "obs_get_obj_avg_ms" : 10 // 调用OBS getObject接口的平均耗时 }, "put_obj" : { "obs_put_obj_count" : 12, // 调用OBS putObject接口的总次数 "obs_put_obj_ms" : 2451, // 调用OBS putObject接口的总耗时 "obs_put_obj_avg_ms" : 204 // 调用OBS putObject接口的平均耗时 }, "obs_op_total" : { "obs_op_total_ms" : 3022, // 调用OBS接口的总耗时 "obs_op_total_count" : 120, // 调用OBS接口的总次数 "obs_op_avg_ms" : 25 // 调用OBS接口的平均耗时 } }, "reader_cache" : { "hit_count" : 0, "miss_count" : 1, "load_success_count" : 1, "load_exception_count" : 0, "total_load_time" : 291194714, "eviction_count" : 0 } }, "73EDpEqoQES749umJqxOzQ" : { "name" : "css-zzz1-ess-esn-3-1", "transport_address" : "10.0.0.201:9300", "host" : "10.0.0.201", "ip" : "10.0.0.201", "block_cache" : { "default" : { "type" : "memory", "block_cache_capacity" : 8192, "block_cache_blocksize" : 8192, "block_cache_size" : 12, "block_cache_hit" : 14, "block_cache_miss" : 0, "block_cache_eviction" : 0, "block_cache_store_fail" : 0 } }, "obs_stats" : { "list" : { "obs_list_count" : 17, "obs_list_ms" : 309, "obs_list_avg_ms" : 18 }, "get_meta" : { "obs_get_meta_count" : 79, "obs_get_meta_ms" : 216, "obs_get_meta_avg_ms" : 2 }, "get_obj" : { "obs_get_obj_count" : 12, "obs_get_obj_ms" : 140, "obs_get_obj_avg_ms" : 11 }, "put_obj" : { "obs_put_obj_count" : 12, "obs_put_obj_ms" : 1081, "obs_put_obj_avg_ms" : 90 }, "obs_op_total" : { "obs_op_total_ms" : 1746, "obs_op_total_count" : 120, "obs_op_avg_ms" : 14 } }, "reader_cache" : { "hit_count" : 0, "miss_count" : 1, "load_success_count" : 1, "load_exception_count" : 0, "total_load_time" : 367179751, "eviction_count" : 0 } }, "EF8WoLCUQbqJl1Pkqo9-OA" : { "name" : "css-zzz1-ess-esn-1-1", "transport_address" : "10.0.0.18:9300", "host" : "10.0.0.18", "ip" : "10.0.0.18", "block_cache" : { "default" : { "type" : "memory", "block_cache_capacity" : 8192, "block_cache_blocksize" : 8192, "block_cache_size" : 12, "block_cache_hit" : 14, "block_cache_miss" : 0, "block_cache_eviction" : 0, "block_cache_store_fail" : 0 } }, "obs_stats" : { "list" : { "obs_list_count" : 17, "obs_list_ms" : 220, "obs_list_avg_ms" : 12 }, "get_meta" : { "obs_get_meta_count" : 79, "obs_get_meta_ms" : 139, "obs_get_meta_avg_ms" : 1 }, "get_obj" : { "obs_get_obj_count" : 12, "obs_get_obj_ms" : 82, "obs_get_obj_avg_ms" : 6 }, "put_obj" : { "obs_put_obj_count" : 12, "obs_put_obj_ms" : 879, "obs_put_obj_avg_ms" : 73 }, "obs_op_total" : { "obs_op_total_ms" : 1320, "obs_op_total_count" : 120, "obs_op_avg_ms" : 11 } }, "reader_cache" : { "hit_count" : 0, "miss_count" : 1, "load_success_count" : 1, "load_exception_count" : 0, "total_load_time" : 235706838, "eviction_count" : 0 } } } } 执行如下命令,可以重置缓存状态。 POST _frozen_stats/reset 此命令主要用于调试性能问题,例如重置缓存状态后再次执行查询可以清晰看到本次查询的缓存命令情况。在业务运行阶段不需要执行此命令。 返回结果如下: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "Es-0325-007_01", "nodes" : { "mqTdk2YRSPyOSXfesREFSg" : { "result" : "ok" } } }
  • 提升冷数据的查询性能 在OpenSearch Dashboard的Discover页面首次查询冷数据时,由于此时无任何缓存,导致所有数据均需要从OBS上获取,当命中的数据较多时,需要耗费大量的时间从OBS上获取对应的时间字段以及文件元数据。如果将这一部分数据直接缓存在本地,即可大幅提升查询性能,解决Discover页面首次查询慢的问题。 云搜索服务 就是通过冷数据的本地缓存,实现冷数据的查询性能提升。本地缓存配置是预置的,用户可以基于业务场景修改配置,也可以查询、了解本地缓存信息。 修改冷数据的本地缓存配置。 表10 本地缓存配置项说明 配置项 类型 scope 是否可动态修改 说明 low_cost.local_cache.max.capacity Integer node 是 节点上,能够打开的冷数据缓存的最大数量。(每个shard对应一个缓存对象) 取值范围:10~5000 默认值:500 当堆内存使用率一直很高时,可以尝试降低该值。 当查询冷数据本地缓存的相关统计指标中load_overflow_count数值一直持续快速增加时,建议调大该值。 index.low_cost.local_cache.threshold Integer index 是 启用冷数据本地缓存的阈值。 当date类型字段的占比小于此值时,启用冷数据本地缓存date类型字段。否则不使用。 如果当前索引的date类型字段占据当前索引的绝大部分数据量,则不建议使用此功能。 单位:% 取值范围:0~100 默认值:50 index.low_cost.local_cache.evict_time 字符串 index 是 冷数据的本地缓存的淘汰时间,当缓存时间大于该值,缓存将被删除。根据index.frozen_date(冻结成功的时间)判定,当索引无index.frozen_date时,则根据索引创建时间判定。 单位:天 取值范围:1d~365d 默认值:30d 建议根据磁盘用量调整淘汰时长,节省磁盘空间。 执行如下命令,修改“low_cost.local_cache.max.capacity”。 PUT _cluster/settings { "persistent": { "low_cost.local_cache.max.capacity":1000 } } 执行如下命令,修改“index.low_cost.local_cache.threshold”。 PUT es_write_pref2-00000000021/_settings { "index.low_cost.local_cache.threshold":20 } 执行如下命令,修改“index.low_cost.local_cache.evict_time”。 PUT es_write_pref2-00000000021/_settings { "index.low_cost.local_cache.evict_time":"7d" } 查询冷数据的本地缓存信息。 执行如下命令,查询所有节点中冷数据的本地缓存相关指标。 GET /_frozen_stats/local_cache 执行如下命令,查询指定节点中冷数据的本地缓存相关指标。 GET /_frozen_stats/local_cache/{nodeId} “{nodeId}”为节点ID。 返回结果如下: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "opensearch", "nodes" : { "6by3lPy1R3m55Dcq3liK8Q" : { "name" : "node-1", "transport_address" : "127.0.0.1:9300", "host" : "127.0.0.1", "ip" : "127.0.0.1", "local_cache" : { "get_stats" : { "get_total_count" : 562, //从冷数据本地缓存查询数据的总次数 "get_hit_count" : 562, //从冷数据本地缓存查询数据命中的次数 "get_miss_count" : 0, //从冷数据本地缓存查询数据未命中的次数 "get_total_ns" : 43849200, //从冷数据本地缓存查询数据的总时长 "get_avg_ns" : 78023 //从冷数据本地缓存查询数据的平均时长 }, "load_stats" : { "load_count" : 2, //加载冷数据本地缓存的次数 "load_total_ms" : 29, //加载冷数据本地缓存的总时长 "load_avg_ms" : 14, //加载冷数据本地缓存的平均时长 "load_fail_count" : 0, //加载冷数据本地缓存的失败次数 "load_overflow_count" : 0 //加载冷数据本地缓存时超过缓存池的次数 }, "reload_stats" : { "reload_count" : 0, //重新生成冷数据本地缓存的次数 "reload_total_ms" : 0, //重新生成冷数据本地缓存的总时长 "reload_avg_ms" : 0, //重新生成冷数据本地缓存的平均时长 "reload_fail_count" : 0 //重新生成冷数据本地缓存的失败次数 }, "init_stats" : { "init_count" : 0, //初始化冷数据本地缓存的次数 "init_total_ms" : 0, //初始化冷数据本地缓存的总时长 "init_avg_ms" : 0, //初始化冷数据本地缓存的平均时长 "init_fail_count" : 0 //初始化冷数据本地缓存的失败次数 } } } } }
  • 查询存储冷数据的OBS实时速率 为了更清晰的了解到存算分离的插件在OBS中的使用情况, CSS 服务新增了OBS实时速率的统计接口,并且将实时速率记录到系统索引“.freeze_obs_rate-YYYY.mm.dd”中。 OBS实时速率的计算方式:每5秒计算一次,查询前5秒内的平均OBS操作速率。 系统索引“.freeze_obs_rate-YYYY.mm.dd”用于存放OBS操作实时速率和OBS操作数据,便于了解存储冷数据的OBS的操作趋势。该索引的默认保留时间是30天。 查询存储冷数据的OBS实时速率。 执行如下命令,查询所有节点中存储冷数据的OBS实时速率。 GET _frozen_stats/obs_rate 执行如下命令,查询指定节点中存储冷数据的OBS实时速率。 GET _frozen_stats/obs_rate/{nodeId} “{nodeId}”为节点ID。 响应示例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "opensearch", "nodes" : { "dflDvcSwTJ-fkiIlT2zE3A" : { "name" : "node-1", "transport_address" : "127.0.0.1:9300", "host" : "127.0.0.1", "ip" : "127.0.0.1", "update_time" : 1671777600482, // 当前统计值的更新时间。 "obs_rate" : { "list_op_rate" : 0.0, // obs list操作的速率,单位:次/秒。 "get_meta_op_rate" : 0.0, // obs get meta操作的速率,单位:次/秒。 "get_obj_op_rate" : 0.0, // obs get操作的速率,单位:次/秒。 "put_op_rate" : 0.0, // obs put操作的速率,单位:次/秒。 "obs_total_op_rate" : 0.0, // obs所有操作的速率,单位:次/秒。 "obs_upload_rate" : "0.0 MB/s", // obs上传数据的速率,MB/秒。 "obs_download_rate" : "0.0 MB/s" // obs下载数据的速率,MB/秒。 } } } } 修改存储OBS实时速率的索引“.freeze_obs_rate-YYYY.mm.dd”的保留时间。索引的默认保留时间是30天。 执行如下命令,将索引保留时间改成7天。 PUT _cluster/settings { "persistent": { "low_cost.obs_rate_index.evict_time": "7d" } } 表11 配置项说明 配置项 类型 scope 是否可动态修改 说明 low_cost.obs_rate_index.evict_time String node 是 用于控制索引“.freeze_obs_rate-YYYY.mm.dd”的保留时间。 取值范围:1d~365d。 默认值:30d。 单位:天。
  • 基于冻结状态查询索引列表 执行如下命令,基于冻结状态查询索引列表。 GET _cat/freeze_indices?stage=${STAGE} 表7 请求参数说明 参数名 说明 STAGE 索引的冻结状态,可选值如下: start:开始冻结但是还未完成的索引列表 done: 已经完成冻结的索引列表 unfreeze:没有冻结的索引列表 空或者其他值:正在冻结过程中或者已经冻结完成的所有索引列表 返回结果如下: green open data2 0bNtxWDtRbOSkS4JYaUgMQ 3 0 5 0 7.9kb 7.9kb green open data3 oYMLvw31QnyasqUNuyP6RA 3 0 51 0 23.5kb 23.5kb 此命令的参数和返回值与开源OpenSearch的_cat/indices一致。
  • 查看冻结索引任务 执行如下命令,查看冻结索引任务的进度。 GET _freeze_low_cost_progress/${freeze_uuid} 表3 请求参数说明 参数名 说明 freeze_uuid 冻结索引任务的ID,该ID由冻结索引时获取。 返回结果如下: { "stage" : "STARTED", "shards_stats" : { "INIT" : 0, "FAILURE" : 0, "DONE" : 0, "STARTED" : 3, "ABORTED" : 0 }, "indices" : { "data1" : [ { "uuid" : "7OS-G1-tRke2jHZPlckexg", "index" : { "name" : "data1", "index_id" : "4b5PHXJITLaS6AurImfQ9A", "shard" : 2 }, "start_ms" : 1611972010852, "end_ms" : -1, "total_time" : "10.5s", "total_time_in_millis" : 10505, "stage" : "STARTED", "failure" : null, "size" : { "total_bytes" : 3211446689, "finished_bytes" : 222491269, "percent" : "6.0%" }, "file" : { "total_files" : 271, "finished_files" : 12, "percent" : "4.0%" }, "rate_limit" : { "paused_times" : 1, "paused_nanos" : 946460970 } }, { "uuid" : "7OS-G1-tRke2jHZPlckexg", "index" : { "name" : "data1", "index_id" : "4b5PHXJITLaS6AurImfQ9A", "shard" : 0 }, "start_ms" : 1611972010998, "end_ms" : -1, "total_time" : "10.3s", "total_time_in_millis" : 10359, "stage" : "STARTED", "failure" : null, "size" : { "total_bytes" : 3221418186, "finished_bytes" : 272347118, "percent" : "8.0%" }, "file" : { "total_files" : 372, "finished_files" : 16, "percent" : "4.0%" }, "rate_limit" : { "paused_times" : 5, "paused_nanos" : 8269016764 } }, { "uuid" : "7OS-G1-tRke2jHZPlckexg", "index" : { "name" : "data1", "index_id" : "4b5PHXJITLaS6AurImfQ9A", "shard" : 1 }, "start_ms" : 1611972011021, "end_ms" : -1, "total_time" : "10.3s", "total_time_in_millis" : 10336, "stage" : "STARTED", "failure" : null, "size" : { "total_bytes" : 3220787498, "finished_bytes" : 305789614, "percent" : "9.0%" }, "file" : { "total_files" : 323, "finished_files" : 14, "percent" : "4.0%" }, "rate_limit" : { "paused_times" : 3, "paused_nanos" : 6057933087 } } ] } } 表4 返回参数说明 参数名 说明 stage 当前所处状态。取值包括: INIT:刚启动或者正在初始化。 FAILURE:失败。 DONE:完成。 STARTED:已启动。 ABORTED:取消,预留字段。 shards_stats 处在各个状态的shard个数。 indices 每个索引的状态详情。 表5 indices返回值说明 参数名 说明 uuid freeze的uuid。 index 索引信息和shard信息。 start_ms 开始时间。 end_ms 结束时间,如果没有结束则显示为-1。 total_time 已花费时间。 total_time_in_millis 已花费时间毫秒数。 stage 当前shard所处的状态。 failure 失败原因,如果没有失败则显示为null。 size.total_bytes 总共需要冻结的文件的字节数。 size.finished_bytes 已经完成冻结的字节数。 size.percent 已经完成冻结的字节数百分比。 file.total_bytes 总共需要冻结的文件个数。 file.finished_bytes 已经完成冻结的文件个数。 file.percent 已经完成冻结的文件个数百分比。 rate_limit.paused_times 达到限速导致冻结暂停的次数。 rate_limit.paused_nanos 达到限速导致冻结暂停的时间纳秒数。 冻结完成的索引会增加以下settings,可参考表6。 表6 冻结索引settings 参数 说明 index.frozen_low_cost 标识该索引为冻结索引。取值为true。 index.blocks.write 冻结后的索引禁止写入。取值为true。 index.store.type 标识该索引的存储类型为obs。取值为obs。
  • 约束限制 OpenSearch集群仅1.3.6版本支持存算分离功能。 在执行冻结索引前,系统会将待冻结的索引配置为只读状态,即便在索引数据转储到OBS后,索引也是只读状态,不支持写入数据。 在冻结索引过程中,查询请求不受影响。在冻结完成后,会将索引先Close再Open,在这段时间内,索引不可查询,集群可能短暂出现Red状态,索引Open结束后集群恢复正常。 将历史索引数据转储到OBS的过程中会占用网络带宽。 冻结索引后,索引会被转储到OBS中,同时本地磁盘中的索引数据会被删除。当查询被冻结的索引时,时延会增加,在聚合时,由于查询复杂、数据读取多,时延变长会更明显。 已转储到OBS中的索引不支持解冻,即不可回退为可写的索引。 在配置了读写分离的集群中,从集群无法对由主集群同步过来的索引数据设置存算分离。 由于存算分离的特性依赖OBS,所以使用过程中要遵守OBS的“带宽”和“每秒请求数(QPS)”的使用限制,详细请参见OBS使用限制。当超过限制时,集群中涉及到OBS查询的性能都会下降,例如恢复分片的速度变慢、查询数据时变慢等。
  • 冻结索引 执行如下命令,将指定索引转储到OBS中,存储类别为标准存储。 POST ${index_name}/_freeze_low_cost 表1 请求参数说明 参数名 说明 index_name 需要冻结的索引名称。 返回结果如下: { "freeze_uuid": "pdsRgUtSTymVDWR_HoTGFw" } 表2 返回参数说明 参数名 说明 freeze_uuid 冻结索引任务的ID,在提交冻结请求后会启动一个异步任务,请求返回任务ID,使用该ID可以查询冻结索引任务的进度。
  • 方案架构 图1 存算分离 通过存算分离可以实现索引数据的生命周期管理。 热状态的索引数据支持写入,且可以实现毫秒级检索。 冻结状态的索引数据,是指将长期不使用的历史数据转储到 CS S服务的OBS桶中(该OBS桶用户无感知,且无法在OBS控制台查看),降低数据的存储成本,提升SSD的存储能力。此时,被冻结的索引数据的检索速率会降低到秒/分级别。 当确定OBS中的历史索引数据不再使用时,可以定期删除数据,释放存储资源。 本文通过OpenSearch Dashboards访问集群,介绍如何使用存算分离。
  • 升级影响 在进行集群版本升级前,您需要了解以下关键影响和操作建议,以便合理规划升级,确保升级过程平滑且对业务影响最小。 性能影响 升级采用逐个节点滚动进行,确保业务不中断。但该过程中的数据迁移会消耗IO性能,且单节点下线可能影响集群性能。 建议在业务低峰期提高数据迁移速率以缩短任务耗时,并在业务高峰期前降低迁移速率以减轻对集群性能的影响。数据迁移速率由“indices.recovery.max_bytes_per_sec”参数决定,该参数值默认是“CPU核数 x 32MB”(如4核CPU默认128MB)。该参数取值范围为40MB至1000MB,可根据业务需求调整。 PUT /_cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "1000MB" } } 请求处理影响 升级过程中,节点替换可能导致发送到该节点的请求可能会失败。为了降低影响可以采用如下措施: 通过终端节点服务或独享型负载均衡器访问集群,确保请求自动路由到可用节点。 在客户端实现指数退避重试机制(建议配置3次重试)。 在业务低峰期进行升级。 Kibana和Cerebro组件重建 升级会重建Kibana和Cerebro,可能导致暂时无法访问。由于不同Kibana版本不兼容,升级期间Kibana可能因版本问题无法使用。这些问题在集群升级成功后会自动恢复。 升级过程特性 升级任务一旦启动就无法中止,直到任务成功或失败才会结束。任务失败通常只影响单个节点,在有副本的情况下业务不受影响。如有需要可以通过替换Elasticsearch集群指定节点修复当升级失败的节点。
  • 升级时长 集群升级时长的估算公式如下: 升级时长(分钟)= 15(分钟)x 节点总个数 + 数据迁移时长(分钟) 其中: 15分钟为初始化、升级镜像等非数据迁移操作的基准耗时,是经验值。 节点总个数是集群的数据节点、Master节点、Client节点和冷数据节点数量之和。 数据迁移时长(分钟)= 数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)x 并发度 ] 其中: 当并发度大于1时,实际迁移速率受集群负载影响,实际迁移速率只能达到并发度一半的提升效果。 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。 以上公式为理想状态下的理论估算值,建议在实际计算时增加20%-30%的冗余时间。
  • 查看升级任务 在升级页面的“任务记录”列表,可以查看当前升级任务。 展开任务列表,单击“查看进度”查看详细的升级进度。 当“任务状态”为“失败”时,可以重试任务或者直接终止任务。 重试升级:在任务列表的操作列,单击“重试”,重新升级。 终止升级:在任务列表的操作列,单击“终止”,结束升级。 当升级任务终止后,升级失败的节点会维持当前状态,而升级成功的节点不会回退到旧版本。因此,终止升级可能导致集群中存在多个版本(部分节点为旧版本,部分节点为新版本)。建议在处理完问题后尽快重新启动升级,以确保所有节点版本一致,避免影响业务稳定性。 执行跨版本升级时,当系统显示“任务状态”为“失败”,必须验证所有节点均未成功升级,方可终止升级任务。
  • 版本支持 待升级的集群版本不同,支持升级的目标版本也不同,具体请参见表1。 表1 版本升级能力 当前版本 目标版本 Elasticsearch:6.2.3 Elasticsearch:6.5.4,6.8.23 Elasticsearch:6.5.4 Elasticsearch:6.8.23 Elasticsearch:6.8.23 Elasticsearch:7.6.2,7.10.2 Elasticsearch:7.1.1 Elasticsearch:7.6.2,7.10.2 Elasticsearch:7.6.2 Elasticsearch:7.10.2 Elasticsearch:7.9.3 Elasticsearch:7.10.2 说明: Elasticsearch集群以7.6.2 和7.10.2为主力版本,建议其他版本的集群收编到该版本。实际支持的目标版本请以升级页面中“目标镜像”的可选值为准。 5.x版本的Elasticsearch集群不支持跨版本升级,6.2.3和6.5.4版本Elasticsearch集群可先升级到6.8.23版本,再升级到7.x.x版本。
  • Elasticsearch使用流程 表1 Elasticsearch集群的使用流程 任务分类 操作 参考文档 使用 规划集群 在创建Elasticsearch集群前,需要先完成集群规划。规划时,应考虑是否多可用区部署以提高集群的高可用性,合理配置集群的节点类型与节点存储规格,以及根据业务需求选择适当的集群版本和安全模式,同时注意索引分片的优化,以确保集群的稳定性和性能。 Elasticsearch集群规划建议 创建集群 基于集群规划,创建合适的Elasticsearch集群。 创建Elasticsearch集群(旧版) 访问集群 Elasticsearch集群提供多样化的访问方式,包括Kibana、Cerebro、开源API、Java、Python和Go客户端,以及通过内网和公网的多种网络配置,用户可根据编程语言偏好和网络环境选择最合适的接入方法。 Elasticsearch集群访问方式 导入数据 Elasticsearch集群提供多种数据导入方式,包括Logstash、开源Elasticsearch API、 云数据迁移 服务 CDM 数据复制服务 DRS,支持不同来源和格式的数据导入,以及针对关系型数据库的实时同步,用户可根据业务场景和数据特性选择最佳方法。 Elasticsearch集群导入数据方式 搜索数据 CSS服务推荐使用DSL语言在Elasticsearch集群中搜索数据,同时也支持使用SQL语言进行数据搜索。 使用DSL语言在Elasticsearch中搜索数据 使用SQL语言在Elasticsearch中搜索数据 增强集群搜索能力 CSS服务的Elasticsearch集群基于社区版本提供了一系列增强特性,包括向量检索、存算分离、流量控制、大查询隔离、聚合增强、读写分离、冷热数据切换、索引回收站等,以适应不同场景下的性能和成本优化需求,增强集群稳定性和搜索能力。 Elasticsearch集群搜索增强特性介绍 运维 备份与恢复 备份与恢复是通过集群快照备份Elasticsearch集群数据,在数据丢失或需要历史数据时快速恢复数据,提升集群的数据可靠性。 创建快照备份Elasticsearch集群数据 恢复Elasticsearch集群数据 扩缩容 CSS服务提供灵活的扩容和缩容功能,支持增加节点数量、升级节点规格、增加节点类型,以及随机或指定缩容节点,以动态调整集群资源,适应不同业务需求并优化成本。 扩容Elasticsearch集群 缩容Elasticsearch集群 升级 Elasticsearch集群支持同版本升级、跨版本升级和跨引擎升级。同版本升级是升级集群的内核补丁,用于修复问题或优化性能;跨版本升级是升级集群的版本,用于功能加强或版本收编;跨引擎升级是将Elasticsearch集群升级至OpenSearch集群。 升级Elasticsearch集群版本 管理集群 CSS服务提供全面的集群管理功能,包括集群信息查看、集群用户授权、标签管理、安全模式更改、节点替换、企业项目绑定、可用区切换、自定义词库配置等,旨在帮助用户高效、灵活地管理Elasticsearch集群,确保集群的安全性、高可用性和性能优化。 查看Elasticsearch集群信息 创建Elasticsearch集群用户并授权使用 设置Elasticsearch集群标签 配置Elasticsearch集群YML文件默认参数 为Elasticsearch集群绑定企业项目 替换Elasticsearch集群指定节点 更改Elasticsearch集群安全模式 切换Elasticsearch集群可用区 配置和使用Elasticsearch集群的自定义词库 配置Elasticsearch集群简繁体转换搜索 重启Elasticsearch集群 删除Elasticsearch集群 管理集群索引策略 使用Elasticsearch的ISM(Index State Management)插件创建和管理索引的生命周期策略,包括策略的创建、索引关联、以及策略的管理与变更,旨在优化集群性能和降低存储成本。 创建和管理Elasticsearch索引策略 监控与日志管理 CSS服务提供全面的监控和日志管理功能,包括集群和节点监控指标、告警规则配置、日志备份与采集,以及智能运维工具,帮助用户有效监控、分析和维护Elasticsearch集群,确保集群的稳定性和性能。 Elasticsearch集群支持的监控指标 配置Elasticsearch集群监控 设置Elasticsearch集群 SMN 告警通知 智能检测Elasticsearch集群风险 查询和管理Elasticsearch集群日志 审计日志 通过 云审计 服务,用户可以记录和查询Elasticsearch集群的关键操作事件,且操作记录在管理控制台保存最近7天,便于后续的审计和回溯。 查看Elasticsearch集群审计日志 父主题: 使用Elasticsearch搜索数据
  • 变更时长 变更集群安全模式的时长估算公式如下: 变更时长(分钟)= 5(分钟)x 节点总个数 + 数据恢复时长(分钟) 其中: 5分钟为初始化等非数据恢复操作的基准耗时,是经验值。 节点总个数是集群的数据节点、Master节点、Client节点和冷数据节点数量之和。 数据恢复时长(分钟)= 数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)] 其中: 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。 以上公式为理想状态下的理论估算值,实际恢复速率受集群负载影响。
  • 变更影响 在更改安全模式前,您需要了解以下关键影响和操作建议,以便合理规划变更,最小化业务影响。 表3 变更影响总览 变更类型 业务是否会中断 认证方式变化 性能影响 公网访问变化 安全账号风险 非安全 → 安全+HTTP 是 增加安全认证 不涉及 不支持 不涉及 非安全 → 安全+HTTPS 是 增加安全认证 下降 支持 不涉及 安全 → 非安全 是 移除安全认证 提升 自动禁用 永久删除 HTTP → HTTPS 是 无变化 下降 支持 不涉及 HTTPS → HTTP 是 无变化 提升 自动禁用 不涉及 变更影响说明: 非安全表示非安全模式的集群;安全表示安全模式的集群。 业务中断:在更改集群安全模式的过程中,集群会自动重启,导致业务暂时不可用。 认证方式变化:更改集群安全模式后,访问集群时的安全认证机制会发生改变,此时客户端必须同步更新认证逻辑。如未及时完成适配,可能导致业务服务中断。 性能影响:当集群安全模式变更导致通信协议从HTTP切换为HTTPS后,在相同硬件配置下,集群处理高并发请求时的性能指标(如吞吐量)将出现约20%的下降。相反,当通信协议从HTTPS切换为HTTP后,集群性能会有所提升。 公网访问变化:只有安全模式+HTTPS协议的集群才支持配置公网访问,其他类型的集群都不支持。 安全账号风险:当安全模式变更为非安全模式的集群,系统会清理安全集群的账号,所有安全账号将被永久删除。 组件影响:对于已打开过OpenSearch Dashboards会话框的集群,在更改集群安全模式后,OpenSearch Dashboards会提示Session错误,此时需要清理缓存再打开OpenSearch Dashboards才能正常访问。 由于更改安全模式会导致节点访问方式改变,此过程可能会引起业务中断,建议在业务上线前或集群可接受停机变更的场景下使用。
  • 规划节点存储 规划节点机型 由于Logstash集群不涉及存储大规格数据,推荐选用计算密集型机型。 规划节点规格 在规划节点规格时,推荐优先考虑高配置但节点数量较少的方案。例如,一个由3个节点组成的集群,每个节点配置为32核CPU和64GB内存,通常比一个由12个节点组成的集群,每个节点配置为8核CPU和16GB内存,在集群的稳定性和扩展性方面更具优势。 优势主要体现在如下方面。 集群稳定性:高配置节点通常能提供更强的处理能力和更大的内存空间,从而提高集群的整体稳定性。 扩容便捷性:当高配置集群遇到性能瓶颈时,可以通过横向扩展轻松解决,即简单地向集群中添加更多具有相同高配置的节点。这种扩展方式简单直接,易于实施。 维护简便:较少的节点数量意味着更少的维护工作和更低的管理复杂性。 相比之下,低配置集群在需要扩容时,往往需要进行纵向扩展,即提升单个节点的配置。这不仅可能涉及更复杂的迁移和升级过程,还可能增加额外的维护成本和技术挑战。 因此,在规划集群时,应综合考虑性能、成本、维护和扩展性,选择最适合业务需求的节点规格。 规划存储容量 Logstash集群的云盘存储容量默认是40GB,且不支持修改,因此无需规划。
  • 规划虚拟私有云和子网 CSS服务支持在非共享VPC和共享VPC内创建集群。 共享VPC和非共享VPC相比,有如下优势: 在一个账号内统一创建资源,并将资源共享给其他账号,其他账号无需创建重复资源,可以精简资源数量以及网络架构,提升管理效率并节约成本。 比如不同账号下的VPC网络互通需要建立对等连接,使用共享VPC后,则不同账号用户可以在同一个VPC创建资源,免去了对等连接配置,有效的简化组网结构。 在一个账号内统一管理运维资源,便于企业集中配置业务安全策略,并且利于对资源使用情况的监控和审计,支撑业务的安全诉求。 当选择使用共享VPC创建集群时,需要提前完成共享VPC子网的创建,操作流程请参见表2。有关共享VPC的使用限制及详细操作指导等信息可以参考共享VPC概述。 表2 共享子网创建流程说明 方法 说明 操作指导 方法A 通过 RAM 管理控制台,所有者创建共享,将子网共享给使用者。配置如下: 选择共享子网。 为共享子网选择权限,即指定使用者对该共享子网具备的权限。 CSS服务在共享VPC中创建集群需要选择权限:default vpc subnet statement。 指定共享子网的使用者,可以指定多个。 共享创建完成后,通过RAM管理控制台,使用者可以选择接受或者拒绝共享申请。 使用者接受共享申请,子网共享成功。 如果后续使用者不再需要使用该共享子网,可以退出该共享。 使用者拒绝共享申请,子网共享失败。 创建共享 接受/拒绝共享邀请 退出共享 方法B 通过RAM管理控制台,所有者创建共享,将子网共享给使用者。配置如下: 选择共享子网。 为共享子网选择权限,即指定使用者对该共享子网具备的权限。 CSS服务在共享VPC中创建集群需要选择权限:default vpc subnet statement。 指定共享子网的使用者,可以指定多个。 通过VPC管理控制台,选择上一步中已创建的共享,将子网加入到该共享内。 共享创建完成后,通过RAM管理控制台,使用者可以选择接受或者拒绝共享申请。 使用者接受共享申请,子网共享成功。 如果后续使用者不再需要使用该共享子网,可以退出该共享。 使用者拒绝共享申请,子网共享失败。 创建共享 将VPC子网共享给其他账号 接受/拒绝共享邀请 退出共享
  • 规划集群可用区 为防止数据丢失,并确保在服务中断情况下能降低集群的停机时间,从而增强集群的高可用性,CSS服务支持跨可用区(即多可用区)部署。用户可以在同一个区域内选择两个不同的可用区进行集群部署。 在创建集群时,如果用户选择了两个可用区,CSS服务将自动开启跨AZ的高可用性特性,确保节点在这些可用区内均匀分配。系统均匀分配的节点满足各个AZ之间节点数量的差小于等于1,具体的节点分布情况,包括不同数量的节点如何在各个可用区中分布,可以参考表1。 在创建集群时,选择的节点数量都要大于等于2,否则跨可用区部署会失败。 部署跨AZ集群时,节点会被均匀的分布在不同的AZ上。 表1 节点数量和AZ分布 集群节点个数 单AZ 两AZ AZ1 AZ1 AZ2 1个节点 1 不支持 2个节点 2 1 1 3个节点 3 2 1 4个节点 4 2 2 … … … …
  • 替换指定节点时长 替换指定节点的时长估算公式如下: 变更时长(分钟)= 15(分钟)+ 数据迁移时长(分钟) 其中:15分钟为初始化等非数据迁移操作的基准耗时,是经验值。 数据迁移时长(分钟)= 数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)] 其中: 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。 以上公式为理想状态下的理论估算值,实际迁移速率受集群负载影响。
  • 变更影响 在替换指定节点前,您需要了解以下关键影响和操作建议,以便合理规划变更,最小化业务影响。 性能影响 替换指定节点不会中断业务,但是数据迁移会消耗IO性能,且替换过程中单节点下线可能影响集群性能。 建议在业务低峰期提高数据迁移速率以缩短任务耗时,并在业务高峰期前降低迁移速率以减轻对集群性能的影响。数据迁移速率由“indices.recovery.max_bytes_per_sec”参数决定,该参数值默认是“CPU核数 x 32MB”(如4核CPU默认128MB)。该参数取值范围为40MB至1000MB,可根据业务需求调整。 PUT /_cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "1000MB" } } 请求处理影响 节点替换过程中,发送到该节点的请求可能会失败。为了降低影响可以采用如下措施: 通过终端节点服务或独享型负载均衡器访问集群,确保请求自动路由到可用节点。 在客户端实现指数退避重试机制(建议配置3次重试)。 在业务低峰期进行规格变更。 变更过程特性 替换指定节点任务一旦启动就无法中止,直到任务成功或失败才会结束。任务失败通常只影响单个节点,在有副本的情况下业务不受影响,但需要及时修复失败节点。
  • 约束限制 集群快照会导致CPU、磁盘IO上升等影响,建议在业务低峰期进行操作。 当集群处于“不可用”状态时,快照功能中除了恢复快照功能外,其他快照信息或功能只能查看,无法进行编辑。 备份与恢复过程中,支持集群扩容(如果是恢复至本集群,则本集群不支持扩容)、访问Kibana、查看监控、删除其他快照的操作。不支持重启此集群、删除此集群、删除正在创建或恢复的快照、再次创建或恢复快照的操作。当此集群正在进行创建快照或者恢复快照过程中,同时的自动创建快照任务将被取消。 CSS集群第一次快照是全量,后面再备份快照是在之前的快照基础上增量,CSS是增量快照逻辑,快照之间的文件会相互依赖。
  • 原理说明 向量检索从本质上讲,其思维框架和传统的检索方法没有区别。为了提升向量检索的性能,通常需要解决以下两个问题: 减少候选向量集 和传统的文本检索类似,向量检索也需要某种索引结构来避免在全量的数据上做匹配,传统文本检索是通过倒排索引来过滤掉无关文档,而向量检索是通过对向量建立索引结构来绕过不相关的向量,减小需要考察的范围。 降低单个向量计算的复杂度 向量检索支持漏斗模型,先对所有向量进行量化和近似计算,筛选出一定量接近检索目标的数据集,然后基于筛选的数据集进行精细的计算和排序。本方法不需要对所有向量都进行复杂的计算,可以有效提高检索效率。 向量检索即在一个给定的向量数据集中,按照某种度量方式,检索出与查询向量相近的K个向量(K-Nearest Neighbor,KNN),但由于KNN计算量过大,通常只关注近似近邻(Approximate Nearest Neighbor,ANN)问题。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全