このトピックでは、Auto Scalingのライフサイクルフック機能とCloudOps Orchestration Service (OOS) テンプレートを組み合わせて、Apsara File Storage NAS (NAS) ファイルシステムをLinuxを実行するElastic Compute Service (ECS) インスタンスにマウントするタスクを自動化する方法について説明します。
前提条件
スケーリンググループが作成され、有効状態になります。
NASファイルシステムを用意し、マウント対象を追加する。 マウントターゲットの詳細については、「マウントターゲットの管理」をご参照ください。 NASファイルシステムのマウントターゲットは、次の要件を満たす必要があります。
スケーリンググループのネットワークタイプが仮想プライベートクラウド (VPC) の場合、マウントターゲットのネットワークタイプもVPCである必要があります。 マウントターゲットとスケーリンググループは同じVPCに存在する必要があります。
スケーリンググループのネットワークタイプがクラシックネットワークの場合、マウントターゲットのネットワークタイプもクラシックネットワークである必要があります。
マウント対象のプロトコルは, NFS (Network File System) である必要があります。
CloudOps Orchestration Service (OOS) 用にRAMロールが作成されます。 RAMロールの信頼できるエンティティはAlibaba Cloud Service、信頼できるサービスはCloudOps Orchestration Service、RAMロールはOOSテンプレートで操作を実行する権限を持っている必要があります。 詳細については、「RAMを使用してOOSに権限を付与する」をご参照ください。
説明このトピックでは、OOSServiceRole RAMロールを例として使用します。 他のロールを使用することもできます。
背景情報
NASファイルシステムは、別個のファイルストレージエンティティとして機能する。 NASファイルシステムをECSインスタンスにマウントすると、NASファイルシステムをローカルファイルシステムの一部であるかのように操作できます。 この統合により、データ保護と運用回復力が強化されます。 Auto Scalingは現在、NASファイルシステムのスケーリング設定への統合をサポートしていません。 ただし、ライフサイクルフック機能とOOSテンプレートを組み合わせて、NASファイルシステムをECSインスタンスに自動的にマウントできます。 この方法は、ECSインスタンスの作成後にNASファイルシステムを手動でマウントするよりも効率的です。
手順
この例では、ACS-ESS-LifeCycleAttachNASFileSystemToInstanceパブリックテンプレートを使用して、Linuxを実行するECSインスタンスにNASファイルシステムをマウントするタスクを自動化する方法を示します。 以下の手順を実行します。
ステップ1: RAMロールにOOSの権限を付与
OOSテンプレートを実行する権限が必要です。 ACS-ESS-LifeCycleAttachNASFileSystemToInstanceテンプレートには、O&Mタスクの実行に必要なECS、Auto Scaling、およびNASファイルシステムリソースが含まれています。
RAMコンソールにログインします。
ポリシーを作成します。
左側のナビゲーションウィンドウで、 を選択します。
ポリシーページで、ポリシーの作成をクリックします。
ポリシーの作成ページで、JSONタブをクリックして、ビジネス要件に基づいてパラメーターを設定し、OKをクリックします。
この例で使用する設定を次の表に示します。 次の表に記載されていないパラメーターは、既定の設定にデフォルトします。
パラメーター
説明
名前
ESSHookPolicyForAttachNASを入力します。
ポリシードキュメント
以下の内容を入力します。
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInvocations", "ecs:RunCommand", "ecs:DescribeInvocationResults", "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
ポリシーをOOSServiceRole RAMロールにアタッチします。
左側のナビゲーションウィンドウで、 を選択します。
OOSServiceRole RAMロールを見つけて、アクション列の権限付与をクリックします。
OOSが承認を完了するために引き受けるOOSServiceRole RAMロールに必要な権限を追加します。
[権限付与] パネルで、[リソーススコープ] と [ポリシー] を設定します。 設定が完了したら、[権限の付与] をクリックします。
この例で使用する設定を次の表に示します。 次の表に記載されていないパラメーターは、既定の設定にデフォルトします。
パラメーター
説明
リソーススコープ
値を [アカウント] に設定します。
ポリシー
ESSHookPolicyForAttachNASのカスタムポリシーを選択します。
手順2: スケールアウト目的のライフサイクルフックを作成し、スケールアウトイベントをトリガー
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
目的のスケーリンググループを見つけ、次のいずれかの方法でスケーリンググループの詳細ページを開きます。
スケーリンググループ名 /ID列のスケーリンググループのIDをクリックします。
[操作] 列の [詳細] をクリックします。
ライフサイクルフックを作成します。
詳細ページの上部で、ライフサイクルフックタブをクリックします。
[ライフサイクルフックの作成] をクリックします。
ビジネス要件に基づいてパラメーターを設定し、OKをクリックします。
この例で使用する設定を次の表に示します。 次の表に記載されていないパラメーターは、既定の設定にデフォルトします。
パラメーター
説明
名前
ESSHookForAttachNASを入力します。
スケーリングアクティビティ
[スケールアウトイベント] を選択します。
タイムアウト期間
ビジネス要件に基づいてタイムアウト期間を設定します。 この例では、値を300に設定します。 単位は秒です。
説明タイムアウト期間は、インスタンスに対してカスタム操作を実行できる期間です。 タイムアウト期間がカスタム操作の実行に必要な期間よりも短い場合、操作は失敗する可能性があります。 インスタンスでカスタム操作を実行するために必要な期間を見積もり、見積もりに基づいてタイムアウト期間を設定することを推奨します。
デフォルトの実行ポリシー
[続行] を選択します。
ライフサイクルフックが有効になったときに通知を送信
テンプレートに次のパラメーターを設定します。
[OOSテンプレート] を選択します。
[パブリックテンプレート] を選択します。
[ACS-ESS-LifeCycleAttachNASFileSystemToInstance] を選択します。
ACS-ESS-LifeCycleAttachNASFileSystemToInstanceパブリックテンプレートで、次のパラメーターを設定する必要があります。
mountTargetDomain: NASファイルシステムのマウントターゲットのドメイン名を入力します。
MountDir: NASファイルシステムをマウントするECSインスタンス上のディレクトリを指定します。 デフォルトのディレクトリは /mntです。
FileSystemVersion: プロトコルタイプを指定します。 値0は、NFSv4プロトコルを使用してNASファイルシステムをマウントすることを示します。 値1は、NFSv3プロトコルを使用してNASファイルシステムをマウントすることを示します。 この例では、0が使用されます。
RateControl: レート制御タイプを指定します。 有効な値: バッチベースの制御および同時実行ベースの制御。 この例では、同時実行ベースの制御が使用されています。
OOSAssumeRole: OOSServiceRoleを選択します。 ステップ1では、OOSServiceRoleに、ECS、Auto Scaling、およびNASファイルシステムリソースに対する権限が付与されます。 RAMロールを引き受けた後、OOSは前述の権限を取得します。
スケールアウトイベントをトリガーします。
この例では、スケールアウトイベントは、スケーリングルールを実行することによって手動でトリガーされます。 スケジュールタスクまたはイベントトリガータスクを使用して、スケールアウトイベントをトリガーすることもできます。
説明スケーリングルールを手動で実行したときにスケーリングアクティビティがトリガーされると、ライフサイクルフックが有効になります。 スケーリンググループにECSインスタンスを手動で追加または削除する場合、ライフサイクルフックは有効になりません。
表示されるページの上部で、スケーリングルールとイベントトリガータスクタブをクリックします。
スケーリングルールタブで、スケーリングルールの作成をクリックします。
スケーリングルールの作成ダイアログボックスで、ビジネス要件に基づいてパラメーターを設定し、OKをクリックします。
この例で使用する設定を次の表に示します。 次の表に記載されていないパラメーターは、既定の設定にデフォルトします。
パラメーター
説明
ルール名
Add1を入力します。
ルールタイプ
[シンプルスケーリングルール] を選択します。
操作
値をAdd 1 Instancesに設定します。
スケーリングルールタブで、Add1スケーリングルールを見つけて、アクション列の実行をクリックします。
スケーリングルールの実行メッセージで、OKをクリックします。
スケーリングルールが実行されると、Auto scalingは1つのECSインスタンスをスケーリンググループに追加します。 ただし、ESSHookForAttachNASライフサイクルフックが有効であるため、ECSインスタンスは [保留中の追加] 状態になります。 ライフサイクルフックのタイムアウト期間中、Auto Scalingは、ACS-ESS-LifeCycleAttachNASFileSystemToInstanceパブリックテンプレートで定義されているO&Mタスクを実行するようにOOSに通知します。
自動的に作成されたECSインスタンスが期待どおりかどうかを確認します。
詳細ページの上部で、インスタンスタブをクリックします。
自動的に作成されたECSインスタンスを検索し、ECSインスタンスID /名前列を作成します。
基本情報セクションで、接続をクリックします。
ECSインスタンスにログインし、次のコマンドを実行してマウント結果を表示します。
df -h | grep aliyun
次の図に示すように、コマンド出力にNASファイルシステムのマウントパスが存在する場合、NASファイルシステムがマウントされます。
nfsstat -c
コマンドを実行して、プロトコルバージョンを表示することもできます。Client nfs v4
は、プロトコルバージョンがv4であることを示します。ECSインスタンスが作成されていてもNASファイルシステムが関連付けられていない場合は、OOSコンソールに移動してO&M操作の実行を表示します。 詳細については、「手順3 :( オプション) OOS実行の表示」をご参照ください。
ステップ3: (オプション) OOS実行の表示
よくある質問
O&Mタスクの実行に失敗した場合は、実行結果のエラーメッセージに基づいて問題のトラブルシューティングを行います。 詳細は、「よくある質問」をご参照ください。
次の表に、一般的なエラーメッセージを示します。
エラーメッセージ | 原因 | 解決策 |
Forbidden.Unauthorizedメッセージ: 指定されたアクションに必要な権限が提供されていません。 | 現在のアクションの実行をAuto Scalingに許可していません。 | OOSServiceRole RAMロールに必要な権限があるかどうかを確認します。 |
Forbidden.RAMメッセージ: 指定されたリソースを操作する権限がユーザーにないか、このAPIがRAMをサポートしていません。 | RAMユーザーまたはRAMロールに、対応するリソースを操作する権限がありません。 | OOSServiceRole RAMロールに必要な権限があるかどうかを確認します。 たとえば、RAMロールにOOS権限を付与できます。 OOSがOOSテンプレートで宣言されたリソースを管理する前に、RAMロールに必要な権限を付与する必要があります。 |
LifecycleHookIdAndLifecycleActionToken.Invalid message: 指定したlifecycleActionTokenとlifecycleActionIdは、プロセスライフサイクル内のアクションと一致しません。 | 進行中のライフサイクルフックアクションが終了または停止されました。 | ライフサイクルフックのタイムアウト期間を評価して、OOSテンプレートで指定されたO&Mタスクが割り当てられた制限時間内に完了できることを確認します。 |