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

ロード・バランサ・サービス(再)入門

 ロード・バランサ・サービス(再)入門

2021/6/22実施のOCIスキルアップセミナー #9で使用したスライドです。最近大幅に機能が拡充されたOCIのロード・バランサ・サービスについて改めて取り上げました。

OCIのリリース当初からあるロード・バランサですが、最近 Flexible Load Balancer や、Network Load Balancer といった機能が加わり、リリース当初とは全く違うサービスと言っていい進化を遂げています。

このスライドでは (再)入門、ということで、OCIロード・バランサを初めて触る人のために基礎的な内容をおさらいしつつ、既にバリバリ使っている人のための新機能解説や応用的な活用方法、そしてテストしてわかったマニュアルには書いていない動作の仕組みを解説しています。
特に新機能のNetwork Load Balancerはまだ情報も少ないので必見? です。

Masataka Marukawa

June 28, 2021
Tweet

More Decks by Masataka Marukawa

Other Decks in Technology

Transcript

  1. ロード・バランサ・サービス (再) 入門 OCI スキルアップ セミナー #9 丸川 祐考 (Masataka

    Marukawa) 日本オラクル株式会社 Cloud Solution Engineer & Groundbreaker Advocate 2021/6/22
  2. 1. 色々と複雑なOCIのロード・バランサの全体像を理解する • ロード・バランサの構成ってどうなっているの? • フレキシブル・ロード・バランサって何がフレキシブルなの? • ネットワーク・ロード・バランサって今までのロード・バランサと何が違うの? • 色々と種類があるけど、どうやって選べばいいの?

    2. ロード・バランサの作成の流れと準備するべきことを理解する(デモ中心) 3. ネットワーク・ロード・バランサのちょっと深い動作を知る(少しマニア向け) 4. ロード・バランサにどんな高度な機能があるか、何ができるかをざっくり理解する 5. 将来どんな機能拡張が予定されているかをちょっと知る 本日のセミナーのゴール(お伝えしたいこと) 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 3
  3. ロード・バランサの主な役割 役割1 : スケーラビリティ(拡張性)の向上 リクエストを複数のサーバーに分散させることで、 1台のバックエンドサーバーでは処理しきれない 負荷を複数サーバーに振り分け、スケールアウト でシステム処理能力を拡張 役割2 :

    アベイラビリティ(可用性)の向上 バックエンドのサーバーに対して死活監視を行い、 正常稼働していないサーバーに対するトラフィッ ク転送を停止することによりサービス全体の停止 を防止 5 Copyright © 2021, Oracle and/or its affiliates ロード・バランサ New Web Web01 Web02 ・・・・・ スケールアウト ロード・バランサ Web01 Web02 Web03 ✖ 2021/6/22
  4. 高い耐障害性 • LB自身が可用性ドメインまたはフォルト・ドメイン間で冗長化 • 固定された1つの仮想IPアドレス(プライベート or パブリックIP)を持ち、構成ホストの障害時はVIPが 透過的にフェイルオーバー 安定した性能と拡張性 •

    最小値に設定したネットワーク帯域が確保済(FLB) • トラフィック量に応じて帯域が自動で拡張 豊富な機能 • 単一サービスでレイヤー4とレイヤー7の両方の機能をサポート • Cookieによるセッション永続性、URIパス・ベース振り分け、仮想ホスト、HTTPヘッダー操作などの 高度なレイヤー7機能をサポート • SSLターミネーション、SSLトンネリングをサポート • 自動スケーリング、OKE、DNS、トラフィック管理、リソースマネージャなどの機能と連携 運用管理が簡単 • マネージドサービスなので管理が容易 OCIロード・バランサの特長 Copyright © 2021, Oracle and/or its affiliates 6 2021/6/22
  5. 単一の固定IPアドレスを持つ • 起動から終了まで固定 • スケーリング時の変更なし 冗長化された内部コンポーネント • 障害やメンテナンス時にも処理 が継続 •

    複数のフォルト・ドメイン/可用 性ドメインを跨ぐように構成可 能 バックエンド・サーバー群 • IPアドレスまたはFQDN • トラフィックが疎通すれば外部 ネットワークでもOK OCIロード・バランサの基本構成 ORACLE CLOUD INFRASTRUCTURE (リージョン) 可用性ドメイン1 LBサブネット 可用性ドメイン2 Webサブネット ロード・バランサ トラフィック アクティブ スタンバイ Webサーバー Webサーバー Webサーバー Webサーバー IPアドレス 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 7
  6. フレキシブル・ロード・バランサ(FLB) • OCIリリース時からあるサービス • 単に「ロード・バランサ」と呼ばれることも • プロキシ型で動作 • すべてのクライアントからのTCPコネクションが一旦 ロード・バランサで終端し、新たに別のTCPコネクショ

    ンがロード・バランサからバックエンドのサーバーに対 して確立 • 特徴 : 高度なバランシング機能 • 有償サービス(Always Freeシェイプあり) ネットワーク・ロード・バランサ(NLB) • 2021年3月リリースの新サービス • パススルー型で動作 • クライアントから来たTCPやUDPなどのIPトラフィックを そのままバックエンドのサーバーに伝える • 特徴 : 低レイテンシ、高い負荷追従性 • 無償サービス 2種類のロード・バランサ - FLBとNLB 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 8 クライアント サーバー フレキシブル・ ロード・バランサ (FLB) ネットワーク・ ロード・バランサ (NLB) プロキシ型 クライアントから受けた通信を、ロード・ バランサが一度仲介し、別のコネクション としてサーバーに接続する パススルー型 クライアントから受けた通信をそ のままサーバーに転送する
  7. フレキシブル・ロード・バランサ(FLB) ネットワーク・ロード・バランサ(NLB) タイプ プロキシ型 パススルー型 対応プロトコル TCP / HTTPS /

    TCP TCP / UDP / ICMP レイヤー3/4バランシング機能 あり あり レイヤー7バランシング機能 • Cookieによるセッション永続性 • 仮想ホストによる振り分け • URIパスによる振り分け • HTTPヘッダーによる振り分け • HTTPヘッダー操作 あり なし インターネットや他リージョン のサーバーへの振り分け 可能 不可 (インターネットGWやDRG経由の振り分け は不可) リスナーの最大数 16 50 ソースIPアドレスの保全 なし (X-Forwarded-Forヘッダを利用可能) あり (選択式) SSLターミネーション機能 あり なし SSLパススルー機能 あり (TCPリスナー選択時のみ) あり(SSL使用する場合は常に) パーシステンス機能 Cookieによる制御(HTTP/HTTPSリスナー) ソースIPベースの振り分け(TCPリスナー) ソースおよび宛先IPとポート、 プロトコルの組合せ FLBとNLBの機能面の差異 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 9
  8. NLBは無料なので、高機能なFLBが必要な場合以外は積極的に使おう! ロード・バランサの選択 – 超簡易フローチャート 2021/6/22 Copyright © 2021, Oracle and/or

    its affiliates 10 HTTP or HTTPS TCP クライアントIP 保全する? フレキシブル・ ロード・バランサ ネットワーク ・ロード・バランサ UDP / ICMP Y Y N* N レイヤー7の 制御機能を利用? N SSLオフロードする? Y * httpヘッダ(X-Forwarded-For)から取得できればいい場合はこちらでもOK • Cookieによるセッション永続性 • 仮想ホストによる振り分け • URIパスによる振り分け • HTTPヘッダーによる振り分け • HTTPヘッダーの操作 N インターネットや 他リージョンに振分る? Y
  9. インスタンス • コンピュートなどと同じように「インスタン ス」という概念で管理を行う • 作成、課金、終了などのライフサイクルの単位 • 内部の物理コンポーネントは隠蔽化されている • 冗長化されており、SLO設定単位

    シェイプ • インスタンスの大きさを表す概念 • ロード・バランサでは捌くことのできる帯域 幅を示す(Mbps) • FLBの場合 • ユーザーが選択した帯域幅パラメーターに応じた シェイプを持つ • シェイプは固定値(動的シェイプ)または最低帯域 幅(フレキシブルシェイプ)が確保済 • フレキシブルシェイプは設定した最大帯域幅まで 自動で拡張 • NLBの場合 • 明示的なシェイプはなくバックエンドのネット ワーク帯域まで自動的にスケールする ロード・バランサのインスタンスとシェイプ 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 11
  10. 負荷に応じシェイプ・サイズが自動的に変動 • インスタンス毎に 10Mbps ~ 8,000 Mbps の範囲 で最小帯域幅と最大帯域幅を設定可能 •

    最小帯域幅分は必ず確保される • 負荷状況に応じて最大帯域幅までシェイプが 自動で変更される(Bursting) • インスタンス作成後も最小帯域幅/最大帯域幅 を変更可能 • リージョン単位で以下のサービス制限を受け る • フレキシブルLBの数(lb-flexible-count) • 合計帯域(lb-flexible-bandwidth-sum) : FLBのフレキシブル・シェイプ (2020年12月~) Copyright © 2021, Oracle and/or its affiliates 12 2021/6/22
  11. ユーザーが指定した帯域が固定で確保 • 帯域幅を4種類からユーザーが選択 • 10Mbps(Always Free) • 100Mbps / 400Mbps

    / 8000Mbps (有償) • 選択した帯域幅は必ず確保される • インスタンス作成後も帯域幅を変更可能 • 後方互換のための古い機能 • 2020年12月以降に作成されたテナンシでは利用不 可能 • 作成済インスタンスはフレキシブル・シェイプに 変換可能(不可逆) →右図参照 • フレキシブル・シェイプに変換後も、最小帯域幅 と最大帯域幅を同じ値に設定すると動的シェイプ と同じ運用が可能 FLBの動的シェイプ(古い機能) Copyright © 2021, Oracle and/or its affiliates 13 2021/6/22
  12. フレキシブル・ロード・バランサ(FLB)の場合 重み付けラウンドロビン (Weighted Round Robin) • トラフィックをバックエンド・ サーバーに均等に順番に転送 • 重み付けを設定することで振り

    分けるセッション数の比率を設 定できる 最小接続 (Least Connections) • アクティブな接続数が最も少な いサーバーに振り分けを行う IPハッシュ (IP Hash) • 送信元IPアドレスのハッシュ キーに基づいてトラフィックを 分散 • 同じIPのクライアントからの要 求は、同じバックエンド・サー バーに転送 ロード・バランサの構成要素 : ロード・バランシング・ポリシー Copyright © 2021, Oracle and/or its affiliates 15 1 2 3 4 1 2 3 4 新規接続 2 1 + 1 2 Proxy 1.1.1.1 2.2.2.2 3.3.3.3 2021/6/22
  13. ネットワーク・ロード・バランサ(NLB)の場合 2タプル・ハッシュ • ソースIPと宛先IPをもとにした ハッシュ値で振り分ける方法 • なるべくクライアント-サーバ間 3タプル・ハッシュ • ソースIP、宛先IP、プロトコル

    をもとにしたハッシュ値で振り 分ける方法 5タプル・ハッシュ • ソースIPとポート、宛先IPと ポート、そしてプロトコルをも とにしたハッシュ値で振り分け る方法 ロード・バランサの構成要素 : ロード・バランシング・ポリシー Copyright © 2021, Oracle and/or its affiliates 16 1.1.1.1 :20001 2.2.2.2 :20002 2.2.2.2 :25001 5.5.5.5 :443 1.1.1.1 tcp/20001 2.2.2.2 tcp/20002 2.2.2.2 ucp/25001 5.5.5.5 tcp/443 udp/443 1.1.1.1 2.2.2.2 3.3.3.3 5.5.5.5 2021/6/22
  14. • ロード・バランサで受信したトラフィックに対して、実際に コンテンツを返信するサーバー • ロード・バランサを配置したVCNからアクセス可能であれば、 どこでもOK • サーバー間で処理性能が異なる場合は、重みづけによりトラ フィックの転送割合を変更可能 •

    以下のモード制御を利用してバックエンド・サーバー単位で 個別にトラフィックの制御が可能 ロード・バランサの構成要素 : バックエンド・サーバー Copyright © 2021, Oracle and/or its affiliates 17 Load Balancer Web01 Web02 Web03 バックエンド・セット バックアップ • 通常時はトラフィックは転送されない • バックエンド・セット内の他の全てのバックエンド・サーバーの ヘルスチェックが失敗した場合にのみトラフィックが転送される 用途例:Sorryサーバー ドレイン • 接続済のセッションは維持される • 新規リクエストは転送されない 用途例:サーバーのメンテナンス開始時 オフライン • リクエストが転送されない 2021/6/22
  15. ロード・バランサの構成要素 : ヘルスチェック Copyright © 2021, Oracle and/or its affiliates

    18 定期間隔でヘル スチェック 応答がなかった 場合、転送停止 ロード・バランサ バックエンド・サーバーの状態を監視するために定期的にロー ド・バランサから送信されるテスト • チェック対象 • バックエンドサーバー • バックエンド・セット • ロード・バランサ全体 • ヘルスチェックに失敗したバックエンド・サーバーは、トラ フィック転送を一時的に停止させる • 復旧した場合は、再びトラフィック転送を再開 • 監視に利用するプロトコル • TCP, UDP(NLBのみ) : TCP/UDPの特定ポートの応答状態で確認 • HTTP(S) : 特定URIパスに対してHTTPリクエストを送り、レスポンス コードやボディ内の文字列一致による判定などの高度なチェック 2021/6/22
  16. ロード・バランサの構成要素 : リスナー Copyright © 2021, Oracle and/or its affiliates

    19 トラフィックを受信するプロトコル、ポートと、転送先のバックエンド・セットを定義するもの • プロトコルとポートの組み合わせ毎に1つのリスナーを構成 • 例1 : HTTP と HTTPS 両方受け付けるにはリスナーが2つ必要 • 例2 : tcp/8000 と udp/8000 にはリスナーが2つ必要 • HTTP、HTTPS、TCP、UDP、ICMP から選択 • HTTP/HTTPSリスナーはレイヤー7で、 TCP/UDP/ICMPリスナーはレイヤー3/4で動作 • HTTP/HTTPSリスナーで作成した場合は、セッション永続性、 リクエスト・ルーティング、ルール・セット等のレイヤー7の 高度な機能 を利用可能 • リスナー毎に1つのSSL証明書をバンドル可能 FLB NLB リスナー1 HTTPS/443 リスナー2 TCP/22 ロード・バランサ (IP : xxx.xxx.xxx.xxx) バックエンド・セット1 バックエンド・セット2 2021/6/22
  17. インターネットや他リージョンのVCNのバックエンドサーバーへの振り分けは不可 • インターネットゲートウェイ、DRGを経由してた先のバックエンドサーバーは登録不可 NLBでのポート変換や違うポートへの分散ができる(FLBはできない) • (例) リスナーでtcp/8000 → バックエンドサーバー tcp/8008

    にポート変換 リスナーでtcp/8000番 → BS1:8008 + BS1:8009 でポート分散 • Anyポート(0) を指定してリスナーを作成できる →バックエンドサーバーにはLBが受け付けたポートが そのまま変換されずに渡される 1つのリスナーで、UDP/TCP/ICMPのマルチプロトコルで動作するリスナーを作成できる • ただし任意のポート(0)でリッスンする状態のみ作成可能 ネットワーク・ロード・バランサ(NLB) のTips集 その1 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 21
  18. ソースIPの保持ができる • 「ソースIPの保持」を任意で選択できる。ただし後述の通りICMPの場合はソースIP保持固定 • 選択すると、NLBでSNATせずにIPヘッダのソースIPが保持される • 基本は、バックエンド・セット毎に「ソースIPの保持」を選択する • プライベートNLBのみは、ロード・バランサ一括で「ソースIPの保持」強制も指定できる ICMPのサポート

    • ICMPはプライベート・ロード・バランサでのみ利用可能 • ICMPはUDP/TCP/ICMPのマルチプロトコルリスナーで、任意のポート(0)のみ利用できる • ICMPを利用するには必ず「ソースIPの保持」が必要 ネットワーク・ロード・バランサ(NLB) のTips集 その2 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 22
  19. NLBのパケットの挙動 - パブリックNLB、TCPリスナー、ソースIP保持なし 2021/6/22 Copyright © 2021, Oracle and/or its

    affiliates 23 VCN NetworkLoad Balancer Client Backend Server 10.1.0.3 02:00:17:00:79:a1 10.2.0.4 (168.138.41.167) 02:00:17:00:04:2c 10.1.0.129 (168.138.55.168) 02:00:17:00:9f:f5 VCN src:10.2.0.4 dst:168.138.55.168 src:168.138.55.168<00:00:17:8c:5e:14> dst:10.2.0.4 <02:00:17:00:04:2c> 10.1.0.1 00:00:17:53:a1:28 10.2.0.1 00:00:17:8c:5e:14 Internet Gateway Internet Gateway PUBLIC SUBNET Gateway Gateway src:10.2.0.4 <02:00:17:00:04:2c> dst:168.138.55.168<00:00:17:8c:5e:14> src:168.138.41.167 dst:10.1.0.129 src:168.138.41.167 dst:10.1.0.129 src: 10.1.0.129 dst: 168.138.41.167 src: 168.138.55.168 dst: 10.2.0.4 src: 10.1.0.129 <02:00:17:00:9f:f5> dst: 10.1.0.3 <02:00:17:00:79:a1> src: 10.1.0.3 <02:00:17:00:79:a1> dst: 10.1.0.129 <02:00:17:00:9f:f5> src: 10.1.0.129 dst: 168.138.41.167 NLBでDNAT & SNATされる バックエンド・サーバからの戻 りパケットはNLBに戻される src:168.138.41.167 dst:168.138.55.168 src: 168.138.55.168 dst: 168.138.41.167
  20. NLBのパケットの挙動 - パブリックNLB、TCPリスナー、ソースIP保持あり (パケットの動きは一部想像を含む) 2021/6/22 Copyright © 2021, Oracle and/or

    its affiliates 24 VCN NetworkLoad Balancer Client Backend Server 10.1.0.3 02:00:17:00:79:a1 10.2.0.4 (168.138.41.167) 02:00:17:00:04:2c 10.1.0.129 (168.138.55.168) 02:00:17:00:9f:f5 VCN src:10.2.0.4 dst:168.138.55.168 src:168.138.55.168<00:00:17:8c:5e:14> dst:10.2.0.4 <02:00:17:00:04:2c> 10.1.0.1 00:00:17:53:a1:28 10.2.0.1 00:00:17:8c:5e:14 Internet Gateway Internet Gateway PUBLIC SUBNET Gateway Gateway src:10.2.0.4 <02:00:17:00:04:2c> dst:168.138.55.168<00:00:17:8c:5e:14> src:168.138.41.167 dst:10.1.0.129 src:168.138.41.167 dst:10.1.0.129 src: 10.1.0.129? dst: 168.138.41.167 src: 168.138.55.168 dst: 10.2.0.4 src:168.138.41.167 dst:168.138.55.168 src: 168.138.55.168 dst: 168.138.41.167 src:168.138.41.167<02:00:17:00:9f:f5> dst:10.1.0.3 <02:00:17:00:79:a1> src: 10.1.0.3 <02:00:17:00:79:a1> dst: 168.138.41.167<00:00:17:53:a1:28> バックエンドサーバーからの戻りパ ケットは直接ゲートウェイのルー ターに向かっている(宛先MACアドレ スがNLBのものではなくGatewayに なっている) (ということで完全に想像だ が)戻りパケットはどこか(VCN ルーター?)でSNATされ、ソー スIPにNLBのアドレスがセット される 「ソースIPの保持」の設定に よりNLBではSNATされず、ク ライアントのIPがそのまま バックエンド・サーバに渡さ れる クライアントに戻ってきたパ ケットはSNATされており、 ソースIPにはロードバランサ のIPアドレスがセットされて いる(つまりDSRではない)
  21. 以下は、NLBの色々な挙動から筆者が想像(妄想)したものですので、正しいかどうかはわかりませんが • ネットワーク・ロード・バランサー(NLB)は、何か特殊な新しい特殊なデバイスが実装されたかと 思ったけど、そうではなくて既存のVCNの仮想ルーターにあったNAT機能を拡張したもの? • 状況証拠1 : パケットが行きと戻りで違う経路を通っていそうだけど、戻りパケットがどこかでSNAT • 状況証拠2

    : NLBは基本的にVCNの中だけで動作する(インターネットとかDRG経由は転送不可) • 状況証拠3 : 無料のサービス • 状況証拠4 : 基本ネットワーク帯域だけスケールするとのこと • 元々VCNにはパブリックIP<->プライベートIPをNATする機能があったわけなので、それをちょこっと 拡張するのはシンプルで合理的な実装に思える • 振り分けロジック、ヘルスチェックを付けるだけ • ソースIPの保全機能は、元々あったわけなので、逆に入りのパケットをSNATしてしまう機能の方を付けた? ・・・全て妄想です。 で、ネットワーク・ロード・バランサーって何モノ? 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 25
  22. ロード・バランサを介したトラフィックは、送信元情報(IPアド レスやポート)がロード・バランサの情報に変換されてバックエ ンド・サーバーに転送されるため、バックエンド・サーバーの アクセスログにはロード・バランサのIPアドレスやポートが送信 元情報として記録される HTTPリスナーでは、HTTPヘッダーに X-Forwarded- が挿入され、 元のクライアント情報を判別できる TCPリスナーでは

    Proxy Protocol を利用して判別 【参考】FLBでのクライアントのIPアドレスやポート情報の判別 Copyright © 2021, Oracle and/or its affiliates 26 送信元 : 1.1.1.1 送信先 : 192.168.1.2 Src 1.1.1.1 Dst 2.2.2.2 VIP : 2.2.2.2 192.168.1.254 Src 192.168.1.254 Dst 192.168.1.2 Src 192.168.1.2 Dst 192.168.1.254 Src 2.2.2.2 Dst 1.1.1.1 アドレス変換フロー X-Forwarded-For クライアントがロード・バランサへの接続に使用したIP アドレスを識別。複数のIPアドレスをリスト可能 X-Forwarded-Host クライアントが要求した元のホストとポートを識別 X-Forwarded-Port クライアントがロード・バランサへの接続に使用したリ スナー・ポート番号を識別 X-Forwarded-Proto クライアントがロード・バランサに接続するために使用 したプロトコルを識別 X-Real-IP X-Forwarded-Forと同様。単一のIPアドレスを識別 ① ④ ① ④ 2021/6/22
  23. 3種類のSSL通信方式 Copyright © 2021, Oracle and/or its affiliates 28 SSLターミネーション

    • ロード・バランサでSSLを終端 • クライアントとロード・バランサ間の通信を暗号化 • SSL証明書をロード・バランサで一括管理 • バックエンドのWebサーバーの負荷を軽減 • FLBのHTTPSリスナーでのみ利用可能 エンド・ツー・エンドSSL • ロード・バランサで一度SSLを終端した上で、別のSSL通信を バックエンド・サーバーとの間で確立 • クライアントからバックエンド・サーバー間通信が全暗号化 • SSL証明書をロード・バランサとバックエンドサーバーの両方 で管理 • FLBのHTTPSリスナーでのみ利用可能 SSLパススルー • ロード・バランサがSSLをパススルーして、バックエンド・ サーバー側でSSLを終端 • ロード・バランサでのSSL証明書管理は不要 • FLBのTCPリスナーとNLBで利用可能 HTTPS (暗号化) HTTP (非暗号化) ロード・バランサ HTTPS (暗号化) HTTPS (暗号化) ロード・バランサ HTTPS(暗号化) ロード・バランサ バックエンド ・サーバー バックエンド ・サーバー バックエンド ・サーバー クライアント クライアント クライアント 2021/6/22
  24. Webアプリケーションのセッションを維持するため、同一のクライアントからのリクエストを 同一サーバーに振り分ける機能 利用例 : ショッピングカートなど同じサーバーでトランザクション処理を必要とする場合 Cookie情報を元に転送先のサーバーを決定する Cookie persistence をサポート ※Cookieを受け入れないクライアントではセッション維持は不可

    セッション永続性 Copyright © 2021, Oracle and/or its affiliates 30 セッション永続性なしの場合 セッション永続性ありの場合 トランザクションが異なるサーバーに転送され 処理を継続できない Cookie情報よりトランザクションが 同一サーバーに転送され、一貫した処理が可能 ロード・バランサ Client A Client B cookieより転送先サーバーを特定 ロード・バランサ Client A Client B 2021/6/22
  25. セッション永続性に利用するCookieの生成方法 31 ロード・バランサCookieの永続性 • ロード・バランサ単独で生成するCookieが セッション永続性に使われる方式 • アプリケーション側でCookieが挿入ができな い場合でもOK アプリケーションCookieの永続性

    • アプリケーションが挿入したCookieの情報が セッション永続性に使われる方式 • 細かい制御をしたい場合はこちらを選択 • 実際にはアプリケーションのCookieが直接使 用されるわけではなく、Cookie(+α)から生成し たハッシュ値を使ってロード・バランサが新 しいCookieを追加、このCookieがセッション永 続性維持に使われる Copyright © 2021, Oracle and/or its affiliates 2021/6/22
  26. リクエスト・ルーティングを用いることにより、ホスト名やIPアドレスよりも細かい特定のリクエスト パラメーターに基づいてトラフィックの転送先や転送ルールを設定することが可能 1. 仮想ホスト - 仮想的なホスト名単位でリクエストを制御 2. ルーティング・ポリシー – URIパス、リクエストヘッダー、パラメータ、Cookieなどに基づいてリ

    クエストを制御 • 2021年5月までの標準だった パス・ルート・セット の上位互換機能 • パス・ルート・ルールとは? • 2021年3月までの標準機能、2022年3月24日以降は設定変更ができなくなる[CN-64788] • URIパスによるルーティングのみが可能 3. ルール・セット - HTTP(S)のリクエストまたはレスポンスに対して様々な操作を行うためのルール 定義 リクエスト・ルーティングはFLBのHTTP、HTTPSリスナーのみ対応 • 理由 : レイヤー7の情報を利用するため • FLBのTCPリスナーや、NLBは非対応 リクエスト・ルーティング Copyright © 2021, Oracle and/or its affiliates 33 2021/6/22
  27. ロード・バランサ (IP : xxx.xxx.xxx.xxx) バックエン ド・セット 1 バックエン ド・セット 2

    リスナー(IPアドレス+プロトコル+ポート)に対し て仮想的なホスト名を定義することにより、仮想 ホスト単位でリクエストの転送先のバックエン ド・セットをを制御することが可能になる機能 メリット • 1つのIPアドレスで異なるホスト名を利用でき る • 1つのロード・バランサで異なるホスト名のア プリケーションをサポートできる • 1つのロード・バランサで済むためバックエン ド・セットの管理が効率化できる • 1つのロード・バランサで済むため帯域効率や コスト効率が良くなる リクエスト・ルーティング – 1. 仮想ホスト Copyright © 2021, Oracle and/or its affiliates 34 リスナー1 (TCP/80) リスナー2 (TCP/80) 仮想ホスト www.example1.com 仮想ホスト www.example2.com 2021/6/22
  28. 仮想ホスト名のマッチング順 • FQDNの完全一致 (e.g. app.example.com) • アスタリスクで始まる部分一致 (*.example.com) • アスタリスクで終わる部分一致

    (app.example.*) 仮想ホストが指定されていないリスナーは、そのポートのデフォルト・リスナーとして機能(Catch-all) • ※ 全てのリスナーに仮想ホストが指定されている場合は、そのポート用に最初に定義した仮想ホス トがデフォルト・リスナーとして機能する 仮想ホスト機能の制限 • 正規表現の利用不可 • リスナーあたりの仮想ホスト名は最大16個まで • ロード・バランサあたりの仮想ホスト名は最大16個まで リクエスト・ルーティング – 1. 仮想ホスト Copyright © 2021, Oracle and/or its affiliates 35 2021/6/22
  29. リクエスト・ルーティング – 2. ルーティング・ポリシー 36 1つのリスナー(IPアドレス+プロトコル+ポート)に 対して複数のルールを定義することにより、リク エストの転送先のバックエンド・セットをより細 かく制御する機能 •

    以下のパラメータの複合条件が設定可能 • URL、URI(パス) • HTTPリクエストヘッダー • Cookie メリット • 1つのホスト名とポートで異なるバックエン ド・サーバーに処理を振り分けできる • 1つのロード・バランサで済むためバックエン ド・セットの管理が効率化できる • 1つのロード・バランサで済むため帯域効率や コスト効率が良くなる Copyright © 2021, Oracle and/or its affiliates ロード・バランサ (IP : xxx.xxx.xxx.xxx) リスナー (TCP/80) バックエン ド・セット 1 バックエン ド・セット 2 ルール1 user-agent = mobile ルール2 パス = /admin/ 2021/6/22
  30. ロード・バランサ (IP : xxx.xxx.xxx.xxx) リスナー (Port : 80) バックエン ド・セット

    1 バックエン ド・セット 2 下位互換機能、今後はルーティング・ポリシー機能をご利用ください 1つのリスナー(IPアドレス+プロトコル+ポート)に 対して URI パスに基づく複数のパス・ルート・ ルールを定義することにより、URIパス単位でリ クエストの転送先のバックエンド・セットをを制 御することが可能になる機能 メリット • 1つのホスト名とポートで異なるバックエン ド・サーバーに処理を振り分けできる • 1つのロード・バランサで済むためバックエン ド・セットの管理が効率化できる • 1つのロード・バランサで済むため帯域効率や コスト効率が良くなる 2022/3/24以降は設定変更ができなくなる [CN-64788] リクエスト・ルーティング – 2'. パス・ルート・セット(~2022/3/24) Copyright © 2021, Oracle and/or its affiliates 37 パス・ルート ・ルール1 /pages/ パス・ルート ・ルール2 /video/ 2021/6/22
  31. HTTP(S)のリクエストまたはレスポンスに対して様々な操作を行うためのルール定義 アクセス制御ルール • 特定のIPアドレス範囲に合致するトラフィックのみ を許可するルール アクセス方法ルール • GET、HEAD、POSTなど、特定のHTTPメソッドのみを 許可するルール URLリダイレクト・ルール

    • 特定のURI パスへのアクセスに対し、HTTPリクエス トを別のURI パスにリダイレクトするルール • 例えばHTTP(80)へのリクエストをすべてHTTPS(443) にリダイレクトしてSSL通信を強制する場合などに 利用 リクエスト・ヘッダー・ルール • バックエンド・サーバーに送信されるリクエストの HTTPヘッダーに対して追加、拡張(変更)、削除など の操作を行うルール • デバッグヘッダーの付与などに利用 レスポンス・ヘッダー・ルール • クライアントに返送されるレスポンスのHTTPヘッ ダーに対して追加拡張(変更)、削除などの操作を行 うルール • デバッグヘッダーの削除、[x-xss-protection]や[x- content-type]ヘッダ追加などに利用 HTTPヘッダー・ルール • HTTPヘッダーのバッファ・サイズを初期値の8KBよ りも大きく拡張したい場合に設定するルール、アプ リケーション側の要求に合わせて最大64KBまで拡張 • ピリオド「.」やアンダースコア「_」など、通常は 使用できない特殊文字の使用を許可するルールも設 定できる リクエスト・ルーティング – 3. ルール・セット Copyright © 2021, Oracle and/or its affiliates 38 2021/6/22
  32. ロード・バランサのメトリック - ディメンジョン 最新情報は公式ドキュメントをご確認ください 40 https://docs.oracle.com/cd/E97706_01/Content/Balance/Reference/loadbalancermetrics.htm Copyright © 2021, Oracle

    and/or its affiliates ディメンジョン名 説明 availabilityDomain ロード・バランサが存在する可用性ドメイン backendSetName メトリックが適用されるバックエンドセットの名前 lbComponent メトリックが適用されるロード・バランサ・コンポーネント このディメンジョン値(Backendset/Listener/Loadbalancer)毎に有効なメトリックが異なる lbHostId 現在のロード・バランサホストを表す一意のID ※このIDの値はロード・バランサの状況により変わる可能性がある listenerName メトリックが適用されるリスナーの名前 region ロード・バランサが存在するリージョン resourceId メトリックが適用されるリソースのOCID 2021/6/22
  33. lbComponentがLoadBalancerの場合のメトリックの詳細 最新情報は公式ドキュメントをご確認ください 41 https://docs.oracle.com/cd/E97706_01/Content/Balance/Reference/loadbalancermetrics.htm Copyright © 2021, Oracle and/or its

    affiliates メトリック コンソールの表示名 単位 内容 AcceptedConnections Accepted Connections count ロード・バランサによって受け入れられた接続の数 AcceptedSSLHandshake Accepted SSL Handshakes count 受け入れられたSSLハンドシェイクの数 ActiveConnections Active Connections count クライアントからロード・バランサへのアクティブな 接続の数 ActiveSSLConnections Active SSL Connections count アクティブなSSL接続の数 BytesReceived Bytes Received bytes ロード・バランサが受信したバイト数 BytesSent Bytes Sent bytes ロード・バランサによって送信されたバイト数 FailedSSLClientCertVerify Failed Client SSL Cert Verifications count 失敗したクライアントSSL証明書の検証の数 FailedSSLHandshake Failed SSL Handshakes count 失敗したSSLハンドシェイクの数 HandledConnections Handled Connections count ロード・バランサによって処理された接続の数 HttpRequests Inbound Requests count ロード・バランサへの着信クライアント要求の数 2021/6/22
  34. • Bring Your Own IP – Nov. 10, 2020 Released

    • Flexible Load Balancer – Dec. 16, 2021 Released • Load Balancer Routing Policies – March 17, 2021 Released • Network Load Balancer – Released • LBaaS support for HTTP/2 - Soon • Advanced Rules Sets - Soon • Customer Selected LBaaS VIP IP – Soon • LBaaS Listener ACL based on Real Client IP - Soon • WAF Integration in Load Balancer (Regional WAF) - Planned • Multi-active Load Balancer - Future • Flexible Load Balancer Phase 2 - Future Load Balancer Roadmap 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 43
  35. 1. 色々と複雑なOCIのロード・バランサの全体像を理解する • ロード・バランサの構成ってどうなっているの? • フレキシブル・ロード・バランサって何がフレキシブルなの? • ネットワーク・ロード・バランサって今までのロード・バランサと何が違うの? • 色々と種類があるけど、どうやって選べばいいの?

    2. ロード・バランサの作成の流れと準備するべきことを理解する(デモ中心) 3. ネットワーク・ロード・バランサのちょっと深い動作を知る(少しマニア向け) 4. ロード・バランサにどんな高度な機能があるか、何ができるかをざっくり理解する 5. 将来どんな機能拡張が予定されているかをちょっと知る 本日のセミナーのゴール(お伝えしたかったこと) 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 44
  36. Oracle Cloud Infrastructure マニュアル • https://docs.oracle.com/cd/E97706_01/Content/home.htm - マニュアル(日本語) • https://docs.cloud.oracle.com/iaas/api/-

    APIリファレンス • https://docs.oracle.com/cd/E97706_01/Content/General/Reference/aqswhitepapers.htm - テクニカル・ホ ワイト・ペーパー • https://docs.cloud.oracle.com/iaas/releasenotes/- リリースノート • https://docs.oracle.com/cd/E97706_01/Content/knownissues.htm - 既知の問題(Known Issues) • https://docs.oracle.com/cd/E97706_01/Content/General/Reference/graphicsfordiagrams.htm - OCIアイコ ン・ダイアグラム集(PPT、SVG、Visio用) Oracle Cloud Infrastructure マニュアル・ドキュメント Copyright © 2021, Oracle and/or its affiliates 47 2021/6/22
  37. Oracle Cloud Infrastructure 活用資料集 • https://community.oracle.com/docs/DOC-1035494 チュートリアル - Oracle Cloud

    Infrastructureを使ってみよう • https://community.oracle.com/docs/DOC-1019313 Oracle 主催 セミナー、ハンズオン・ワークショップ • https://www.oracle.com/search/events/ (右側の Filter から Locations -> Asia Pacific -> Japan と絞り込み) Oracle Cloud Infrastructure – General Forum (英語) • https://cloudcustomerconnect.oracle.com/resources/9c8fa8f96f/summary Oracle Cloud Infrastructure トレーニング・技術フォーラム Copyright © 2021, Oracle and/or its affiliates 48 2021/6/22
  38. Oracle Code Night Online 様々なテーマでウェビナー開催中! Oracle Code online 開催情報は Connpass

    で公開中! oracle-code-tokyo-dev.connpass.com 過去開催 Oracle Code online は YouTubeにて公開中! youtube.com/c/JapanOracleDevelopers 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 49
  39. Oracle Code Online Oracle Code online 開催情報は Connpass で公開中! oracle-code-tokyo-dev.connpass.com

    過去開催 Oracle Code online は YouTubeにて公開中! youtube.com/c/JapanOracleDevelopers 今後の開催スケジュール 6月22日開催 6月30日開催 7月7日開催 7月15日開催 7月20日開催 7月27日開催 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 50
  40. 次回予告!OCI スキルアップ セミナー #10 - もう迷わない! コンピュートの選び方を学ぼう - ◼ 2021年7月27日(火)

    ◼ 19:00 – 20:30 *18:50 接続開始 https://oracle-code-tokyo-dev.connpass.com/event/215004 これまでのインスタンスの種類も含めて総まとめをしながら、ユースケースに応じて、 これらの様々な選択肢からいったいどれを選んだらよいのかを整理していきます! 2021/6/22 Copyright © 2021, Oracle and/or its affiliates 51