Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【雲勉】GatewayLoadBalancerをネタにELBの歴史を紐解く会【インフラエンジニア向け】

mfukuta
December 08, 2021

 【雲勉】GatewayLoadBalancerをネタにELBの歴史を紐解く会【インフラエンジニア向け】

mfukuta

December 08, 2021
Tweet

More Decks by mfukuta

Other Decks in Technology

Transcript

  1. アイレットご紹介 – 会社概要 3 ◼ 社名 アイレット株式会社 ◼ 所在地 〒105-6307

    東京都港区⻁ノ⾨1-23-1 ⻁ノ⾨ヒルズ森タワー7F 設⽴2003年10⽉15⽇ ◼ 資本⾦ 7,000万円 ◼ 代表者名 岩永充正 ◼ 従業員数 753名(2021年10⽉末時点) ◼ 事業内容 ITコンサルティング、システム開発、 システム保守・運⽤、 サーバハウジング・ホスティング ◼ 主要株主 KDDI株式会社
  2. アイレットご紹介 – AWS APNパートナー 4 cloudpackは、Amazon Elastic Compute Cloud (Amazon

    EC2)やAmazon Simple Storage Service (Amazon S3)をはじめとする AWSの各種プロダクトを利⽤する際の導⼊・設計から運⽤保守を含んだフルマネージドのサービスを提供し、バックアップや24時間 365⽇の監視/障害対応、技術的な問い合わせに対するサポートなどを⾏っております。 2013年6⽉4⽇には、AWSパートナーネットワーク(APN)において、⽇本初のAPNプレミアティアコンサルティングパートナーの⼀社と して認定されたのをはじめ、その後9年連続で認定されています。 『APNプレミアティアコンサルティングパートナー』はAPNプログラムの中で最上位のパートナーであり、厳しいクライテリアを満たした パートナーのみが選出され、世界で128社のみが認定されています。9年連続で認定された⽇本企業としては、cloudpack(アイレット) と株式会社野村総合研究所の2社のみとなります。
  3. アイレットご紹介 – APN Consulting Partner of the Year 2019 –

    Japan 5 AWSのパートナーネットワークに登録している企業が参加した「AWS Partner Summit Tokyo」の中で、数あるアワードの中で最も実績 をあげたパートナーであることを⽰す『APN Consulting Partner of the Year 2019 – Japan』を受賞しました。cloudpackは、同賞を5度 ⽬の受賞となります。 『APN Consulting Partner of the Year 2019 – Japan』は、AWSが年間を通じて営業・技術・マーケティング分野においてパートナーと しての総合⼒を判断し、AWSのビジネスに最も貢献したパートナーに贈られるものです。cloudpackは、2013年から継続的にプレミアコン サルティングパートナーとして認定されているほか、業界に影響を与える多数のお客様事例のリリースや、数千台規模のマイグレーション 案件、基幹システムの移⾏を⼿掛けるなど、さらなるAWSビジネスの拡⼤に貢献しました。 また、サーバーレスやマシンラーニングなどの新サービスも積極的に採⽤して成功させる⼀⽅で、エンタープライズ案件も推進してきた結 果、著しい売り上げ伸び率を達成したことが評価されました。
  4. 0.講師自己紹介 7 ◼ 久米拓馬(クメタクマ) • クラウドインテグレーション事業部 大阪構築第二セクション • 某大手企業様の情シス子会社に派遣勤務を13年くらい •

    2016/01入社 アイレット 歴5年くらい • 英語一切できないのにre:inventに行くという、 暴挙に出たことがあります。 もし機会があれば、是非体験してみてください。
  5. アジェンダ 8 0. 自己紹介 1. AWS Elastic Load Balancingとは (19:10~19:15)

    2. Classic Load Balancerのお話 (19:15~19:20) 3. Application Load Balancerのお話 (19:20~19:25) 4. Network Load Balancerのお話 (19:25~19:30) 5. Gateway Load Balancerのお話 (19:30~19:40) 6. Gateway Load Balancerの通信デモ (19:40~19:50) 7. 質疑応答 (19:50~20:00)
  6. 1. AWS Elastic Load Balancingとは 10 ◼ AWS Elastic Load

    Balancingの概要 そもそもELBってなんだろう。 というのも必要ないくらい、今では有名なサービスですね。 名前の通り、ロードバランシングのためのマネージドサービスです。 ロードバランサーといえば。。。 ・f5社のBIG-IPが有名どころ? もちろん、複数のメーカーで存在しますが、総じて共通していることが ・高い ・それほど設定事例がない ということじゃないでしょうか。 なかなか⼿が出せない。。。
  7. 1. AWS Elastic Load Balancingとは 11 ◼ AWS Elastic Load

    Balancingの概要 私自身もオンプレネットワークを運⽤していましたが、それなりの規模の中でも ロードバランサーの登場機会は少なく、運⽤経験はありませんでした。 そのため、 ・難しそう ・高そう といった偏見の⽬が正直ありました。
  8. 1. AWS Elastic Load Balancingとは 12 ◼ AWS Elastic Load

    Balancingの概要 が、みなさんご存知の通り、AWS ELBはそんな懸念を払拭していますね。 さて、改めてそもそもなんなの、と。 ・受信したトラフィックを複数のターゲットに自動的に分散 ・ターゲットのモニタリングを行い、正常なターゲットにトラフィックをルーティング ・負荷に合わせて自動でスケーリング ・リクエストを中断することなく、ターゲットの追加と削除が可能 ・SSL暗号化の復号処理が可能 前述の通り、オンプレミスのロードバランサーに明るくないので、画期的ではないかも しれません。 ただ、この機能が安価に利⽤できてしまう仕組みは非常に魅⼒的ですね。
  9. 1. AWS Elastic Load Balancingとは 13 ◼ ELBの種類 ELBの種類についてですが、 ・

    Classic Load Balancer ・ Application Load Balancer ・ Network Load Balancer ・ Gateway Load Balancer が現時点でのラインナップです。 詳細は個別の紹介でお話しします。 Application Load Balancer Classic Load Balancer Network Load Balancer Gateway Load Balancer Elastic Load Balancing
  10. 1. AWS Elastic Load Balancingとは 14 ◼ まとめ あくまでロードバランサーとしてのマネージドサービスですが、 利⽤の⽤途は多々あり、

    ・WEBのロードバランサー ・API受付部分のロードバランサー ・外部アクセスの障壁用途 ・耐障害・可用性向上用途 ・トラフィック検査などセキュリティ向上 ・AWS WAFとの組み合わせによるセキュリティ向上 など、現在では非常に⼤事な機能を担うサービスになっています。
  11. 2. Classic Load Balancerのお話 17 ◼ Classic Load Balancerの登場時期 インターネット情報で恐縮ですが、

    ・2009年5月 だそうです。 私自身は2015年あたりからawsを触り始めたんですが、ずっと古いですね。 ALBの登場が2016年なのですが、それまではELB=CLBで、そもそも名称自体が ELBでした。 ALBの登場したタイミングではかなり困惑しましたね。 (クラシックってどういうこと?なくなる??!?!?など)
  12. 2. Classic Load Balancerのお話 19 ◼ Classic Load Balancerの特徴 何が出来ただろうと振り返ると

    ・EC2-Classicに対応 ・負荷分散 ・ヘルスチェック ・カスタムセキュリティポリシーの設定 ・スティッキーセッション などが代表的でしょうか。 当然、ほとんどの機能は後述のALBで対応可能です。 そのため、こんなことになってますね。
  13. 2. Classic Load Balancerのお話 22 ◼ Classic Load Balancerのまとめ 今後はわかりませんが、この仕打ちを見る限り、縮小に向かいそうですね。

    aws触り始めから使っているサービスとしては寂しい限りですが、 互換性のあるサービスが出てきてくれているので、採⽤は減りそうです。 懐かしい話ですが、今でこそACMがありますが、IAMと連携してSSL証明書を 取り込ませていたとか、もうクラウド老害の域でしょうね。
  14. 3. Application Load Balancerのお話 24 ◼ Application Load Balancerの登場時期 CLBから⼊って、インフラとして(当時)あまり不都合を感じていなかったところに

    やってきた新サービスです。※個人の見解です 登場は ・2016年8月 だそうです。 何か新しいロードバランサーが出るぞ、という不安もあったりしました。 というのも、CLBが廃止になるのか?!(そもそもCLBと呼んでなかったけど) という漠然な不安が。
  15. 3. Application Load Balancerのお話 25 ◼ Application Load Balancerの概要 CLBで述べたとおり、ほとんど互換性を持った形で登場しています。

    そのため、特筆すべき新しい機能といえば ・リスナールールによるルーティングの設定が可能 ・リダイレクトが可能(少し後出しだった気がしますが) ・CLBをCLBという名前に押し込んだ ・SSL証明書を複数持てる ・コンテナ対応 ・ターゲットグループという概念の誕生 ・LCUという概念の追加(詳しくないです) まだまだありますが、軽く挙げて見てもかなり増えてますね。。。
  16. 3. Application Load Balancerのお話 26 ◼ Application Load Balancerのありがたみ リスナールール

    リクエスト別にルールの記載が可能。 ・ホストヘッダ ・HTTPリクエストメソッド ・パスパターン ・送信元IP ・文字列クエリ アクションは以下の通り ・フォワード ・リダイレクト ・レスポンス応答
  17. 3. Application Load Balancerのお話 27 ◼ Application Load Balancerのありがたみ リスナールール:パスルーティング(フォワード)

    ⼀つのELBで複数のパスを受け付けることができ、またターゲットも複数設定できる。 Target Group A Target Group B Target Group C
  18. 3. Application Load Balancerのお話 28 ◼ Application Load Balancerのありがたみ リスナールール:リダイレクト

    テキストベースで良ければALBのみでソーリーページの表⽰も可能。 httpsへの強制リダイレクトなど、通常webサーバーまできて処理していたものを ALBで肩代わりし負荷を減らすことができる。 Target Group A Sorry txt http → https
  19. 3. Application Load Balancerのお話 29 ◼ Application Load Balancerのありがたみ SSL証明書複数保持

    ⼀つのELBで複数の証明書を設定することができる。 webサーバーで複数のvhostを持っていたりする場合に、パスに応じたSSL証明書を 選択しオフロードができる。
  20. 3. Application Load Balancerのお話 30 ◼ Application Load Balancerのありがたみ 様々なターゲット

    ターゲットに ・EC2インスタンス ・IPアドレス ・Lambda が選択可能です。
  21. 3. Application Load Balancerのお話 31 ◼ 個人的Application Load Balancerイケテナイ話 ターゲットが全滅するとスルーする

    すでにご経験があるかもしれませんが、ターゲットグループに存在している宛先の ヘルスチェックが全滅した場合、トラフィックを流す性質があります。 Unhealthyなのにトラフィックが流れます。 ヘルスチェックの設定に不備があった場合は助かる現象でもありますが、 障害発生した場合でもスルーしてしまうため、ターゲットまで通信ができてしまうという 謎の現象が発生します。 Route53を利⽤したDNSフェイルオーバー(ALBのヘルスチェックを監視)するなどして 障害時の対策が必要になります。
  22. 4.Network Load Balancerのお話 33 ◼ Network Load Balancerの登場時期 名称からDirectConnectやVPNに関するELBが出るのかと思ってました。 登場は

    ・2017年9月 だそうです。 レイヤー4のロードバランサーですね。 詳しくは知りませんが。
  23. 4.Network Load Balancerのお話 34 ◼ Network Load Balancerの特徴 ささっと特徴を。 ・HTTP以外のプロトコルがメインの戦場

    ・固定IPの付与が可能 ・PrivateLinkの対応 ・存続時間の長いTCP接続に対応 ・素早いスケール(暖機が要らないと言われている) ・セキュリティグループを持たない ALBのようにターゲットグループがあったりしますが、⼤きな違いは ターゲットグループのヘルスチェックにパスチェックがないことも挙げられますね。 PrivateLinkに対応していたり、APIgatewayの接続先になったりと ロードバランサーというより繋ぎ役としての役割が強そうですね。
  24. 4.Network Load Balancerのお話 35 ◼ Network Load Balancerのしんどかった話 最近実装された素晴らしい機能があります。 「ターゲットにALBが設定可能」

    NLBの配下にALB?どゆこと? 今まではALB同様にインスタンスやIPアドレスの指定が必要でした。 私の携わった構築にて、以下のような構成を作ったことがあります。 Network Load Balancer Amazon API Gateway Instance
  25. 4.Network Load Balancerのお話 36 ◼ Network Load Balancerのしんどかった話 構成自体はよくあるものなんですが、運⽤の中で問題が発生しました。 先に述べたとおり、NLBはヘルスチェックをポートでしか⾏いません。

    そのため、ポートが開いていて到達パスがない場合に障害と判断ができずに 通信を受けてしまう性質があります。 その場合、サービスがダウンしているにもかかわらず正常インスタンスへの 割り振りもされません。 Network Load Balancer Amazon API Gateway Instance サービスdown ポートは開放 Instance 本当はルーティング したくない
  26. 4.Network Load Balancerのお話 37 ◼ Network Load Balancerのしんどかった話 そこで、ALBを挟むことでALBによるパスのヘルスチェックを活⽤する⼿があります。 実装としてはNLBからALBの持っているIPアドレスに対してターゲット設定をして

    その問題に対処しました。 当初はALBの直接指定ができず、LambdaでALBの名前解決をして、そのIPアドレスを NLBのターゲットに反映して、という⼒技でやってました。 参考:https://aws.amazon.com/jp/blogs/networking-and-content-delivery/using-aws-lambda-to-enable-static-ip-addresses-for-application-load-balancers/ Network Load Balancer Amazon API Gateway Instance サービスdown ポートは開放 Instance Application Load Balancer
  27. 4.Network Load Balancerのお話 38 ◼ Network Load Balancerのしんどかった話 NLBには固定IP(EIP)を付与できます。 ただ、問題としてEIPはNLBの所属するAZ別に付与されます。

    クロスゾーン負荷分散をしておけば、通信はAZを跨いでくれるのでどちらに繋いでも いうほど影響はないですが、AZ障害が起きたときにはフェイルオーバーのような 生きているAZのNLB(IP)に振り分けがされる、といった動作はしてくれません。 可能であれば、システム側で複数のIPを接続先に設定できると良さそうですね。 VPC Public subnet Public subnet AZ-a用EIP AZ-b用EIP 障害が起きると、 使えないIPになる
  28. 4.Network Load Balancerのお話 39 ◼ Network Load Balancerの活用例 ⼀部の構成でやっている例です。(セッションマネージャーの⽅が有⽤かもですが) プライベートサブネットにあるEC2へのsshおよびrdpをNLBを踏み台にしていたり。

    EC2のセキュリティグループでポートの解放が必要ですが、プライベートにいる限り 外からのアクセスはそもそも遮断されているので安心かと思います。 VPC Private subnet Public subnet Instance Network Load Balancer Port:22など Port:50022など NLBのDNS名やIPアドレスを指定して 設定したportを利⽤して接続
  29. 5.Gateway Load Balancerのお話 41 ◼ Gateway Load Balancerの登場時期 やっときましたGWLB 登場は

    ・2020年11月 となります。 なんとなく、今まで語ってきた他のELBとは似ても似つかない性質かと思います。 簡単ではありますが、ドキュメントからの抜粋で説明していきます。
  30. 5.Gateway Load Balancerのお話 44 ◼ Gateway Load Balancerの概要 そういった問題に対しての答えがGWLBかもしれません。 ドキュメント読んで概要を考えているのですが、正直さっぱりです。

    どういった通信の流れが実現できるかを図解で説明していきます。 その流れがわかると、何のために設置するか、どんなことができそうか、という イメージにつながるかと思います。
  31. 6.Gateway Load Balancerの通信デモ 49 ◼ Gateway Load Balancerの通信デモ デモ環境を⽤意しましたので、以下のポイントを見ていきます。 ・VPCの関係

    ・サブネットの構成 ・ルーティング ・エンドポイント ・外側からのアクセスの可視化 ・内側からのアクセスの可視化
  32. Private subnet Public subnet Private Public 6.Gateway Load Balancerの通信デモ 50

    ◼ Gateway Load Balancerの通信デモ 今回⽤意した構成 VPC Private subnet Public subnet Instance (セキュリティ) Application Load Balancer Instance VPC Private Public Public subnet Gateway Load Balancer Endpoints Internet gateway Internet gateway NAT gateway NAT gateway 10.0.0.0/16 10.1.0.0/16 10.1.0.0/24 10.0.0.0/24 10.1.10.0/24 10.0.10.0/24 10.1.21.0/24
  33. Private subnet Public subnet Private Public 6.Gateway Load Balancerの通信デモ 51

    ◼ Gateway Load Balancerの通信デモ 今回⽤意した構成 VPC Private subnet Public subnet Instance (セキュリティ) Application Load Balancer Instance VPC Private Public Public subnet Gateway Load Balancer Endpoints Internet gateway Internet gateway NAT gateway NAT gateway 10.0.0.0/16 10.1.0.0/16 10.1.0.0/24 10.0.0.0/24 10.1.10.0/24 10.0.10.0/24 10.1.21.0/24 送信先 ターゲット 10.1.0.0/16 Local 10.1.10.0/24 GWLB-Endpoint 送信先 ターゲット 10.1.0.0/16 Local 0.0.0.0/0 GWLB-Endpoint
  34. Private subnet Public subnet Private Public 6.Gateway Load Balancerの通信デモ 52

    ◼ Gateway Load Balancerの通信デモ 今回⽤意した構成 VPC Private subnet Public subnet Instance (セキュリティ) Application Load Balancer Instance VPC Private Public Public subnet Gateway Load Balancer Endpoints Internet gateway Internet gateway NAT gateway NAT gateway 10.0.0.0/16 10.1.0.0/16 10.1.0.0/24 10.0.0.0/24 10.1.10.0/24 10.0.10.0/24 10.1.21.0/24 1 2 3 4 5 6 7 8
  35. Private subnet Public subnet Private Public 6.Gateway Load Balancerの通信デモ 53

    ◼ Gateway Load Balancerの通信デモ 今回⽤意した構成 VPC Private subnet Public subnet Instance (セキュリティ) Application Load Balancer Instance VPC Private Public Public subnet Gateway Load Balancer Endpoints Internet gateway Internet gateway NAT gateway NAT gateway 10.0.0.0/16 10.1.0.0/16 10.1.0.0/24 10.0.0.0/24 10.1.10.0/24 10.0.10.0/24 10.1.21.0/24 8 7 6 5 4 3 2 1
  36. 58