华为云用户手册

  • 监控HTTP状态码 根据集群版本选择监控HTTP状态码的命令。 Elasticsearch 7.6.2集群执行如下命令,获取HTTP状态码统计。 GET /_nodes/http_stats 返回样例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "css-8362", "nodes" : { "F9IFdQPARaOJI7oL7HOXtQ" : { "http_code" : { "200" : 114, "201" : 5, "429" : 0, "400" : 7, "404" : 0, "405" : 0 } } } } Elasticsearch 7.10.2集群执行如下命令,获取HTTP状态码统计。 GET _nodes/stats/http 返回样例: { ...... "cluster_name" : "css-2985", "nodes" : { ...... "omvR9_W-TsGApraMApREjA" : { ...... "http" : { "current_open" : 4, "total_opened" : 37, "http_code" : { "200" : 25, "201" : 7, "429" : 0, "400" : 3, "404" : 0, "405" : 0 } } } } }
  • 监控P99时延 执行以下命令,获取当前集群的P99时延。 GET /search/stats/percentile 返回示例如下: { "overall" : { "1.0" : 2.0, "5.0" : 2.0, "25.0" : 6.5, "50.0" : 19.5, "75.0" : 111.0, "95.0" : 169.0, "99.0" : 169.0, "max" : 169.0, "min" : 2.0 }, "last_one_day" : { "1.0" : 2.0, "5.0" : 2.0, "25.0" : 6.5, "50.0" : 19.5, "75.0" : 111.0, "95.0" : 169.0, "99.0" : 169.0, "max" : 169.0, "min" : 2.0 }, "latest" : { "1.0" : 26.0, "5.0" : 26.0, "25.0" : 26.0, "50.0" : 26.0, "75.0" : 26.0, "95.0" : 26.0, "99.0" : 26.0, "max" : 26.0, "min" : 26.0 } } 表2 返回参数说明 参数 说明 overall 表示集群从启动到当前时间的统计数值。 last_one_day 表示最近一天的统计数值。 latest 表示从上次重置到当前时间的统计数值。 P99时延的计算是近似值,不提供精确值,越靠近两端的统计值越准确,即99%的时延比50%的时延更准确。 当重启集群时,P99时延的数据将被清空,会从集群重启成功后重新计算。 监控集群P99时延的命令还可以设置其他配置项。 可以自定义监控的百分百数值。 例如执行如下命令,显示1%、50%和90%的时延数据。 GET /search/stats/percentile { "percents": [1, 50, 90] } 支持手动重置latest统计值。 执行以下命令,重置latest统计值。 POST /search/stats/reset 如下所示,返回“ok”,表示重置成功。 { "nodes" : { "css-c9c8-ess-esn-1-1" : "ok" } }
  • 场景描述 表1 集群内核监控介绍 集群内核监控增强 描述 支持的集群版本 相关文档 P99时延监控 开源Elasticsearch在监控search请求时仅提供了平均延迟指标,这不足以准确反映集群的实际搜索性能。为了改进这一点, CSS 服务新增了P99延迟监控特性,能够有效地监控集群search请求的第99百分位延迟。 Elasticsearch 7.6.2、Elasticsearch 7.10.2、 监控P99时延 HTTP状态码 通过HTTP对Elasticsearch的访问会收到响应和相应的状态码,但开源的Elasticsearch原生不支持对这些状态码进行统计,导致无法精确掌握接口调用的具体状况,用户也无法通过监控了解集群的整个请求情况。为了改进这一点, CS S服务新增了HTTP状态码监控功能,能够获取HTTP状态码统计信息。 Elasticsearch 7.6.2、Elasticsearch 7.10.2、 监控HTTP状态码
  • 集群列表介绍 集群列表会展示当前账号下同一集群类型的所有集群。当集群数量较多时,会翻页显示,支持查看任何状态下的集群。 集群列表默认按时间顺序排列,时间最近的集群显示在最前端。 在集群列表页单击“导出”可以下载全量的集群列表信息。 表1 集群列表说明 参数 描述 名称/ID 展示集群的名称和ID。单击集群名称可进入集群“基本信息”页面,展现了集群的基本信息。集群ID是系统自动生成的,是集群在服务中的唯一标识。 集群状态 展示集群的运行状态。 可用:正常运行的集群。 创建中:正在创建中的集群。 处理中:重启中、扩容中、备份中或恢复中的集群。 异常:创建失败或不可用的集群。 警告: 当集群处于“不可用”状态时,支持删除集群,也支持将集群正常状态时创建的快照恢复至其他集群。但是无法扩容集群、访问Kibana、创建快照或将快照恢复至此集群。建议不要执行导入数据的操作,避免数据丢失。您可以查看监控或重启集群处理异常,当依旧执行失败时,请及时联系技术支持。 任务状态 展示重启集群、扩容集群、缩容集群等任务的状态。 版本 展示集群版本号和镜像版本号。 例如版本是“7.10.2(7.10.2_x.x.x_x.x.x)”,则“7.10.2”是版本号,括号内的“7.10.2_x.x.x_x.x.x”是镜像版本号。 注意: 当集群的创建时间比较早时,数据库可能未记录其镜像信息,导致页面无法显示集群的镜像版本号。 当版本号下方显示“EOS”时,表示当前版本已经停止服务,集群存在较高风险,建议及时升级集群版本,操作指导请参见升级Elasticsearch集群版本。 创建时间 展示集群的创建时间。 企业项目 展示集群所归属的企业项目。 安全模式 展示集群是否启用安全模式,安全模式的集群需要通过安全认证才能访问。 内网访问地址 展示集群的内网访问地址和端口号,您可以使用此参数接入集群。集群有多个节点时,此处显示多个节点的内网访问地址和端口号。 终端节点服务地址 展示集群绑定的终端节点服务的IP地址或内网 域名 。 计费模式 展示集群的计费模式,是“按需计费”还是“包年/包月”。 关联集群 展示与当前集群存在关联的集群名称和ID。 关联集群作为当前集群的父集群存在,当前集群是其子集群。例如, KooSearch 服务依赖Elasticsearch向量数据库,此时KooSearch服务即为Elasticsearch集群的关联集群。 当集群存在关联关系时,对关联集群进行以下操作时,系统将同步对当前集群执行对应操作:删除集群、退订服务、续费操作及计费模式变更。 当集群存在关联关系时,当前集群禁止单独执行以下操作:更改集群安全模式、删除集群、退订、续费、变更计费模式。 通过单击关联集群的名称,可以直接跳转至其详情页面查看具体配置及运行信息。 操作 展示集群可执行的操作入口,包含监控信息、重启、删除等其他更多操作。当某一操作无法执行时,按钮将置灰。
  • 通过控制台访问Kibana登录Elasticsearch集群 登录 云搜索服务 管理控制台。 在“集群管理”页面选择需要登录的集群,单击“操作”列中的“Kibana”进入Kibana登录界面。 非安全模式的集群:将直接进入Kibana操作界面。 安全模式的集群:需要在登录页面输入用户名和密码,单击“Log In”进入Kibana操作界面。用户名默认为admin,密码为创建集群时设置的管理员密码。 登录成功后,可在Kibana界面进行相关操作访问集群。
  • 通过内网地址访问Kibana登录Elasticsearch集群 同一VPC下的服务器才能通过Elasticsearch集群的内网访问地址访问Kibana。 登录 云搜索 服务管理控制台。 在集群管理页面,单击集群名称,进入集群基本信息页面。 在集群基本信息页面,获取集群的内网访问地址。 图2 获取内网地址 将集群的内网访问地址的端口号从“9200”改为“5601”,即为Kibana的内网地址。例如,集群的“内网访问IPv4地址”是“192.168.0.***:9200”,则Kibana的内网地址为“192.168.0.***:5601”。 在服务器中,输入Kibana的内网地址即可进入Kibana登录界面。 非安全模式的集群:将直接进入Kibana操作界面。 安全模式的集群:需要在登录页面输入用户名和密码,单击“Log In”进入Kibana操作界面。用户名默认为admin,密码为创建集群时设置的管理员密码。 登录成功后,可在Kibana界面进行相关操作访问Elasticsearch集群。
  • 通过公网地址访问Kibana登录Elasticsearch集群 仅安全模式的集群支持通过Kibana公网访问地址访问Kibana。 在Kibana公网访问特性上线之前(即2020年6月前)创建的Elasticsearch安全集群,不支持开启Kibana公网访问。 Kibana公网访问配置的白名单依赖ELB的白名单能力。更新白名单后,白名单对新建的连接是实时生效的,但对于已存在的长连接,可能会出现去掉的白名单IP地址还能访问Kibana的场景,这是因为要等长连接断开后才生效,预计1分钟左右。 当关闭Kibana公网访问后再重新打开,Kibana的公网地址可能会发生变化,请谨慎操作。 登录云搜索服务管理控制台。 开启Elasticsearch集群的Kibana公网访问。支持在创建集群的时候就配置Kibana公网访问,或者在集群创建完之后再开启Kibana公网访问。 在创建集群时配置Kibana公网访问:操作指导请参见创建Elasticsearch集群(旧版)。 集群创建完之后再开启Kibana公网访问: 在集群管理页面,单击需要配置Kibana公网访问的集群名称,进入集群基本信息页面。 左侧菜单栏选择“Kibana公网访问”,在“Kibana公网访问”右侧单击开关,打开Kibana公网访问功能。 在开启Kibana公网访问页面,配置相关参数。如果集群已配置Kibana公网访问,此时也支持修改相关配置。 表2 配置Kibana公网访问 参数 说明 带宽 设置公网访问的带宽。 取值范围:1-100。 单位:Mbit/s。 访问控制开关 如果关闭访问控制开关,则允许任何IP通过公网IP访问集群Kibana。如果开启访问控制开关,则只允许白名单列表中的IP通过公网IP访问集群Kibana。 白名单 设置允许访问的IP地址或网段,中间用英文逗号隔开。仅当打开“访问控制开关”时才需要配置。 建议开启白名单。 说明: Kibana公网访问配置的白名单依赖ELB的白名单能力。更新白名单后,白名单对新建的连接是实时生效的,但对于已存在的长连接,可能会出现去掉的白名单IP地址还能访问Kibana的场景,这是因为要等长连接断开后才生效,预计1分钟左右。 配置完成后,单击“确定”。 待集群的Kibana公网访问开通以后,在Kibana公网访问页面获取“kibana公网访问地址”。 图1 获取Kibana公网访问地址 在浏览器中,输入“kibana公网访问地址”即可进入Kibana登录界面。 在登录页面输入用户名和密码,单击“Log In”进入Kibana操作界面。用户名默认为admin,密码为创建集群时设置的管理员密码。 登录成功后,可在Kibana界面进行相关操作访问Elasticsearch集群。
  • 更多功能:支持自定义Kibana Base Path公网地址 Elasticsearch 7.10.2版本的Kibana在开通Kibana公网访问后,支持自定义Kibana的Base Path。此时,用户既能使用系统默认的Base Path公网地址访问集群Kibana,也能使用自定义的Base Path公网地址访问集群Kibana。 仅适用于已开通Kibana公网访问的Elasticsearch 7.10.2版本(镜像版本号不低于7.10.2_24.3.3_x.x.x)的集群。 只有集群管理员admin账号在Global Tenant下才能配置自定义Base Path,配置的Base Path可用于全局的Kibana范围。 登录云搜索服务控制台。 在Elasticsearch集群管理列表,选择对应集群,单击操作列的“Kibana”。 使用管理员账号登录Kibana页面。 账户名:admin(默认管理员账户名) 密码:创建安全模式的集群时,设置的管理员密码。 登录成功后,在Kibana操作界面的左侧导航栏选择“Stack Management”。 在Stack Management页面左侧选择“Advanced Settings”。 在Settings页面,自定义Base Path Alias的参数值。该值必须以“/”开头,不能以“/”结尾,允许多层路径,但长度不能超过255字符。 图3 自定义Base Path 配置完成后,单击“Save changes”保存配置。大约10秒后,配置即可生效。 通过地址“Kibana公网访问地址+Base Path Alias”访问Kibana。 例如,Elasticsearch集群的“Kibana公网访问地址”是“https://xx.xx.xx.xx:5601”,配置的“Base Path Alias”是“/test”,则可以通过地址“https://100.93.4.30:5601/test”公网访问集群Kibana。
  • 变更影响 在替换指定节点前,您需要了解以下关键影响和操作建议,以便合理规划变更,最小化业务影响。 性能影响 替换指定节点不会中断业务,但是数据迁移会消耗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次重试)。 在业务低峰期进行规格变更。 变更过程特性 替换指定节点任务一旦启动就无法中止,直到任务成功或失败才会结束。任务失败通常只影响单个节点,在有副本的情况下业务不受影响,但需要及时修复失败节点。
  • 替换指定节点时长 替换指定节点的时长估算公式如下: 变更时长(分钟)= 15(分钟)+ 数据迁移时长(分钟) 其中:15分钟为初始化等非数据迁移操作的基准耗时,是经验值。 数据迁移时长(分钟)= 数据总量(MB)÷ [ 数据节点的CPU核数 x 32(MB/s)x 60(秒)] 其中: 32MB/s表示每个CPU核每秒可处理32MB数据,是经验值。 以上公式为理想状态下的理论估算值,实际迁移速率受集群负载影响。
  • 切换可用区时长 切换可用区的时长估算公式如下: 变更时长(分钟)= 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%的冗余时间。
  • 查看升级任务 在升级页面的“任务记录”列表,可以查看当前升级任务。 展开任务列表,单击“查看进度”查看详细的升级进度。 当“任务状态”为“失败”时,可以重试任务或者直接终止任务。 重试升级:在任务列表的操作列,单击“重试”,重新升级。 终止升级:在任务列表的操作列,单击“终止”,结束升级。 当升级任务终止后,升级失败的节点会维持当前状态,而升级成功的节点不会回退到旧版本。因此,终止升级可能导致集群中存在多个版本(部分节点为旧版本,部分节点为新版本)。建议在处理完问题后尽快重新启动升级,以确保所有节点版本一致,避免影响业务稳定性。 执行跨版本升级时,当系统显示“任务状态”为“失败”,必须验证所有节点均未成功升级,方可终止升级任务。
  • 提升冷数据的查询性能 在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一致。
  • 查询存储在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集群仅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 存算分离 通过存算分离可以实现索引数据的生命周期管理。 热状态的索引数据支持写入,且可以实现毫秒级检索。 冻结状态的索引数据,是指将长期不使用的历史数据转储到CSS服务的OBS桶中(该OBS桶用户无感知,且无法在OBS控制台查看),降低数据的存储成本,提升SSD的存储能力。此时,被冻结的索引数据的检索速率会降低到秒/分级别。 当确定OBS中的历史索引数据不再使用时,可以定期删除数据,释放存储资源。 本文通过OpenSearch Dashboards访问集群,介绍如何使用存算分离。
  • 查看冻结索引任务 执行如下命令,查看冻结索引任务的进度。 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。
  • 升级影响 在进行集群版本升级前,您需要了解以下关键影响和操作建议,以便合理规划升级,确保升级过程平滑且对业务影响最小。 性能影响 升级采用逐个节点滚动进行,确保业务不中断。但该过程中的数据迁移会消耗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版本。
共100000条
提示

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