Slide 1

Slide 1 text

ALBの新機能 Automatic Target Weightsと gray failuresについて考えてみる NW-JAWS #11 はたはた

Slide 2

Slide 2 text

アジェンダ ⚫はじめに ⚫ALBの新機能 Automatic Target Weightsについて ⚫gray failuresについて ⚫Automatic Target Weightsを使ったgray failuresへの対応

Slide 3

Slide 3 text

前置き ⚫12/18開催の OpsJAWS の re:Cap で登壇した内容と共通している部分があります ⚫アーカイブもありますので、ご興味ある方ぜひご覧ください! ⚫https://www.youtube.com/live/3II5p_llzcc?si=8xWge18b68N8P5hM https://speakerdeck.com/hatahata021/tried-workshop-advanced-multi-az-resilience-patterns

Slide 4

Slide 4 text

アジェンダ ⚫はじめに ⚫ALBの新機能 Automatic Target Weightsについて ⚫gray failuresについて ⚫Automatic Target Weightsを使ったgray failuresへの対応

Slide 5

Slide 5 text

自己紹介 名前: 畠山 大治 業務: AWSを使ったインフラ構築 @アイレット株式会社 趣味: Perfumeを追いかける(ファンクラブ 9年目) 読書、映画・アニメを見る 資格: AWS認定全冠、GC認定ACE 好きなAWSサービス: VPC @hatake_book

Slide 6

Slide 6 text

re:Inventに初参加してきました!

Slide 7

Slide 7 text

re:Inventに初参加してきました! 参加レポを書いているので、気になる方はぜひ読んでください https://qiita.com/hatahatahata/items/6418944d7d07df7649fe 期間中の最速参加レポもたくさん書きました! https://iret.media/tag/reinvent

Slide 8

Slide 8 text

アジェンダ ⚫はじめに ⚫ALBの新機能 Automatic Target Weightsについて ⚫gray failuresについて ⚫Automatic Target Weightsを使ったgray failuresへの対応

Slide 9

Slide 9 text

ALBの新機能 Automatic Target Weightsについて ⚫公式ブログより引用(元は英文) Application Load Balancer (ALB) の背後にあるターゲットの灰色の障害 を検出して軽減する機能を提供します 灰色の障害は、ALB ターゲットがアクティブなロード バランサーの ヘルス チェックに合格し、正常に見えてもエラーが返される場合に 発生します

Slide 10

Slide 10 text

ALBの新機能 Automatic Target Weightsについて ⚫簡単にまとめると… ⚫ ALBのヘルスチェックでは気づけない異常を検知する ⚫ 異常があったターゲットへのトラフィックを調整することも可 ⚫ヘルスチェックでは気づけない異常の例 ⚫アプリケーション上のバグ ⚫依存関係に起因する障害 ⚫たまにパケットが損失する ⚫ターゲットの過負荷 など これらの異常検知、暫定対応が ALBだけで対応可能に!

Slide 11

Slide 11 text

アジェンダ ⚫はじめに ⚫ALBの新機能 Automatic Target Weightsについて ⚫gray failuresについて ⚫Automatic Target Weightsを使ったgray failuresへの対応

Slide 12

Slide 12 text

灰色の障害(gray failures)とは ざっくりまとめると… システム全体が正常な状態であるように見えても、 ワークロード(システムの中で動いている処理単体) の観点で見ると異常が発生している状態のこと

Slide 13

Slide 13 text

gray failuresの危険な点 ⚫迅速な障害検知と対応が難しい ⚫障害による影響を軽減するまでの時間が長くなりがち ⚫「気づいたらシステム障害に発展してた」なんてことに ⚫根本的原因が解決されないと再発しかねない

Slide 14

Slide 14 text

gray failuresの例:その1

Slide 15

Slide 15 text

gray failuresの例:その1 よくあるWebサーバー+NLBの構成で考えると… AZ間の通信に障害が 発生しても… 図引用:https://catalog.workshops.aws/multi-az-gray-failures/en-US/workshop-overview

Slide 16

Slide 16 text

gray failuresの例:その1 Route53ヘルスチェック: 異常なし AZ間の通信に障害が 発生しても… よくあるWebサーバー+NLBの構成で考えると… 図引用:https://catalog.workshops.aws/multi-az-gray-failures/en-US/workshop-overview

Slide 17

Slide 17 text

gray failuresの例:その1 Route53ヘルスチェック: 異常なし AZ間の通信に障害が 発生しても… AutoScalingグループ: 異常なし よくあるWebサーバー+NLBの構成で考えると… 図引用:https://catalog.workshops.aws/multi-az-gray-failures/en-US/workshop-overview

Slide 18

Slide 18 text

gray failuresの例:その1 Route53ヘルスチェック: 異常なし AZ間の通信に障害が 発生しても… AutoScalingグループ: 異常なし Aurora:異常なし フェイルオーバーなし よくあるWebサーバー+NLBの構成で考えると… 図引用:https://catalog.workshops.aws/multi-az-gray-failures/en-US/workshop-overview

Slide 19

Slide 19 text

gray failuresの例:その1 Route53ヘルスチェック: 異常なし AZ間の通信に障害が 発生しても… AutoScalingグループ: 異常なし システム的に異常はないようにみえるが、 実は裏でAZ間の通信障害が発生している!! Aurora:異常なし フェイルオーバーなし よくあるWebサーバー+NLBの構成で考えると… 図引用:https://catalog.workshops.aws/multi-az-gray-failures/en-US/workshop-overview

Slide 20

Slide 20 text

gray failuresの例:その2

Slide 21

Slide 21 text

gray failuresの例:その2 ⚫従来のALBで起こりうるgray failures アプリケーション上 でエラー発生!

Slide 22

Slide 22 text

gray failuresの例:その2 ⚫従来のALBで起こりうるgray failures アプリケーション上 でエラー発生! ヘルスチェック オールOK CPU、メモリ正常 スケーリングなし

Slide 23

Slide 23 text

gray failuresの例:その2 ⚫従来のALBで起こりうるgray failures アプリケーション上 でエラー発生! ヘルスチェック オールOK なんか挙動が変だな… CPU、メモリ正常 スケーリングなし

Slide 24

Slide 24 text

アジェンダ ⚫はじめに ⚫ALBの新機能 Automatic Target Weightsについて ⚫gray failuresについて ⚫Automatic Target Weightsを使ったgray failuresへの対応

Slide 25

Slide 25 text

ターゲット異常の検知 ⚫gray failuresの原因は標準的なメトリクスでは検知できない ことが多い、一工夫必要 ⚫ALBのATWを使えばマネージドに検知が可能 今回のアップデートにより 追加された項目

Slide 26

Slide 26 text

ターゲット異常時の対応 ⚫アルゴリズムを加重ランダムに設定すると、ターゲット異常時 のトラフィック調整機能がデフォルトでONになる

Slide 27

Slide 27 text

参考:gray failuresからの復旧 一般的な考え方 ⚫まずはデータプレーンのアクション、その後コントロール プレーンのアクションを使用して復旧する https://speakerdeck.com/yoshiiryo1/opsjaws-meetup24-jing-de-an-ding-xing-wokao-eru-yi-cun- sinaiakitekutiya?slide=6

Slide 28

Slide 28 text

参考:gray failuresからの復旧 一般的な考え方 ⚫コントロールプレーンのアクション ⚫コントロールプレーンはデータプレーンよりも複雑なので、 障害が発生しやすい ⚫障害が発生しているとアクションが失敗し、復旧できなくなる ⚫データプレーンのアクション ⚫コントロールプレーンと比較するとシンプル、障害が起きにくい ⚫先にデータプレーンのアクションで対応、次にコントロールプレーンの アクションで対応、という流れの方が失敗確率が低い

Slide 29

Slide 29 text

今回の例で考えてみると…

Slide 30

Slide 30 text

例その2 ALB+ASGの構成で考えてみる ⚫対応方針 ⚫障害が発生したAZ向きの トラフィックを調整 ⚫対応策 ⚫ATWでトラフィックの重み付け を変更する データプレーンアクション コントロールプレーンアクション ⚫対応方針 ⚫障害が発生したAZでリソースの構 成を変更する ⚫対象のAZを設定から除外してリ ソース追加を防ぐ、など ⚫対応策 ⚫AutoScalingグループの設定を 変更する

Slide 31

Slide 31 text

まとめ ⚫ALBの新機能 Automatic Target Weights を使うとALBのヘルスチェック で気づけない障害を検知できる ⚫検知後はトラフィックの調整も可能 ⚫ATWを使うことでgray failuresに対応しやすくなる

Slide 32

Slide 32 text

参考情報 ⚫Automatic Target Weights リリースのお知らせ ⚫ https://aws.amazon.com/jp/about-aws/whats-new/2023/11/application-load-balancer-availability- target-weights/ ⚫ATWについての紹介ブログ ⚫ https://aws.amazon.com/jp/blogs/networking-and-content-delivery/improving-availability-with- application-load-balancer-automatic-target-weights/ ⚫ホワイトペーパー:gray failures ⚫ https://docs.aws.amazon.com/ja_jp/whitepapers/latest/advanced-multi-az-resilience-patterns/gray- failures.html