私が理解しているように、Amazon自動スケーリンググループがダウンスケールすると、終了したインスタンスに対して開いている接続はすべて失われます。正常な終了はありません。
他の人がこれをどのように扱っているのだろうか。
私の考えでは、接続のイニシエーターは、インスタンスが意図的に終了されるのではなく、障害が発生した状況に対処できる必要があるため、障害を処理する必要があります。
何かご意見は?
ありがとう、
ピート
私が理解しているように、Amazon自動スケーリンググループがダウンスケールすると、終了したインスタンスに対して開いている接続はすべて失われます。正常な終了はありません。
他の人がこれをどのように扱っているのだろうか。
私の考えでは、接続のイニシエーターは、インスタンスが意図的に終了されるのではなく、障害が発生した状況に対処できる必要があるため、障害を処理する必要があります。
何かご意見は?
ありがとう、
ピート
ロード バランサーを使用している場合は、[インスタンス] タブでコネクション ドレイン オプションをオンにできます。インスタンスを終了する前に、接続が閉じられるまで待機する時間を設定できます。最大は 3600 秒です。https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/を参照してください。
私が行った方法は、ライフサイクルフックを使用することです。一定時間 (デフォルトは 1 時間) 終了プロセスを中断できます。
作業が完了すると再開されるように設計されていますが、ハッキングされた接続のドレインに対してタイムアウトが機能しました。
この状態の Auto Scaling グループ インスタンスにフックを Terminating:Wait 状態に追加するオプションがあります。この状態では、これらのインスタンスが終了する前にアクセスできます。
ソース: http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingGroupLifecycle.html
短所: CLI 経由でセットアップしますが、それほど悪くはありません。
その方法: http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/adding-lifecycle-hooks.html
IAM を作成するときは、次のポリシーが必要になります。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"autoscaling:PutLifecycleHook",
"autoscaling:DeleteLifecycleHook",
"autoscaling:RecordLifecycleActionHeartbeat",
"autoscaling:CompleteLifecycleAction",
"autoscaling:DescribeAutoscalingGroups",
"autoscaling:DescribeLifecycleHooks",
"autoscaling:PutInstanceInStandby",
"autoscaling:PutInstanceInService",
"iam:AddRoleToInstanceProfile",
"iam:CreateInstanceProfile",
"iam:CreateRole",
"iam:PassRole",
"iam:ListInstanceProfiles",
"ec2:Describe*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
幸運を!
通常、自動スケーリングされたインスタンスの前に Elastic Load Balancer (ELB) を使用します。ロードバランサーは、終了しようとしているインスタンスへのリクエストの送信を停止します。たとえば、次の形式を使用する場合:
as-put-scaling-policy MyScaleDownPolicy --auto-scaling-group MyAutoScalingGroup --adjustment=-1 --type ChangeInCapacity --cooldown 300
インスタンスが終了する前に、インスタンスが持っていたリクエストの処理を完了するのに十分な時間が得られます。
詳細については、http: //docs.amazonwebservices.com/AutoScaling/latest/DeveloperGuide/US_SetUpASLBApp.htmlを参照してください。
これらのインスタンスには ELB グループが必要であることに注意してください。AWS Auto-scaling ドキュメントから:
Auto Scaling は、終了する特定のインスタンスを決定した後、そのインスタンスが Elastic Load Balancing グループの一部であるかどうかを確認します。その場合、Auto Scaling は負荷分散グループからインスタンスを削除するようにロード バランサーに指示し、削除が完了するまで待機します。インスタンスが Elastic Load Balancing グループの一部でないと Auto Scaling が判断した場合、Auto Scaling はシステムシャットダウンスクリプトを実行してインスタンスを終了しようとします。