为ECS实例挂载NAS文件系统

本教程介绍如何使用弹性伸缩生命周期挂钩挂起ECS实例,并结合系统运维管理 OOS(CloudOps Orchestration Service)的模板,实现为Linux系统的ECS实例自动挂载NAS文件系统。

前提条件

  • 已创建伸缩组,并且伸缩组处于启用状态。

  • 已创建NAS文件系统并添加挂载点,挂载点相关操作,请参见管理挂载点。挂载点满足以下条件:

    • 如果伸缩组的网络类型为专有网络,挂载点的网络类型必须为专有网络,且和伸缩组位于同一个专有网络下。

    • 如果伸缩组的网络类型为经典网络,挂载点的网络类型必须为经典网络。

    • 挂载协议类型为NFS。

  • 已为OOS服务创建RAM角色。该RAM角色的可信实体必须为阿里云服务,受信服务为系统运维管理,并且拥有执行OOS模板的权限。具体操作,请参见为OOS服务设置RAM权限

    说明

    本教程中使用的示例RAM角色为OOSServiceRole,您也可以使用其他自定义的RAM角色。

背景信息

NAS文件系统是文件存储的实例,将文件系统挂载到ECS实例后,可以像使用本地文件系统一样使用文件存储,提高数据安全和操作容错率。目前创建伸缩配置时暂不支持关联NAS文件系统,但您可以通过生命周期挂钩和OOS模板为ECS实例自动挂载NAS文件系统,相比创建ECS实例后再手动挂载文件系统,效率更高。

操作步骤

本教程以OOS公共模板ACS-ESS-LifeCycleAttachNASFileSystemToInstance为例,实现在扩容时自动为Linux系统的ECS实例挂载NAS。步骤如下:

步骤一:对RAM角色授予OOS服务权限

您需要拥有OOS的执行权限才能执行OOS的模板。执行ACS-ESS-LifeCycleAttachNASFileSystemToInstance中定义的运维操作时涉及云服务器ECS、弹性伸缩、NAS文件系统的资源。

  1. 登录RAM控制台

  2. 创建权限策略。

    1. 在左侧导航栏,单击权限管理 > 权限策略

    2. 单击创建权限策略

    3. 创建权限策略页面,选择权限策略的配置模式为脚本编辑后,设置其他参数项,然后单击确定

      本教程中使用的配置如下表所示,未提及的配置保持默认即可。

      配置项

      说明

      名称

      填写ESSHookPolicyForAttachNAS。

      策略内容

      输入以下内容:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ecs:DescribeInvocations",
                      "ecs:RunCommand",
                      "ecs:DescribeInvocationResults",
                      "ecs:DescribeInstances"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "ess:CompleteLifecycleAction"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
  3. 为OOSServiceRole授予权限策略。

    1. 在左侧导航栏,单击身份管理 > 角色

    2. 找到OOSServiceRole,在操作列,单击新增授权

      为OOS服务扮演的RAM角色OOSServiceRole添加所需权限即可完成授权。

    3. 新增授权页面,指定资源范围和权限配置,然后单击确认新增授权

      本教程中使用的配置如下表所示,未提及的配置保持默认即可。

      配置项

      说明

      资源范围

      选择账号级别。

      权限策略

      添加自定义策略ESSHookPolicyForAttachNAS。

步骤二:为扩容活动创建生命周期挂钩并触发扩容

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,单击伸缩组管理
  3. 在顶部菜单栏处,选择地域。
  4. 找到待操作的伸缩组,选择任一种方式打开伸缩组详情页面。
    • 伸缩组名称/ID列,单击伸缩组ID。
    • 操作列,单击查看详情
  5. 为扩容活动创建生命周期挂钩。

    1. 在页面上方,单击生命周期挂钩页签。
    2. 单击创建生命周期挂钩

    3. 指定生命周期挂钩配置,然后单击确认

      本教程中使用的配置如下表所示,未提及的配置保持默认即可。

      配置项

      说明

      名称

      输入ESSHookForAttachNAS。

      适用的伸缩活动类型

      选择弹性扩张活动

      超时时间

      输入适当的超时时间,例如300秒。

      说明

      超时时间即用于执行自定义操作的时间,若超时时间过短,可能导致自定义操作失败,请评估自定义操作耗时并设置适当的超时时间。

      默认执行策略

      选择继续

      挂钩期间执行的动作

      通过指定的方式发出通知或者自动执行更多操作,模板配置如下:

      • 通知方式:选择OOS模板

      • OOS模板类型:选择公共模板

      • 公共模板:选择ACS-ESS-LifeCycleAttachNASFileSystemToInstance。

      ACS-ESS-LifeCycleAttachNASFileSystemToInstance的执行参数配置如下:

      • 挂载点域名:填入NAS文件系统的挂载点域名。

      • 挂载目录:ECS实例中挂载文件系统的目录,默认为/mnt

      • 文件系统版本:0表示使用NFS v4协议挂载文件系统,1表示使用NFS v3协议挂载文件系统。本教程中以0为例。

      • 速率控制:速率控制类型包括并发控制批次控制两种方式。本教程以默认的并发控制类型为例。

      • OOS扮演的RAM角色:选择指定RAM角色,使用该角色的权限,然后选择OOSServiceRole,操作步骤中已为RAM角色OOSServiceRole添加操作ECS、弹性伸缩、NAS文件系统资源的权限,OOS服务扮演该RAM角色即可拥有相关权限。

  6. 触发扩容。

    本教程中以手动执行伸缩规则为例,您也可以通过定时任务、报警任务等方式触发扩容。

    说明

    手动执行伸缩规则触发扩缩容时,生命周期挂钩会生效,但手动添加或移出已有ECS实例时,生命周期挂钩不会生效。

    1. 在页面上方,单击伸缩规则与报警任务页签。

    2. 伸缩规则页签下,单击创建伸缩规则

    3. 设置伸缩规则的属性,然后单击确认

      本教程中使用的配置如下表所示,未提及的配置保持默认即可。

      配置项

      说明

      规则名称

      输入Add1。

      伸缩规则类型

      选择简单规则

      执行的操作

      设置为增加1台。

    4. 在伸缩规则列表下,找到新建的伸缩规则Add1,在操作区域,单击执行

    5. 单击确定

    执行伸缩规则后自动创建1台ECS实例,由于伸缩组内已创建生命周期挂钩ESSHookForAttachNAS,ECS实例会被挂起,同时自动通知OOS服务执行ACS-ESS-LifeCycleAttachNASFileSystemToInstance中定义的运维操作。

  7. 查看自动创建的ECS实例是否符合预期。

    1. 在页面上方,单击实例列表页签。
    2. 找到自动创建的ECS实例,在云服务器ID/名称区域,单击实例ID。

    3. 基本信息区域,单击远程连接

    4. 登录ECS实例后,运行命令查看挂载结果。

      df -h | grep aliyun

      如下图所示,结果中存在NAS文件系统的挂载地址,说明自动挂载成功。您也可以运行nfsstat -c查看使用的协议版本,Client nfs v4表示使用的协议版本为v4。attachnas-result

      如果成功创建了ECS实例,但ECS实例并没有挂载NAS文件系统,请前往OOS控制台查看运维任务执行情况。具体操作,请参见(可选)步骤三:查看OOS执行情况

(可选)步骤三:查看OOS执行情况

  1. 登录OOS管理控制台

  2. 在左侧导航栏,选择自动化任务 > 任务执行管理

  3. 按开始时间找到执行,然后在操作列,单击详情

  4. 进入执行详情页面,查看执行的相关信息。

    例如,您可以基本信息区域查执行ID、执行状态等,也可以在执行结果区域,单击任务节点查看执行详情。具体操作,请参见查看执行详情

    说明

    如果执行失败,在执行详情页面也会显示相关的报错信息。

常见问题

如果运维任务执行失败,请根据执行结果中的报错信息排查原因。常见的报错信息及解决方案如下:

  • 报错信息:Forbidden.Unauthorized message: A required authorization for the specified action is not supplied.

    解决方案:请检查是否为RAM角色OOSServiceRole添加了相应的权限,例如步骤一中的示例权限。您需要为RAM角色添加操作权限,确保OOS服务能够操作OOS模板中涉及的资源。

  • 报错信息:Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM.

    解决方案:请检查是否为RAM角色OOSServiceRole添加了相应的权限,例如步骤一中的示例权限。您需要为RAM角色添加操作权限,确保OOS服务能够操作OOS模板中涉及的资源。

  • 报错信息:LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action.

    解决方案:请评估生命周期挂钩的超时时间,确保在超时时间内可以执行完OOS模板中定义的运维任务。