翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SQS に基づくスケーリングを設定
このセクションでは、Amazon SQS に基づいてスケーリングを設定する方法について説明します。
ステップ 1: CloudWatch カスタムメトリクスを作成する
カスタムメトリックスは、選択したメトリックス名と名前空間を使用して定義されます。カスタムメトリクスの名前空間を AWS/
で始めることはできません。カスタムメトリクスの発行に関する詳細については、Amazon CloudWatch ユーザーガイドのトピック「カスタムメトリクスをパブリッシュする」を参照してください。
この手順に従って、まず AWS アカウントから情報を読み取ってカスタムメトリクスを作成します。次に、前のセクションで推奨されたようにインスタンスメトリクスごとにバックログを計算します。最後に、この数字を CloudWatch に 1 分間隔で発行します。可能な限り、システム負荷の変化に迅速に対応できるように、メトリクスを 1 分単位でスケーリングすることを強くお勧めします。
CloudWatch カスタムメトリクスを作成するには (AWS CLI)
-
SQS get-queue-attributes
コマンドを使用して、キューで待機しているメッセージ数を取得します ( ApproximateNumberOfMessages
)。aws sqs get-queue-attributes --queue-url
https://sqs.region.amazonaws.com/123456789/MyQueue
\ --attribute-names ApproximateNumberOfMessages -
describe-auto-scaling-groups
コマンドを使用して、グループの実行キャパシティーを取得します。これは InService
ライフサイクル状態にあるインスタンスの数です。このコマンドは、Auto Scaling グループのインスタンスとそのライフサイクル状態を返します。aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names
my-asg
-
キューからの取得に使用できるメッセージの概数をグループの実行キャパシティで除算して、インスタンスあたりのバックログを算出します。
-
1 分ごとに実行してインスタンスあたりのバックログの値を取得し、それを CloudWatch カスタムメトリクスに公開するスクリプトを作成します。カスタムメトリクスを公開する際は、そのメトリクスの名前、名前空間、単位、値、および 0 以上のディメンションを指定します。ディメンションには、そのディメンションの名前と値を含みます。
カスタムメトリクスを公開するには、
斜体
で示されたプレースホルダーの値を好みのメトリクス名、メトリクスの値、名前空間 (「AWS
」で開始することはできません)、ディメンション (オプション) に置き換えてから、次の put-metric-dataコマンドを実行します。 aws cloudwatch put-metric-data --metric-name
MyBacklogPerInstance
--namespaceMyNamespace
\ --unit None --value20
--dimensionsMyOptionalMetricDimensionName=MyOptionalMetricDimensionValue
アプリケーションが希望するメトリクスを出力すると、データが CloudWatch に送信されます。メトリクスは CloudWatch コンソールで表示できます。にログイン AWS Management Console し、CloudWatch ページに移動することでアクセスできます。その後、メトリクスを表示するには、メトリクスページに移動するか、検索ボックスを使用してメトリクスを検索します。メトリクスの表示の詳細については、Amazon CloudWatch ユーザーガイドの「使用可能なメトリクスの表示」を参照してください。
ステップ 2: ターゲット追跡スケーリングポリシーを作成する
この時点で、作成したメトリクスをターゲット追跡スケーリングポリシーに追加できるようになっています。
ターゲット追跡スケーリングポリシーを作成するには (AWS CLI)
-
以下の
cat
コマンドを使用して、スケーリングポリシーのターゲット値と、カスタムメトリクスの仕様を指定する JSON ファイル (名前:config.json
) をホームディレクトリに保存します。各ユーザー入力プレースホルダー
を独自の情報に置き換えます。TargetValue
には、インスタンスあたりの適正バックログメトリックスを計算して、それを入力します。この数を計算するには、上記のセクションで説明しているとおり、標準のレイテンシー値を決定し、その値をメッセージの処理にかかる平均時間で割ります。ステップ 1 で作成したメトリクスにディメンションを指定しなかった場合は、カスタムメトリクスの仕様にディメンションを含めないでください。
$ cat ~/config.json { "TargetValue":
100
, "CustomizedMetricSpecification":{ "MetricName":"MyBacklogPerInstance
", "Namespace":"MyNamespace
", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName
", "Value":"MyOptionalMetricDimensionValue
" } ], "Statistic":"Average", "Unit":"None" } } -
ut-scaling-policy
コマンドを使用して、前のステップで作成した config.json
と共に、スケーリングポリシーを作成します。aws autoscaling put-scaling-policy --policy-name
sqs100-target-tracking-scaling-policy
\ --auto-scaling-group-namemy-asg
--policy-type TargetTrackingScaling \ --target-tracking-configurationfile://~/config.json
これにより、2 つのアラーム (スケールアウトとスケールイン) が作成されます。これにより、CloudWatch に登録されたポリシーの Amazon リソースネーム (ARN) も返されます。CloudWatch はこれを使用して、メトリクスのしきい値が超過するたびにスケーリングを呼び出します。
ステップ 3: スケーリングポリシーをテストする
設定が完了したら、スケーリングポリシーが機能していることを確認します。SQS キュー内のメッセージ数を増やし、Auto Scalingグループが追加の EC2 インスタンスを起動したことを確認することによってテストできます。SQS キュー内のメッセージ数を減らし、Auto Scaling グループが EC2 インスタンスを終了したことを確認することによってもテストできます。
スケールアウト機能をテストするには
-
「Amazon SQS スタンダードキューの作成とメッセージの送信」、または「Amazon SQS FIFO キューを作成してメッセージを送信する」の手順に従って、キューにメッセージを追加します。インスタンスあたりのバックログメトリックスがターゲット値を超えるようにキュー内のメッセージ数を増やしたことを確認します。
この変更により、アラームの呼び出しに数分かかる場合があります。
-
describe-auto-scaling-groups
コマンドを使用して、グループがインスタンスを起動したことを確認します。 aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg
スケールイン機能をテストするには
-
メッセージの受信と削除 (コンソール) に関するページの手順に従い、キューからメッセージを削除します。インスタンスあたりのバックログメトリックスがターゲット値を下回るようにキュー内のメッセージ数を減らしたことを確認します。
この変更により、アラームの呼び出しに数分かかる場合があります。
-
describe-auto-scaling-groups
コマンドを使用して、グループがインスタンスを終了したことを確認します。 aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg