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

What is LB? / LBaaS? / Managed LB?

What is LB? / LBaaS? / Managed LB?

現場受け入れ型インターンシップ「エンタープライズ向け大規模クラウド / ネットワークサービス 仮想アプライアンスコントローラ開発エンジニア」のオンボーディングで使用した資料です。
Smart Data Platform Managed Load Balancer の詳細はこちら: https://sdpf.ntt.com/services/managed-lb/

HORIUCHI Akihiko

October 07, 2024
Tweet

More Decks by HORIUCHI Akihiko

Other Decks in Technology

Transcript

  1. What is LB? What is LBaaS? What is Managed LB?

    Akihiko Horiuchi (@hiconyan) 2024/08/26 @ Summer Internship
  2. • 「外部からの通信を複数のサーバーに分散するネットワーク装置」 のこと • アクセスを集約して複数のサーバーに振り分けることで可用性を向上させる ◦ リソースに余裕があるサーバーにアクセスを優先的に振り分ける [1] ◦ サーバーの死活状態を監視し、障害が発生したサーバーにはアクセスを振り分けない

    • ロードバランサーの機能としては他にも… ◦ ロードバランサーで HTTPS を終端し、サーバーには HTTP で転送する ◦ 同じクライアントからのアクセスを常に同じサーバーに振り分ける (Persistence) ◦ 全てのサーバーで障害が発生したときに特定の URL にリダイレクトする (Sorry Page) • 有名なロードバランサー製品 (Appliance) としては… ◦ F5 BIG-IP ◦ A10 Thunder ◦ Citrix NetScaler ロードバランサーとは? 4 [1] 振り分けアルゴリズムの設定による
  3. インターネットとサーバーの間にロードバランサーを配置する場合 (2 アーム構成) ロードバランサーの一般的な構成 5 クライアント インターネット ロードバランサー サーバー 障害

    Web サイト の閲覧など HTTPS HTTPS HTTP HTTP アクセスを 復号・暗号化 障害が発生した サーバーへの振り 分けを停止 ロードバランサーからの ICMP (Ping) や HTTP (GET) による 死活監視 (Health Check) に正常応答したサーバーに振り分ける 振り分けアルゴリズムには Round-Robin や Least-Connection (コネクション数が少ないサーバーに振り分け) などがある
  4. • 「クラウド上で提供されるサービスとしてのロードバランサー」 のこと ◦ オンデマンドで (いつでも) 申し込め、従量課金で (使った分だけ) 支払う •

    オンプレミス上のロードバランサー製品と比較すると… ◦ ロードバランサー製品の知識がなくても利用できる ▪ 製品の場合、各メーカーごと設定方法などが異なり、それぞれの知識が必要 ▪ 数年おきに必要な製品の入替えやバージョンアップからの開放 • Load Balancer as a Service として、よく提供される機能としては… ◦ アクセスに応じてサーバーやコンテナを自動的に追加できる (Auto-Scaling) ◦ 冗長構成 (HA) を意識しなくても可用性の高い運用ができる ▪ 自動でロードバランサーやネットワークを冗長化しておいてくれる ◦ 他の as a Service と連携するなどして地理的負荷分散 (GSLB) を簡単に利用できる ▪ アクセスを複数のリージョン (地理的に離れたデータセンター) に振り分けてくれる ◦ ※ これらはオンプレミス上でも実現できるが、LBaaS なら Web 上でポチポチするだけ Load Balancer as a Service とは? 7
  5. LBaaS の一般的な構成 8 インターネット LBaaS クライアント (東京) クライアント (大阪) 最も近い

    リージョン に振り分け 大阪リージョン 仮想サーバーなどのグループを作成し、振り分け先に指定する 仮想サーバーの負荷が閾値を超えた場合、テンプレートから 自動的に仮想サーバーが作成され、グループに追加される Auto-Scaling Auto-Scaling 東京リージョン 自動で 冗長化 … …
  6. Smart Data Platform (SDPF) の 1 サービス 2021/10 に本格的に開発を開始し、2022/02 に

    Day 1 としてユーザへの提供を開始 🎉 2022/10 に Day 2 を、2023/10 に Day 3 をリリースし、現在 Day 4 に向けて絶賛開発中 💪 SDPF Managed LB とは? … … Managed LB GUI API Smart Data Platform 10
  7. SDPF ロードバランサーとの比較 Managed LB ロードバランサー 作成 / 編集 / 削除

    Web GUI / API Web GUI / API 設定 Web GUI / API コンソール 監視 / 故障復旧 プロバイダが実施 ユーザーが実施 バージョンアップ 自動 手動 Managed Service = プロバイダ側の責任範囲が大きい インスタンスのライフサイクルをなるべくシンプルに管理したい 11
  8. サービスの自動化 / 省力運用 • ロードバランサーの機能をモデル化し、インスタンスの構成 / 設定をコントローラで 一元管理 • インスタンスを

    Immutable にすることで、構成 / 設定の変更を容易に ◦ インスタンス = 設定に従って通信を振り分けるだけの仮想サーバー • 設定変更 / バージョンアップはインスタンスの再デプロイ = Rollover として自動化 ◦ Blue / Green 形式で再デプロイすることで、Persistence や Session を維持 コントローラ 旧 新 同期 モデルから設定を生成して投入 設定変更: バージョンアップ: 旧設定インスタンス 旧 ver インスタンス 新設定インスタンス 新 ver インスタンス Rollover 12
  9. インスタンスの Rollover IP IP 現用 LB #1 現用 LB #2

    IP IP 現用 LB #1 現用 LB #2 IP IP 現用 LB #1 現用 LB #2 IP IP IP IP 新規 LB #1 新規 LB #2 新規 LB #1 新規 LB #2 Customer ロジカルネットワーク Customer ロジカルネットワーク Customer ロジカルネットワーク 冗長 / 同期 • ユーザが GUI / API で設定変更 / バージョンアップを実施 • 新規 LB (Green) の仮想サーバーを作成し設定を投入 • Blue / Green (2 〜 4 台) を冗長化し、Persistence と Session を同期 • 新規 LB (Green) の監視を開始、現用 LB (Blue) の監視を終了 • 現用 LB (Blue) の仮想サーバーを削除 VIP VIP VIP VIP 13 所要時間 約 10 分
  10. Managed LB のデータモデル 14 … … Health Monitor B Health

    Monitor A Target Group A Target Group B Listener A (IP + Port) Listener B (IP + Port) Load Balancer クライアント ロジカル ネットワーク ロジカル ネットワーク クライアント Policy A Policy B • Load Balancer ◦ プラン (帯域 / 冗長化の有無) を選択して作成 ◦ ロジカルネットワークをインターフェイスに接続 • Health Monitor ◦ Target Group の死活監視の方法を管理 ◦ プロトコル / リトライ回数 / タイムアウトなどを設定 • Listener ◦ アクセスを受ける IP アドレス / ポート / プロトコルを設定 • Target Group ◦ 振り分け先のサーバーを管理するグループ ◦ 各サーバーを Member と呼び、IP アドレス / ポートを設定 • Policy ◦ Health Monitor / Listener / Target Group の紐付け ◦ 振り分けアルゴリズムや Persistence を設定 • 他にも下記のようなリソースがあるが割愛 ◦ Certificate ◦ Route ◦ Rule (Policy に紐付く) ◦ TLS Policy
  11. Managed LB の API (作成) データモデル Load Balancer staged インスタンス

    データモデル Load Balancer staged Policy staged Listener staged Health Monitor staged Target Group staged インスタンス データモデル Load Balancer current staged Policy current staged Listener current staged Health Monitor current staged Target Group current staged インスタンス 現用 Create Load Balancer • コントローラ上で Load Balancer のデータ モデルと Staged Config が作成される ◦ この時点でインスタンスは作成されない Create Policy / Listener / Health Monitor / Target Group • コントローラ上で Load Balancer に紐付く 各種リソースのデータモデルと Staged Config が作成される • 他にも下記のようなリソースがあるが割愛 ◦ Certificate ◦ Route ◦ Rule (Policy に紐付く) ◦ TLS Policy Action Load Balancer (apply-configurations) • この時点でインスタンスの実体 (仮想サー バーやポート) が作成される • 各リソースの Staged Config がインタンス に反映され、Current Config となる ◦ Staged Config の各 Attribute は初期 化され API 上 null になる 15
  12. Managed LB の API (設定変更) API / データモデル API /

    データモデル Load Balancer current Policy current Listener current Health Monitor current Target Group current インスタンス 現用 Load Balancer current staged Policy current staged Listener current staged Health Monitor current staged Target Group current staged インスタンス 現用 API / データモデル Load Balancer current staged Policy current staged Listener current staged Health Monitor current staged Target Group current staged インスタンス 新規 現用 設定変更前 • 各リソースの Current Config と現用インス タンスの設定は一致する Update Staged Configurations • コントローラ上で各種リソースの Staged Config が作成される ◦ Staged Config の更新 / 取消も可能 ◦ name / description / tags など、設定 と関係のない Attribute に対する変更 は API 上で即時反映される Action Load Balancer (apply-configurations) • 現用インスタンスの横に新規インスタンス を作成し、変更後の設定を投入する ◦ Persistence / Session を同期の上、現 用インスタンスは削除 • 各リソースの Staged Config が Current Config となる 16