华为云用户手册

  • 操作步骤 登录容器镜像服务控制台。 在左侧导航栏选择“我的镜像”,单击右侧镜像名称,进入镜像详情页。 在执行镜像安全扫描任务前,请确保“我的镜像”中已经有1个以上的私有镜像。如果您当前账户下没有私有镜像,请参考客户端上传镜像,上传一个镜像到您的镜像仓库中。 在“镜像版本”页签,选择待操作的镜像版本并单击右侧的“镜像扫描”。 图1 我的镜像 单击“重新扫描”,触发镜像的安全扫描,稍等片刻将展示镜像的漏洞扫描结果。 图2 镜像安全扫描结果 漏洞名称:显示该镜像上扫描出的漏洞名称。 修复紧急程度:提示您是否需要立刻处理该漏洞。 软件信息:显示该镜像上受此漏洞影响的软件及版本信息。 解决方案:针对该漏洞给出的解决方案。单击“解决方案”列的链接,查看修复意见。
  • 示例2:触发条件为“正则触发” 假设有一个欢迎页面为“Hello, SWR!”的Nginx镜像(版本号为v0),使用该镜像创建了名称为“nginx”的无状态负载,该负载提供对外访问。 为Nginx镜像添加触发器。 触发器名称填写“Tags_regular_expression”,触发条件选择“正则触发”,输入正则表达式:^v2.*(匹配以v2开头的版本号),选择使用了Nginx镜像的无状态负载及容器。 Nginx镜像新增一个v1版本,该版本的欢迎页面为“Hello, SWR! (v1)”。 Nginx镜像新增一个v2版本,该版本的欢迎页面为“Hello, SWR! (v2)”。 确认是否触发成功。 在“触发器”页签,单击图标,查看触发结果。从图4中可以看出,只有v2版本被触发了,符合设置的正则表达式规则。 图4 触发结果示例 工作负载的访问页面已变更为“Hello, SWR! (v2)”。
  • 示例1:触发条件为“全部触发” 假设有一个欢迎页面为“Hello, SWR!”的Nginx镜像(版本号为v1),使用该镜像创建了名称为“nginx”的无状态负载,该负载提供对外访问。 为Nginx镜像添加触发器。 触发器名称填写“All_tags”,触发条件选择“全部触发”,选择使用了Nginx镜像的无状态负载及容器。 Nginx镜像新增一个v2版本,该版本的欢迎页面为“Hello, SoftWare Repository for Container!”。 图2 镜像版本v2 确认是否触发成功。 在“触发器”页签,单击触发器对应的行的“触发历史”,查看触发结果为“成功”。 图3 触发结果 工作负载的访问页面已变更为“Hello, SoftWare Repository for Container!”。
  • 操作步骤 登录容器镜像服务控制台。 在左侧导航栏选择“我的镜像”,单击右侧镜像名称,进入镜像详情页。 选择“触发器”页签,单击“添加触发器”,根据表1填写相关参数,然后单击“确定”。 图1 添加触发器 表1 触发器 参数 说明 触发器名称 自定义触发器的名称。 字母开头,由字母、数字、下划线_、中划线-组成,下划线、中划线不能连续且不能作为结尾,1-64个字符。 触发条件 支持如下三种触发条件,当镜像有新版本时,触发部署应用。 全部触发:有新的镜像版本生成或镜像版本号不变,镜像内容发生变化重新推送时,触发部署。 指定版本号触发:有指定镜像版本生成或更新时,触发部署。 正则触发:有符合正则表达式的镜像版本生成或更新时,触发部署。正则表达式规则如下: *:匹配不包含路径分隔符“/”的任何字段。 **:匹配包含路径分隔符“/”的任何字段。 ?:匹配任何单个非“/”的字符。 {选项1, 选项2, ...}:同时匹配多个选项。 触发动作 当前仅支持更新容器的镜像,需指定更新的应用,以及该应用下的容器。 触发器状态 选择“启用”。 触发器类型 选择“云容器引擎CCE”或“云容器实例CCI”。 说明: 当前仅“华北-北京四”区域支持“云容器实例CCI”的触发器类型。 选择应用 选择要更新镜像的容器。
  • 操作场景 如果您需要对容器镜像服务进行权限管理,您可以使用统一身份认证服务IAM,设置权限的方法请参见创建用户并授权使用SWR。当您具有SWR Admin或者Tenant Administrator系统权限时,您就拥有了SWR的管理员权限,可以在SWR中为其他IAM用户进行授权。 拥有SWR管理员权限的用户,默认拥有所有组织下的镜像管理权限,即使该用户不在组织的授权用户列表中。 如果您没有SWR的管理员权限,就需要已拥有SWR管理员权限的用户在SWR中进行授权管理,为您添加对某个镜像的权限或对某个组织中所有镜像的权限。 场景示例: 示例一:我是拥有ServiceStage Developer权限(SWR只读权限)的IAM用户,想要下载SWR管理员所创建的“group”组织下的“nginx”镜像。 策略:SWR管理员在“nginx”镜像详情中为您授予“读取”权限,授权完成后,您将享有下载该镜像的权限。 示例二:我是SWR管理员,需要给公司外部员工授权一个组织的镜像上传权限,但是不允许他登录控制台,只能通过Docker客户端push镜像。 策略:您在组织详情“用户”页签下为该员工授予“编辑”权限,并且在IAM中设置访问方式为“编程访问”。 图1 修改访问方式示例
  • 授权方法 容器镜像服务中给IAM用户添加权限有如下两种方法: 在镜像详情中添加授权,授权完成后,IAM用户享有读取/编辑/管理该镜像的权限。 在组织中添加授权,使IAM用户对组织内所有镜像享有读取/编辑/管理的权限。 图2 用户权限 容器镜像服务中为用户添加的权限有如下三种类型: 读取:只能下载镜像,不能上传。 编辑:下载镜像、上传镜像、编辑镜像属性以及添加触发器。 管理:下载镜像、上传镜像、删除镜像或版本、编辑镜像属性、添加授权、添加触发器以及共享镜像。 页面上传镜像功能要求具备组织的编辑或管理权限,在镜像详情中添加的编辑或管理权限不支持页面上传镜像。
  • 支持审计的关键操作列表 表1 云审计服务支持的共享版SWR操作列表 操作名称 资源类型 事件名称 创建命名空间权限 usernamespaceauth createUserNamespaceAuth 修改命名空间权限 usernamespaceauth updateUserNamespaceAuth 删除命名空间权限 usernamespaceauth deleteUserNamespaceAuth 创建软件包 package createPackage 修改软件包 package updatePackage 删除软件包 package deletePackage 创建仓库 repository createRepository 修改仓库 repository updateRepository 删除仓库 repository deleteRepository 创建版本 version createVersion 修改版本 version updateVersion 删除版本 version deleteVersion 上传镜像包 image uploadImagePackage 上传文件 file uploadFile 下载文件 file downloadFile 删除文件 file deleteFile 创建组织 usernamespace createUserNamespace 删除组织 usernamespace deleteUserNamesapce 收藏镜像 usercollections createUserCollections 取消收藏镜像 usercollections deleteUserCollections 创建触发器 trigger createTrigger 修改触发器 trigger updateTrigger 删除触发器 trigger deleteTrigger 创建仓库权限 userrepositoryauth createUserRepositoryAuth 修改仓库权限 userrepositoryauth updateUserRepositoryAuth 删除仓库权限 userrepositoryauth deleteUserRepositoryAuth 创建镜像仓库 imagerepository createImageRepository 修改镜像仓库 imagerepository updateImageRepository 删除镜像仓库 imagerepository deleteImageRepository 删除镜像版本 imagetag deleteImageTag 生成登录指令 dockerlogincmd createDockerConfig 创建共享镜像 imagerepositoryaccessdomain createImageRepositoryAccessDomain 修改共享镜像 imagerepositoryaccessdomain updateImageRepositoryAccessDomain 删除共享镜像 imagerepositoryaccessdomain deleteImageRepositoryAccessDomain 下载镜像层 downloadimagelayer downloadimagelayer
  • 示例1:规则类型为“存活时间” 假设“nginx”镜像包含两个版本:v1和v2,更新时间如下图: 图3 镜像版本 添加老化规则。 规则类型为“存活时间”,保留天数为“3”。 图4 创建老化规则示例 确认规则是否生效。 查看“老化日志”,v1版本的镜像留存时间超过3天(当前时间为2021/09/01 16:00:00),因此被自动清除。 查看“镜像版本”,v1版本已被清除,只剩v2版本。 图5 镜像版本V2 以上现象说明老化规则已生效。
  • 操作步骤 登录容器镜像服务控制台。 在左侧导航栏选择“我的镜像”,单击右侧镜像名称,进入镜像详情页。 选择“镜像老化”页签,单击“添加规则”,根据表1填写相关参数,然后单击“确定”。 图1 创建老化规则 表1 添加镜像老化规则 参数 说明 规则类型 分为存活时间和版本数目。 存活时间:设置该类型的老化规则后,留存时间超过指定时间的老旧镜像将被删除。 版本数目:设置该类型的老化规则后,留存镜像超过指定值时,老旧镜像将被删除。 保留天数 镜像留存的最大天数,可设置为1~365的整数。规则类型设置为“存活时间”时,需要配置此参数。 保留数目 镜像留存的最大数目,可设置为1~1000的整数。规则类型设置为“版本数目”时,需要配置此参数。 过滤标签 输入将被过滤的镜像版本,在应用老化规则前指定版本的镜像将被过滤掉。 过滤正则 输入将被过滤的版本正则式,在应用老化规则前所有版本号满足正则表达式的镜像将被过滤掉。 镜像老化规则添加成功后,系统会立即进行一次查询,清理掉符合老化规则的镜像,且在“老化日志”中显示清理结果。 图2 查看规则列表和老化日志
  • 示例2:规则类型为“版本数目”,且设置“过滤正则” 假设“nginx”镜像包含四个版本:v1、v2、v1.0.0、v2.0.0,如下图: 图6 nginx镜像版本 添加老化规则。 规则类型为“版本数目”,保留数目为“1”,过滤正则为:^v2.*(匹配以v2开头的版本号)。 图7 创建老化规则-版本数目 确认规则是否生效。 因为v2和v2.0.0版本匹配设置的正则表达式,在应用老化规则前会被过滤掉,v1和v1.0.0版本只会保留一个,v1更老旧,因此会被清除掉。 查看“老化日志”和“镜像版本”,v1版本被清除,说明老化规则已生效。 图8 镜像版本示例 这里给出几个过滤正则表达式以供参考: 匹配版本号为数字的版本:^[0-9]*$ 匹配版本号长度为2-5的所有版本:^.{2,5}$ 匹配由26个小写英文字母组成的版本号:^[a-z]+$ 匹配版本号为英文和数字的版本:^[A-Za-z0-9]+$ 在写正则表达式"或"(“|”)的时候请加上括号,如果不加括号会导致老化删除掉该镜像下所有版本。 例如:镜像版本只需要保留包含a或者包含s的版本,此时正则表达式可写成:(.*a.*|.*s.*)。
  • 操作步骤 登录容器镜像服务控制台。 在左侧导航栏选择“我的镜像”,单击右侧镜像名称。 在镜像详情页面单击右上角“镜像自动同步”。 单击图标,选择目标区域和目标组织,然后单击“确定”完成添加。 图1 添加镜像自动同步 目标区域:选择同步的目标区域,例如“华北-北京一”。 目标组织:选择同步的目标组织。 覆盖: 勾选则表示覆盖,同步相同名称相同版本的镜像时,同步后会替换已有的镜像版本。 不勾选则表示不覆盖,同步相同名称相同版本的镜像时,会取消同步并提示已存在相同版本镜像。 在镜像详情页面的“镜像同步记录”页签下,可查看镜像同步启动时间、镜像版本、状态、同步类型、同步耗时等。
  • 操作步骤 确认MRS集群的节点镜像的操作系统版本是否在主机安全服务的Agent支撑的操作系统列表范围内。 登录MRS管理控制台。 在左侧导航栏中选择“现有集群”,单击目标集群名称,进入集群信息页面。 在集群信息页面中,选择“节点管理”页签,单击目标节点组,在展开的节点名称列中单击任一节点,跳转到云服务基本信息控制台。 图1 节点管理 在云服务器详情页面中,选择“基本信息”页签,进入云服务器基本信息页面后,在“云服务器信息”栏中确认“镜像”中EulerOS的操作系统版本。 查看说明:镜像中显示的EulerOS_2.10_x86_64,则代表操作系统为Linux系统版本(X86架构)、版本为EulerOS 2.10 64bit。 图2 操作系统版本 确认MRS节点的操作系统版本是否在HSS服务的Agent支持的操作系统范围中。 HSS服务的Agent支持的操作系统列表请参见支持的操作系统。 是,执行2,安装主机安全HSS服务的Agent。 否,无法安装主机安全服务。 购买主机安全防护配额,并分别登录MRS集群的各个节点安装Agent(MRS集群每个节点都需要安装),安装完成后可开启防护。 确保MRS集群的节点与HSS配额在同一区域,并使用配额所在区域的安装命令或安装包为主机安装Agent。 表1 主机防护开启操作 操作步骤 相关说明 步骤一 购买主机安全防护配额 主机安全服务有基础版、企业版、旗舰版供您选择,具体功能详情及版本差异详情请参见版本功能差异说明。 购买时,“防护主机数量”需跟MRS集群中的节点数量保持一致。 图3 防护主机数量 步骤二 安装Agent Linux版本 Windows版本 Agent是用于执行检测任务,全量扫描主机,实时监测主机的安全状态。 步骤三 开启主机防护 开启主机安全防护时,按照一台主机对应一个配额的关系进行绑定,只有绑定配额的主机才能正常防护。 步骤四 开启告警通知 开启告警通知功能后,您能接收到HSS服务发送的告警通知短信,及时了解主机的安全风险。 步骤五 (可选)基础配置 开启防护后,您可配置常用登录地、常用登录IP、SSH登录IP白名单,以及开启恶意程序自动隔离查杀,进一步提升云服务器的安全。
  • 创建消息模板 在云日志服务管理控制台,单击“告警”,进入告警页面,选择“告警行动规则”。 消息模板默认有以下内置模板,当您所选择的消息模板中未配置消息内容时,云日志服务默认使用内置模板。 关键词模板:关键词告警模板 keywords_template:关键词告警英文模板 sql模板:sql告警模板 sql_template:sql告警英文模板 在消息模板页签,单击“创建”,在界面右侧弹出的“创建消息模板”页面中,配置消息模板的相关参数。 表1 配置消息模板参数 参数名称 说明 校验规则 样例 模板名称 消息模板的名称 输入内容只能是数字、字母、下划线、汉字、中划线,且不能以下划线、中划线等特殊符号开头和结尾。长度不能超过100个字符。 LTS-test 模板描述 对消息模板的描述 输入内容只能是数字、字母、下划线、汉字,且不能以下划线等特殊符号开头和结尾。长度不能超过1024个字符。 - 消息头语言 系统在发送消息时会默认添加消息头 中文(简体) 英文 中文:“尊敬的用户...” 英文:“Dear User...” 通知方式 消息的通知方式类型 邮件 短信 HTTP/HTTPS 钉钉 飞书 企业微信 语音 说明: 语音和飞书的功能仅针对白名单用户提交工单申请使用。详细操作请参考提交工单。 - 主题 消息的主题 支持自定义主题名称和使用变量命名主题两种方式。主题名称长度不能超过512个字符。 仅邮件类型支持配置消息主题。 test 正文 消息的内容 添加变量: 规则原始名称:${event_name} 告警级别:${event_severity} 发生时间:${starts_at} 发生区域:${region_name} 华为云账号:${domain_name} 告警源:$event.metadata.resource_provider 资源类型:$event.metadata.resource_type 资源标识:${resources} 告警状态:$event.annotations.alarm_status 表达式:$event.annotations.condition_expression 当前值:$event.annotations.current_value 统计周期:${frequency} 规则名称:${event_name} 通知频率:$event.annotations.notification_frequency 日志组原始名称:$event.annotations.results[0].log_group_name 日志流原始名称:$event.annotations.results[0].log_stream_name 关键词告警支持的变量 查询时间:$event.annotations.results[0].time 查询日志:(日志长度最多2KB,超过2KB被截断丢弃) $event.annotations.results[0].raw_results 查询URL: $event.annotations.results[0].url 日志组/日志流名称:$event.annotations.results[0].resource_id 说明: 只支持添加首次创建的日志组/日志流原始名称,不支持添加修改后的日志组/日志流名称。 日志流的企业项目ID:$event.annotations.results[0].eps_id 查询自定义字段$event.annotations.results[0].fields.xxx 说明: xxx表示原始日志的结构化字段和内置字段(hostIP、hostName等),日志字段长度最多1KB,超过1KB被截断丢弃。 SQL告警支持的变量 图表0的日志组/流名称:$event.annotations.results[0].resource_id 说明: 只支持添加首次创建的日志组/日志流原始名称,不支持添加修改后的日志组/日志流名称。 0代表第一个图表,1代表第二个图表,以此类推。 图表0的查询语句:$event.annotations.results[0].sql 图表0的查询时间:$event.annotations.results[0].time 图表0的查询URL:$event.annotations.results[0].url 图表0的查询日志:$event.annotations.results[0].raw_results 图表0的日志流的企业项目ID:$event.annotations.results[0].eps_id 复制模板: keywords_template sql_template sql模板 关键词模板 自定义模板(用户通过添加变量创建的消息模板) ${event_name} ${event_severity} ${starts_at} ${region_name} 用户自定义创建消息模板 复制模板创建消息模板 邮件内容支持html标签和消息预览。 企业微信、钉钉、飞书支持markdown语法和消息预览。 针对AOM和LTS,最多可以创建100(包含)条消息模板,如果消息模板数量已达上限100个时,请删除不需要的消息模板后重新创建。 配置完成后,单击“确定”。
  • 自定义模板 在“选择模板”下,选择“自定义模板”,选择已有的结构化模板。模板来源有以下两种方式: 在配置正则分析、JSON、分隔符或Nginx方式时单击左下角的“另存为模板”,系统会弹出“另存模板”页面,输入模板名称,单击“确定”,完成自定义模板的保存,会在“自定义模板”下的模板列表看到该模板。 新增结构化模板,具体操作如下: 在“选择模板”下,选择“自定义模板”,单击“新增结构化模板”,在“新增结构化模板”界面选择正则分析、JSON、分隔符或Nginx方式,进行配置,配置完成后输入模板名称,单击“确定”。完成自定义模板的保存,会在“自定义模板”下的模板列表看到该模板。
  • 聚合函数语句 表1 聚合函数语句 语句 说明 示例 COUNT(*) 统计行数。 SELECT COUNT(*) COUNT(DISTINCT expr) 统计字段中去重后的行数,字段值可以是字符串或者数字,返回值为估算值(默认存在2.3%的标准误差)。 SELECT COUNT(DISTINCT host) SUM(expr) 返回数字总和。 SELECT SUM(visitCount) MIN(expr) 返回数字中的最小值。 SELECT MIN(visitCount) MAX(expr) 返回数字中的最大值。 SELECT MAX(visitCount) AVG(expr) 返回平均值。 SELECT AVG(visitCount) EARLIEST(expr) 表达式必须是数值类型的, 返回expr的最早的值, 即查询的时候最先遇到的值。 SELECT EARLIEST(visitCount) LATEST(expr) 表达式必须是数值类型的, 返回expr的最新的值, 即查询的时候最后遇到的值。 SELECT LATEST(visitCount) APPROX_QUANTILE_DS(expr, probability) 计算数值expr的近似分位数,probability应介于0和1之间。 APPROX_QUANTILE_DS(expr, probability)
  • 自定义模板 在“选择模板”下,选择“自定义模板”,选择已有的结构化模板。模板来源有以下两种方式: 在配置正则分析、JSON、分隔符或Nginx方式时单击左下角的“另存为模板”,系统会弹出“另存模板”页面,输入模板名称,单击“确定”,完成自定义模板的保存,会在“自定义模板”下的模板列表看到该模板。 新增结构化模板,具体操作如下: 在“选择模板”下,选择“自定义模板”,单击“新增结构化模板”,在“新增结构化模板”界面选择正则分析、JSON、分隔符或Nginx方式,进行配置,配置完成后输入模板名称,单击“确定”。完成自定义模板的保存,会在“自定义模板”下的模板列表看到该模板。
  • 步骤2:新建策略并添加规则 策略实行分层管理,可分为租户级策略和项目级策略。其中,租户级策略可以应用到当前租户下所有项目的流水线,项目级策略可以应用到当前项目下所有流水线。本节以租户级策略为例进行介绍。 单击左侧导航“策略”,进入策略管理页面。 租户级策略中默认存在一条“系统策略”,用户可查看和使用该策略,但不能进行编辑和删除。 单击“新建策略”,进入“新建策略”页面,策略名称输入“策略01”,勾选步骤1中新建好的规则“规则01”。 图2 新建策略 单击“确定”。
  • 预置流水线简介 示例项目中预置以下5个流水线任务,可根据需要查看并使用。 表1 预置流水线任务 预置流水线任务 任务说明 phoenix-workflow 基本的流水线任务。 phoenix-workflow-test 测试环境对应的流水线任务。 phoenix-workflow-work Worker功能对应的流水线任务。 phoenix-workflow-result Result功能对应的流水线任务。 phoenix-workflow-vote Vote功能对应的流水线任务。 关于Vote、Result、Worker的说明,请参见方案架构。
  • 常见问题 问题1:观测云支持哪些采集器? 观测云支持官方出品的标准采集器 DataKit ,基于 DataKit 的数据采集能力,支持接入第三方数据。 问题2:观测云是否支持实时采集数据? 观测云支持实时采集、处理并上报数据到观测云工作空间,支持实时数据分析、洞察和异常检测。 问题3:安装 DataKit 之后,观测云工作空间无数据显示? DataKit 安装成功后,默认会采集一批主机相关的采集器,等待约1分钟,即可在观测云工作空间即可查看主机相关的数据。包括在基础设施查看主机、在指标查看已经采集的数据指标、在场景仪表板和笔记应用采集的数据指标等。 问题4:如何删除安装的 DataKit ? 进入部署 DataKit 的服务器,先用指令停止 DataKit 运行,然后删除 DataKit 文件夹即可。 问题5:如何配置采集器? DataKit 安装完成后,在 DataKit 的安装目录下有一个 conf.d 的文件夹,找到需要配置的采集器,进入相应的文件夹,打开对应配置文件即可进行数据采集配置。 问题6:观测云支持采集哪些数据? 观测云具有全域数据采集能力,现已支持上百种数据源的采集,并且存储能力可无限进行扩展。您可以注册并登录观测云控制台,进入「集成」页面查看所有支持采集的数据源。 图1 观测云集成配置
  • 处理步骤 在Kibana的“Dev Tools”页面,执行命令GET _cluster/allocation/explain?pretty查看索引分片未分配的原因。 返回结果中显示索引名称“index” 和未分配解释“explanation” : “primary shard for this replica is not yet active”,表示分片副本未激活。 图1 索引分片未分配 尝试修改该索引的配置,执行命令将其副本数置为0。 PUT /index_name/_settings { "number_of_replicas": 0 } 返回信息“reason”中表示在恢复的数据中存在CSS集群不支持的数据类型。 图2 数据不兼容 根据问题根因,将数据中CSS集群不支持的数据类型删除或选择支持该数据类型的CSS集群版本,再进行备份恢复或数据迁移。
  • 集群一直处于快照中 集群一直处于快照中,有三个比较常见的原因: 集群数据量大或者集群压力大,备份快照耗时长。 单个节点的快照速度默认是40MB/s,同时,快照的性能还受集群情况影响,如果此时集群负载较高,耗时将会更久。可以通过上述章节的查询单个快照信息查询正在执行的快照情况。 执行GET _snapshot/repo_auto/snapshot-name,可以看到剩余还需要完成的shard个数,也可以通过删除快照接口提前终止。 解决方法:等待或者提前终止。 快照信息更新失败。 Elasticsearch将进行中的快照信息保存在cluster state中,快照完成后需要更新快照状态,由于Elasticsearch更新快照状态的接口没有加入重试或者容错机制,比如由于当时集群内存压力大,更新快照动作被熔断,那么这个快照将会一直处于快照中。 解决方法:调用快照删除接口。 临时AK、SK过期。 CSS通过委托将Elasticsearch中的数据写入到用户的OBS中,快照仓库创建的时候,需要去使用委托获取临时的AK 、SK设置到仓库中。由于临时的AK、SK是有时效性的(24小时过期),如果一个快照超过24小时还未完成,那么这个快照将会失败。这种情况会有一个比较大的风险,因为此时仓库的AK、SK过期,无法对这个仓库进行更新、查询、删除操作,这种情况下cluster state信息将会无法清除,只能通过普通重启(滚动重启无法生效)集群来清除cluster state里面残留的快照信息。 解决方法:暂时只能通过普通重启集群来消除,后期CSS会提供终止接口,可以来解决这种无法消除状态的现象。 父主题: 功能使用类
  • 处理步骤 当出现9200端口访问失败错误时,且CSS集群状态为可用状态。执行步骤如下所示: 进入CSS服务管理控制台,在集群列表中,单击集群名称进入集群详情页面,查看此集群使用的VPC和子网。 进入VPC服务管理控制台,在虚拟私有云列表中,单击CSS集群使用的VPC名称,进入VPC详情页面。查看VPC和子网的网段信息。 如图1所示,VPC的网段信息,与子网的网段信息一致。在使用VPN专线访问或使用VPC对等连接访问时,会导致9200端口访问失败。 图1 查看网段信息 如果出现上述错误,请重新创建集群,并选择一个网段与VPC不同的子网,如不存在这样的子网,请在VPC管理控制台重新创建一个子网。 创建新的CSS集群后,将旧集群的数据迁移至新集群中,然后再通过VPN专线访问或使用VPC对等连接访问使用。 如果需要VPN专线访问或使用VPC对等连接访问CSS集群时,请务必保证,新创建的CSS集群,其VPC与子网,具备不同的网段信息。
  • 原因分析 在“使用VPN专线访问CSS集群”或“通过VPC的对等连接访问CSS集群”场景下,其所在的客户端与CSS不在同一VPC下。因此,要求CSS集群的子网与其VPC具有不同的网段。 例如,某一CSS集群,选用的VPC为vpc-8e28,其网络配置为192.168.0.0/16。选用了此VPC下的子网subnet-4a81,subnet-4a81子网的网段与vpc-8e28一致,均为192.168.0.0/16。此时,如果使用VPN专线访问CSS集群或通过VPC的对等连接访问CSS集群,会导致此子网创建的机器内没有该VPC对应的网关,从而影响CSS服务的默认路由的设置,最终导致9200端口访问失败。
  • I/O Reactor STOPPED是什么问题? 首先根据调用栈可以定位到报错来自CloseableHttpAsyncClientBase中的90行,如下图所示: ensureRunning()方法是在每次请求执行开始的时候调用,用来确认client状态是否为ACTIVE,如果不是ACTIVE,则会报错。然后观察CloseableHttpAsyncClientBase中的status何时会变成STOPPED,发现有且仅有两处会set为STOPPED,如下图所示: 图1 第一处STOPPED 图2 第二处STOPPED 由于客户不会手动关闭客户端之后再调用接口,所以有且仅有第一处会导致status切换为STOPPED状态。 对于第一处STOPPED,reactorThread线程是用来在io events发生时调度io events,当内部抛出异常时,最终会将status改为STOPPED状态。然后在bulkAsync请求的回调中抛出异常验证status的状态切换,如下图所示: 当请求失败,status会切换为STOPPED且I/O Reactor将关闭,并使HLRC实例卡住。后续使用该HLRC实例调用任何请求都会失败。此处手动抛出异常是为了复现问题,生产环境中很难分辨是什么原因导致I/O Reactor关闭。
  • 原因分析 导致出现I/O Reactor STOPPED的原因,大致可以分为以下3类: 回调中抛出异常导致。 客户端并发太高导致。 在日志中发现异常后,查看ElasticSearch集群监控指标,如CPU使用率、网络连接数等。 当用户集群配置为5台16U128G的i3.4xlarge.8节点时,且每天上午5点左右会做大量bulk操作,写入大概100G-200G的数据,根据集群监控指标的CPU使用率、网络流入流出速率来看对ElasticSearch节点造成不了压力,网络连接数较高,其它节点情况也相同。但是,有的节点网络连接数高达近9000,5个节点瞬间有将近5万连接数,用户的代码大致是用同一个Rest Client多个线程并发且调用HLRC的bulkAsync接口。客户端一个节点,单是ES的连接就消耗了4-5万个连接数,这种情况很容易造成客户端节点句柄数耗尽,或者连接数耗尽。 ElasticSearch的Rest client导致。建议ElasticSearch完善Rest client,添加exception handler。 Apache(HLRC和LLRC都使用了Apache HTTPComponents Async Client)手册中提到,在与会话通道交互过程中有些I/O异常是可以预料的,这些异常可能会导致单个session终止,但不会影响I/O Reactor和其他session。但某些情况下,当I/O Reactor本身遇到内部问题是,例如底层NIO的一些类中的I/O异常或者没被handle的一些Runtime Exception。这些异常是致命的,会使I/O Reactor关闭。Apache官方建议重写IOReactorExceptionHandler接口。 图3 重写IOReactorExceptionHandler接口 但是尝试了重写ExceptionHandler并放到HLRC的配置中,并通过在回调中抛出异常来模拟异常场景,最后发现这种回调的异常并不会被IOReactorExceptionHandler捕获,运行脚本后也没有异常抛出,所以此处IOReactorExceptionHandler的实现并不好验证。通过ElasticSearch社区issue中其他开发者的验证,添加了IOReactorExceptionHandler后跑很久也不会有问题。所以建议添加IOReactorExceptionHandler,但是注意不要忽略所有异常。 Elasticsearch Rest Client需要有一个exception handler,而不是让用户通过设置IOReactorExceptionHandler来处理异常,且这种方式也不会解决所有的异常。
  • 修订记录 发布日期 修改说明 2024-06-11 合入走读评审意见。 2023-07-04 更新处理步骤:Spring Boot使用Elasticsearch出现Connection reset by peer问题 2023-05-30 新增集群不可用的故障排除:集群负载过高导致集群不可用 更新集群不可用的原因分析和处理方法:集群不可用排查指导 2023-02-03 更新接入集群的参考链接:TransportClient客户端连接css报错 2023-01-31 新增案例: 安全组策略设置不合理导致集群不可用 插件不兼容导致集群不可用 分片未正常分配导致集群不可用 数据类型不兼容导致集群不可用 2023-01-20 新增: Elasticsearch集群报错:unassigned shards all indices es-head插件连接Elasticsearch集群报跨域错误 单节点集群打开Cerebro界面显示告警 ES-Hadoop导数据时报"Could not write all entries"异常 Kibana中删除index pattern报错Forbidden 执行命令update-by-query报错“Trying to create too many scroll contexts” Elasticsearch集群无法创建pattern 2022-12-02 新增: Elasticsearch集群出现写入拒绝“Bulk Reject”,如何解决? Elasticsearch集群创建index pattern卡住,如何解决? 云搜索控制台页面提示系统繁忙 集群冻结状态导致集群不可用 X-pack参数配置导致集群不可用 Elasticsearch集群更改规格失败 安全集群索引只读状态修改报错 Elasticsearch集群某一节点分配不到shard 集群索引插入数据失败 CSS创建索引报错maximum shards open 删除索引报错“403 Forbidden”是什么原因? 2022-08-25 新增: 集群突现load高的故障排查 使用ElasticSearch的HLRC(High Level Rest Client)时,报出I/O Reactor STOPPED Elasticsearch集群最大堆内存持续过高(超过90%) 2022-06-30 界面更新涉及操作步骤更新: 集群不可用排查指导 无法备份索引 无法使用自定义词库功能 快照仓库找不到 2021-10-11 第五次正式发布。 新增 Spring Boot使用Elasticsearch出现Connection reset by peer问题 2021-09-23 第四次正式发布。 新增 快照仓库找不到 2020-11-19 第三次正式发布。 新增 集群不可用排查指导 2020-08-10 第二次正式发布。 新增 TransportClient客户端连接css报错 ECS服务器部署Logstash推送数据到CSS服务报错 2020-04-26 第一次正式发布。
  • 数据量很大,如何进行快照备份? 如果快照数据量极大,快照备份要超过一天时,可参考如下方法进行优化。 快照备份的时候指定索引,比如先分批,默认是*,将会备份所有的索引。 使用自定义快照仓库。 创建自定义仓库。 除了使用云搜索服务提供的repo_auto之外,客户也可以自己创建一个仓库,接口见如下: PUT _snapshot/my_backup { "type" : "obs", "settings" : { "bucket" : "css-backup-name", //桶名 "base_path" : "css_backup/711/", //备份路径 "chunk_size" : "2g", "endpoint" : "obs.xxx.com:443", //OBS域名地址 "region" : "xxx", //Region名称 "compress" : "true", "access_key": "xxxxx", //AK "secret_key": "xxxxxxxxxxxxxxxxx" //SK "max_restore_bytes_per_sec": "100mb", //OBS速度,默认是40MB,可以根据实际性能调大 "max_snapshot_bytes_per_sec": "100mb" } } 使用自定义仓库创建快照。 PUT _snapshot/my_backup/snapshot_name(快照名称) { "indices": "*", //备份的索引,*表示索引,逗号分隔 "ignore_unavailable": true, //是否忽略单个index是否可用,true表示忽略 "include_global_state": false //默认false表示cluster state和其他的一些state不会保存下来 } 查询快照状态。 GET _snapshot/my_backup/snapshot_name/_status 恢复自定义仓库中的索引。 POST /_snapshot/my_backup/snapshot_name/_restore { "indices": "test-00000000000", "ignore_unavailable": true, "include_global_state": false, "rename_pattern": "(.+)", "rename_replacement": "$1" } 父主题: 功能使用类
  • 问题现象 “集群状态”为“不可用”。 单击集群名称进入集群基本信息页面,选择“日志管理”,单击“日志查询”页签,可见日志内容存在警告“master not discovered or elected yet, an election requires at least 2 nodes with ids [xxx, xxx, xxx, ...], have discovered [xxx...] which is not a quorum”。 图1 节点报错日志示例
  • 处理步骤 在集群管理页面,单击不可用的集群名称,进入集群基本信息页面。 单击“配置信息”中的安全组名称,进入当前集群所选安全组的基本信息页面。 分别查看“入方向规则”和“出方向规则”页签下,是否存在“策略”为“允许”,“协议端口”为“TCP : 9300”,“类型”为“IPv4”的安全组规则。 是,联系技术支持定位集群不可用问题。 否,执行下一步。 修改集群当前所选安全组信息,放通9300通信端口。 在当前集群所选安全组基本信息界面,选择“入方向规则”页签。 单击“添加规则”,在添加入方向规则对话框设置“优先级”为“100”,“策略”选择“允许”,“协议端口”选择“基本协议/自定义TCP”,端口填写“9300”,“类型”选择“IPv4”,“源地址”选择“安全组”下的集群当前安全组名称,即同安全组内放通。 图2 添加安全组规则 单击“确定”即可完成放通9300端口的设置。 同样的步骤,在“出方向规则”页签添加放通9300端口的设置。 安全组放通9300端口后,等待集群自动恢复可用状态。
  • 问题现象 ECS服务器部署logstash,然后推送数据到云搜索服务CSS,出现错误信息如下: LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError: Got response code '500' contacting Elasticsearch at URL 'https://192.168.xx.xx:9200/_xpack'。
共100000条