信頼性とビジネス継続性 #1
ポイント
ALB はターゲットグループのヘルスチェックで、指定したパスへ HTTP リクエストを送り、応答コードが成功コード (Matcher) に一致するかでターゲットごとの正常・異常を判定します。異常と判定されたターゲットは、原則としてリクエストの送信先から外れます。
・ヘルスチェックのパスが、何を確認するかを決めます。デフォルトは / です。依存先を確認しないパスでは、インスタンスに到達できることしか確認できません。データベースなどの依存先まで含めて見たいときは、その結果が応答に現れるパスを指定します。
・判定に使われるのはヘルスチェックの応答だけです。外部の監視で異常を検知して通知しても、ALB の振り分けは変わりません。
「処理できる状態のインスタンスにだけリクエストを送る」という要件では、ヘルスチェックのパスが依存先まで確認するものになっているかを見直します。
ポイント
EBS のスナップショットは、増分で保存されることを前提に扱います。
・作成 — 最初は書き込まれたブロックをすべて、以降は前回から変更されたブロックだけを保存します。
・削除 — そのスナップショットだけが参照していたデータが削除されます。残るスナップショットが参照するデータは残るので、どれからでも完全に復元できます。
・料金 — 保存されているデータの量で決まります。古いスナップショットを消しても、変更の少ないボリュームでは料金はあまり下がりません。
ポイント
RDS で容量の不足に手作業で対応しないための機能を、ほかの RDS の機能やサービスの役割と区別できるかがポイントです。
・ストレージ自動スケーリングは、空き容量が少なくなったことを RDS が検知して、割り当てストレージを自動で増やします。上限は最大ストレージしきい値で決め、設定の変更にダウンタイムは伴いません。
・CloudWatch アラームは FreeStorageSpace などのメトリクスを監視して通知できます。通知を受けるだけでは容量は増えないので、変更作業は人に残ります。
・リードレプリカは読み取りのクエリを別の DB インスタンスへ分ける機能で、ソースの割り当てストレージは増やしません。
・RDS Proxy はデータベースへの接続をプールして共有する機能で、ストレージの容量とは関係がありません。
ポイント
RDS のマルチ AZ DB インスタンスのフェイルオーバーの要点です。
・スタンバイは別の AZ に同期レプリケーションで置かれ、読み取りは受けません。
・フェイルオーバーは通常 60〜120 秒で、DB インスタンスの DNS レコードがスタンバイを指すように書き換わります。エンドポイントの名前は変わりません。
・既存の接続は張り直しが必要です。JVM は名前解決の結果をキャッシュするので、公式ドキュメントは TTL を 60 秒以下にするよう推奨しています。
ポイント
Auto Scaling グループの出来事を人に知らせる手段と、記録・可視化・推奨のサービスを区別できるかがポイントです。
・Auto Scaling グループの通知は、インスタンスの起動・終了とそれぞれの失敗のたびに Amazon SNS トピックへ送られます。トピックに E メールアドレスをサブスクライブすれば、運用チームに届きます。
・CloudTrail は AWS API の呼び出しを記録するサービスで、後から調べる監査に向いています。
・グループのメトリクスを有効にすると、InService のインスタンス数などを CloudWatch で確認できます。見に行くのは人の側です。
・Compute Optimizer は使用率のメトリクスをもとに、インスタンスタイプなどの推奨事項を示します。