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

OCI技術資料 : ロード・バランサー 詳細 / Load Balancer 200

OCI技術資料 : ロード・バランサー 詳細 / Load Balancer 200

Oracle Cloud Infrastructure (OCI) の技術説明資料、ロード・バランサーの詳細編 (Level 200) です。

セッション永続性、仮想ホストによるルーティング、URIパス・ベース・ルーティング、SSLの利用とSSLターミネーションの設定、ロードバランサー で取得できるメトリックなどについて解説しています。

More Decks by Oracle Cloud Infrastructure ソリューション・エンジニア

Other Decks in Technology

Transcript

  1. https://oracle-japan.github.io/ocidocs/services/networking/load-balancer-100/ • OCIロード・バランサは、1つのエントリーポイントからVCN内の複数のサーバーに対して自動的にト ラフィックを分散 これによりリソース利用率が向上し、容易な拡張性と高可用性を得られます • OCIでは、プロキシ型のフレキシブル・ロード・バランサ(FLB)と、パススルー型のネットワーク・ ロード・バランサ(NLB)の2種類のロード・バランサが選択可能 • サポートプロトコル

    – TCP, HTTP/1.0, HTTP/1.1, HTTP/2, WebSocket • SSL ターミネーション、エンドツーエンド SSL、SSL トンネリングをサポート • FLBでは、セッション永続性やコンテンツベースルーティングなど高度なレイヤー7ロード・バラン シングの機能をサポート • 主な特長 • プライベートまたはパブリック・ロード・バランサ (パブリック IP アドレスが付与) • フレキシブルな帯域 • TCP (レイヤ 4) および HTTP (レイヤ 7) トラフィック用の単一ロード・バランサ ロード・バランサ 概要編 のおさらい Copyright © 2024, Oracle and/or its affiliates 2
  2. この資料では、以下のことを解説しています • タイムアウトとキープアライブ設定 • バックエンド・サーバーでのクライアントIPアドレスの識別 • SSL通信対応方式への理解とロード・バランサでのSSLターミネーションの設定 • セッション永続性を利用したバックエンド・サーバーの固定 •

    リクエスト・ルーティングを用いた高度なルーティング • WAF(Web Application Firewall)、Webアプリケーション・アクセラレーションとの連携 • ロード・バランサのロギング • ロード・バランサのメトリック • トラブル時の対応ガイドライン ロード・バランサ 詳細編 内容 Copyright © 2024, Oracle and/or its affiliates 3
  3. FLBにおけるタイムアウト、キープアライブの挙動 Copyright © 2024, Oracle and/or its affiliates 5 clients

    Load Balancer Backend Servers HTTP message/ TCP segment HTTP 200 3way handshake 3way handshake Fin/ACK GET HTTP message/ TCP segment HTTP message/ TCP segment GET HTTP 200 HTTP message/ TCP segment Fin/ACK ロード・バランサとクライアント間のキープ・アライブ 設定 = アイドル65秒または最大10,000トランザクション(変更不可) ロード・バランサがクライアントに最後のメッセージの送信(C)を 行ってから、次にクライアントからのメッセージを受信(C')するま での時間 アイドル・タイムアウト(リスナー・タイムアウト) = TCPリスナー : デフォルト300秒, 最大7200秒 = HTTPリスナー : デフォルト60秒, 最大7200秒 ロード・バランサがクライアントからメッセージを受信(A)してか ら次に受信(A')するまでの時間、またはクライアントにメッセージ を返信(B)してから次の返信を行うまで(B')の時間 ロード・バランサとバックエンド・サーバー間のキー プ・アライブ設定 = アイドル300秒(変更不可) ロード・バランサがバックエンド・サーバーから最後のメッセージ を受け取ってから(D)、次のメッセージをバックエンド・サーバー に転送するまで(D')の時間 (バックエンド・サーバーの)キープ・アライブ設定 = バックエンド・サーバーで設定、推奨値310秒以上 バックエンド・サーバーが、ロード・バランサに応答を返した(E)後、 次にロード・バランサからリクエストが送られてくるまで(E')の時 間 (A) (A') (D') (D) (C) (C') (E') (E) (A-A') receive timer (B-B') send timer (B) (B') https://docs.oracle.com/ja-jp/iaas/Content/Balance/Reference/connectionreuse.htm
  4. アイドル65秒経過時はFLBからFINパケットが送信されTCP接続が切断される 1 0.000000000 10.0.1.25 -> 10.0.2.228 TCP 74 43744 >

    http [SYN] Seq=0 Win=65340 Len=0 MSS=1485 SACK_PERM=1 TSval=3551202664 TSecr=0 WS=128 2 0.002493772 10.0.2.228 -> 10.0.1.25 TCP 74 http > 43744 [SYN, ACK] Seq=0 Ack=1 Win=26844 Len=0 MSS=8960 SACK_PERM=1 TSval=4158075881 TSecr=3551202664 WS=1024 3 0.000013286 10.0.1.25 -> 10.0.2.228 TCP 66 43744 > http [ACK] Seq=1 Ack=1 Win=65408 Len=0 TSval=3551202667 TSecr=4158075881 (略) 13 0.000005690 10.0.1.25 -> 10.0.2.228 TCP 66 43744 > http [ACK] Seq=241 Ack=1663 Win=64128 Len=0 TSval=3551202681 TSecr=4158075896 14 65.001322203 10.0.2.228 -> 10.0.1.25 TCP 66 http > 43744 [FIN, ACK] Seq=1663 Ack=241 Win=27648 Len=0 TSval=4158140891 TSecr=3551202681 15 0.040574411 10.0.1.25 -> 10.0.2.228 TCP 66 43744 > http [ACK] Seq=241 Ack=1664 Win=64128 Len=0 TSval=3551267723 TSecr=4158140891 16 40.054097462 10.0.1.25 -> 10.0.2.228 TCP 66 43744 > http [FIN, ACK] Seq=241 Ack=1664 Win=64128 Len=0 TSval=3551307777 TSecr=4158140891 17 0.001380630 10.0.2.228 -> 10.0.1.25 TCP 66 http > 43744 [ACK] Seq=1664 Ack=242 Win=27648 Len=0 TSval=4158180983 TSecr=3551307777 クライアント – FLB間のアイドル・タイムアウト発生時の挙動 Copyright © 2024, Oracle and/or its affiliates 6 3-way handshake 65秒経過 FINパケットがLB-> クライアントに送信 コネクションが切断
  5. フレキシブル・ロード・バランサを介したトラフィックは、送信元のIP 情報がロード・バランサの情報に変換されてバックエンド・サーバーに 転送されるため、バックエンド・サーバーにはロード・バランサのIPア ドレスやポートが送信元情報として渡される バックエンド・サーバーでクライアントのIPを取得したい場合は… • HTTPリスナーでは、HTTPヘッダーに挿入される X-Forwarded- ヘッダーから取得 •

    TCPリスナーでは方法がないため、ネットワーク・ロード・バラン サで「ソースIPを保全」のチェックをつけて利用することを推奨 クライアントのIPアドレスやポート情報の判別 Copyright © 2024, Oracle and/or its affiliates 9 送信元 : 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アドレスを識別 ① ④ ① ④
  6. 3種類のSSL通信方式 Copyright © 2024, Oracle and/or its affiliates 11 SSLターミネーション

    • ロード・バランサでSSLを終端 • クライアントとロード・バランサ間の通信を暗号化 • SSL証明書をロード・バランサで一括管理 • バックエンドのWebサーバーの負荷を軽減 • FLBのHTTPSリスナーでのみ利用可能 エンド・ツー・エンドSSL • ロード・バランサで一度SSLを終端した上で、別のSSL通信を バックエンド・サーバーとの間で確立 • クライアントからバックエンド・サーバー間通信が全暗号化 • SSL証明書をロード・バランサとバックエンドサーバーの両 方で管理 • FLBのHTTPSリスナーでのみ利用可能 SSLパススルー • ロード・バランサがSSLをパススルーして、バックエンド・ サーバー側でSSLを終端 • ロード・バランサでのSSL証明書管理は不要 • FLBのTCPリスナーとNLBで利用可能 HTTPS (暗号化) HTTP (非暗号化) ロード・バランサ HTTPS (暗号化) HTTPS (暗号化) ロード・バランサ HTTPS(暗号化) ロード・バランサ バックエンド ・サーバー バックエンド ・サーバー バックエンド ・サーバー クライアント クライアント クライアント
  7. OCI 証明書(Certificates)サービスとの連携 Copyright © 2024, Oracle and/or its affiliates 12

    OCI 証明書サービスが管理するSSL証明書を、フレキシブル・ロード・バランサ(FLB)から利用可能 →証明書の更新などの管理作業をOCI証明書サービスの機能で省力化 OCI 証明書サービス(OCI Certificates Service)は、証明書の発行、保管、管理機能を提供するサービス • 証明書(Certificate)、認証局(CA)、CAバンドルのライフサイクル管理 • CA/証明書/CAバンドルの作成、更新、削除 • 証明書の自動更新、有効期間設定、バージョン管理とローテーション • 外部からの証明書インポートなど • 管理者は手動での証明書の更新や期限管理などの作業から解放される
  8. RSAキーの作成 証明書署名要求 (CSR) の作成 SSLの設定ステップ - 1. 秘密鍵と証明書署名要求(CSR) の生成 Copyright

    © 2024, Oracle and/or its affiliates 16 $ openssl req -new -key MyKey.key -out MyCSR.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:WA Locality Name (eg, city) []:Redmond Organization Name (eg, company) [Internet Widgits Pty Ltd]:Oracle Organizational Unit Name (eg, section) []:OCI Common Name (e.g. server FQDN or YOUR name) []:*.example.org Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: $ openssl genrsa -out MyKey.key 2048 Generating RSA private key, 2048 bit long modulus .........................+++ .....................+++ e is 65537 (0x10001)
  9. 自己署名証明書の生成 SSLの設定ステップ - 2. 自己署名証明書の生成 Copyright © 2024, Oracle and/or

    its affiliates 17 $ openssl x509 -req -days 365 -in MyCSR.csr -signkey MyKey.key -out ExampleCert.crt Signature ok subject=/C=US/ST=WA/L=Redmond/O=Oracle/OU=OCI/CN=*.example.org/[email protected] Getting Private key $ openssl x509 -in exampleCert.crt -noout -text Certificate: Data: Version: 1 (0x0) Serial Number: fa:98:bb:ae:1e:19:4d:a3 Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, ST=WA, L=Redmond, O=Oracle, OU=OCI, CN=*.example.org/[email protected] Validity Not Before: Jun 6 18:34:41 2018 GMT Not After : Jun 6 18:34:41 2019 GMT Subject: C=US, ST=WA, L=Redmond, O=Oracle, OU=OCI, CN=*.example.org/[email protected] Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c0:63:f1:aa:d8:98:b1:01:0f:9f:fa:71:6a:9a: f1:05:9d:d6:84:01:88:8d:51:6e:b5:d4:fa:5e:fb: 95:f7:ac:ed:07:11:bf:89:85:4b:39:70:71:9e:7e: cd:ba:24:96:65:d9:41:69:d1:05:f7:1a:a2:43:29: 7a:6b:de:11:e7:2b:6f:95:ee:04:de:2b:23:b1:0b: a6:a2:76:8f:40:42:50:1e:d8:2a:16:2c:d5:97:2b:
  10. 証明書を PEM 形式に変換 SSLの設定ステップ - 3. ロード・バランサに証明書を追加 Copyright © 2024,

    Oracle and/or its affiliates 18 $ openssl x509 -in ExampleCert.crt -out ExampleCert.pem -outform PEM
  11. Webアプリケーションのセッションを維持するため、同一のクライアントからのリクエストを 同一サーバーに振り分ける機能 利用例 : ショッピングカートなど同じサーバーでトランザクション処理を必要とする場合 Cookie情報を元に転送先のサーバーを決定する Cookie persistence をサポート ※Cookieを受け入れないクライアントではセッション維持は不可

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

    アプリケーションCookieの永続性 • アプリケーションが挿入したCookieの情報を セッション永続性のベースに使用する方式 • 細かい制御をしたい場合はこちらを選択 • 実際にはアプリケーションのCookieが直接使 用されるわけではなく、Cookie(+α)から生成 したハッシュ値を使ってロード・バランサが 新しいCookieを追加、このCookieがセッショ ン永続性維持に使われる FLBのHTTP/HTTPSリスナーでのみ利用可能 Copyright © 2024, Oracle and/or its affiliates 23
  13. Cookieによるセッション永続性維持の処理シーケンス ロード・バランサCookieの永続性 の場合 Client Load Balancer Backend Server 1 2

    200 OK 3 200 OK Set-cookie:X-Oracle-BMC-LBS-Route=yyy 4 5 Set-cookie:X-Oracle-BMC-LBS-Route=yyy 追加 1. 初回アクセス時、ロード・バランサは負荷分散ア ルゴリズムに従ってトラフィックを特定のバック エンド・サーバーに転送 2. バックエンド・サーバーが返答 3. ロード・バランサは、バックエンド・サーバー情 報のハッシュ値からX-Oracle-BMC-LBS-Routeと いう名前の新しい Cookie を生成、レスポンス ヘッダーに追加して返送 4. 次回アクセス時、クライアントはCookieをリクエ ストヘッダーに設定して要求 5. ロード・バランサ はCookieの値を元に、元のバッ クエンド・サーバーにトラフィックを転送 FLBのHTTP/HTTPSリスナーでのみ利用可能 Copyright © 2024, Oracle and/or its affiliates 24
  14. Cookieによるセッション永続性維持の処理シーケンス アプリケーションCookieの永続性 の場合 Client Load Balancer Backend Server 1 2

    200 OK Set-cookie: sessionid=xxx 3 200 OK Set-cookie:sessionid=xxx Set-cookie:X-Oracle-BMC-LBS-Route=yyy 4 5 Set-cookie:sessionid=xxx Set-cookie:X-Oracle-BMC-LBS-Route=yyy 追加 1. 初回アクセス時、ロード・バランサは負荷分散ア ルゴリズムに従ってトラフィックを特定のバック エンド・サーバーに転送 2. バックエンド・サーバーは、Set-cookie レスポン スヘッダーにCookie情報を格納して返答 3. ロード・バランサは、レスポンスヘッダーの Cookieを設定済条件と照合し、一致する場合はそ のCookie+バックエンド・サーバー情報のハッ シュ値からX-Oracle-BMC-LBS-Routeという名前 の新しいCookieを生成、レスポンスヘッダーに追 加して返送 4. 次回アクセス時、クライアントはCookieをリクエ ストヘッダーに設定して要求 5. ロード・バランサはCookieの値を元に、元のバッ クエンド・サーバーにトラフィックを転送 注意 : アプリケーション側でFLBが発行する X-Oracle-VMC- LBS-Route と同じ名前のCookieを発行しないでください。発 行するとロードバランサが2つの同名Cookieを混同するため 正しくセッション維持ができなくなります。 FLBのHTTP/HTTPSリスナーでのみ利用可能 Copyright © 2024, Oracle and/or its affiliates 25
  15. Q. 元のバックエンド・サーバーが利用できなくなった場合はどのような挙動になりますか? • フォールバック(Fallback)パラメーターの設定値により挙動が変わる • フォールバック有効 : バックエンド・セット内の異なるバックエンド・サーバーを選択してセッションをリダイ レクト •

    フォールバック無効 : ロード・バランサがHTTPコード 502を応答してリクエストを失敗させる Q. セッション永続性を止めるには? • 該当のcookie(match-allパターンを使用している場合はすべてのcookie)を削除すればセッション永続 性は停止 • 一般的には cookie をいきなり削除するのではなく、過去の有効期限を設定してCookieを更新するこ とで無効化し、一定期間挙動を見た後に削除することが多い • Cookie 削除(無効化)後に受け付けたリクエストは、構成されているトラフィック分散メカニズム (重 み付けラウンド・ロビン、最小接続など) に従って処理される セッション永続性に関するFAQ Copyright © 2024, Oracle and/or its affiliates 26 FLBのHTTP/HTTPSリスナーでのみ利用可能
  16. Q. ロード・バランサの構成ノードに障害が起きた場合のセッション永続性の挙動は? • フレキシブル・ロード・バランサの構成ノードに障害が起きた場合にも、Cookieによるセッション 情報は維持され、健全な構成ノードで処理が実行される • Cookieの再設定や、別のバックエンドサーバーに割り振られるという挙動は発生しない • 発行済のCookieを持つクライアントからリクエストは、問題なく今まで割り振られていたバックエ ンドサーバーに接続する

    Q. フレキシブル・ロード・バランサが生成するCookieに属性値を追加することはできますか? • いいえ、現在のFLBはロード・バランサCookieにユーザーが属性値を追加することはできません • もし属性値の追加が必要な場合は、アプリケーションCookieをご利用ください。アプリケーション Cookieに付加されている属性値は、そのままFLBが生成するCookieの属性に取り込まれます • Cookie属性の例 : Expires, Max-Age, SameSite, Secure, HTTP-Only など • 補足 : リクエスト・ルーティングのヘッダー・ルール機能を利用しても、FLBが生成するCookieに属 性の追加はできません。これはFLB内部の処理順序に起因します セッション永続性に関するFAQ Copyright © 2024, Oracle and/or its affiliates 27 FLBのHTTP/HTTPSリスナーでのみ利用可能
  17. Cookieベースのセッション永続性機能の利用可否 ① 利用可◦ - フレキシブル・ロード・バランサ(FLB)のHTTP/HTTPSリスナー ② 利用不可× - フレキシブル・ロード・バランサ(FLB)のTCPリスナー ③

    利用不可× - ネットワーク・ロード・バランサ(NLB) Cookieベースのセッション永続性機能は、HTTPヘッダー内のCookie情報を利用するため、①FLBのHTTP(S)リス ナーでのみ利用可能 ②③のCookieが利用できない場合は、ロード・バランシング・ポリシーにIPハッシュ(FLB)や2タプル・ハッシュ (NLB)を利用することで、クライアントのIP(のハッシュ値)でバックエンド・サーバーの固定が可能 Cookieベースのセッション永続性機能が利用できない場合のバックエンド・ サーバーの固定方法 Copyright © 2024, Oracle and/or its affiliates 28 Proxy 1.1.1.1 2.2.2.2 3.3.3.3 1.1.1.1 2.2.2.2 3.3.3.3 5.5.5.5 NLBの2タプル・ ハッシュ FLB TCPリスナ のIPハッシュ
  18. • リクエスト・ルーティングを用いることにより、ホスト名やIPアドレスよりも細かい特定のリクエス トパラメーターに基づいてトラフィックの転送先や転送ルールを設定することが可能 • リクエスト・ルーティングはFLBのHTTP、HTTPSリスナーのみ対応 • 理由 : レイヤー7の情報を利用するため •

    FLBのTCPリスナーや、NLBは非対応 • 3種類の手法を用意 1. 仮想ホスト - 仮想的なホスト名単位でリクエストを制御 2. ルーティング・ポリシー – URIパス、リクエストヘッダー、パラメータ、Cookieなどに基づいてリクエストを 制御 • 2021年3月までの標準だった パス・ルート・セット(現在は設定不可)の上位互換機能 3. ルール・セット - HTTP(S)のリクエストまたはレスポンスに対して様々な操作を行うためのルール定義 リクエスト・ルーティング Copyright © 2024, Oracle and/or its affiliates 30 FLBのHTTP/HTTPSリスナーでのみ利用可能
  19. ロード・バランサ (IP : xxx.xxx.xxx.xxx) バックエン ド・セット 1 バックエン ド・セット 2

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

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

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

    1 バックエン ド・セット 2 下位互換機能、今後はルーティング・ポリシー機能をご利用ください 2022/3/24以降は設定不可[CN-64788] →機能的にも上位互換のルーティング・ポリシー を利用してください 1つのリスナー(IPアドレス+プロトコル+ポート)に 対して URI パスに基づく複数のパス・ルート・ ルールを定義することにより、URIパス単位でリ クエストの転送先のバックエンド・セットをを制 御することが可能になる機能 • 1つのホスト名とポートで異なるバックエン ド・サーバーに処理を振り分けできる • 1つのロード・バランサで済むためバックエン ド・セットの管理が効率化できる • 1つのロード・バランサで済むため帯域効率や コスト効率が良くなる リクエスト・ルーティング – 2'. パス・ルート・セット(~2022/3/24) パス・ルート ・ルール1 /pages/ パス・ルート ・ルール2 /video/ FLBのHTTP/HTTPSリスナーでのみ利用可能 Copyright © 2024, Oracle and/or its affiliates 34
  23. 下位互換機能、今後はルーティング・ポリシー機能をご利用ください パス・ルート・ルールは、パス・ルート文字列とパターンマッチで構成 パターンマッチの種類 • 完全一致(EXACT_MATCH) • 着信URIパスと完全一致する文字列 : ^<path_string>$ •

    最長接頭辞の強制一致(FORCE_LONGEST_PREFIX_MATCH) • URIパスの先頭から最もよく一致する文字列 : <path_string>.* • 接頭辞一致(PREFIX_MATCH) • 着信URIパスの先頭部分に一致する文字列 : ^<path_string>.* • 接尾辞一致(SUFFIX_MATCH) • 着信URIパスの末尾部分に一致する文字列 : .*<path_string>$ リクエスト・ルーティング – 2'. パス・ルート・セット(~2022/3/24) Copyright © 2024, Oracle and/or its affiliates 35 FLBのHTTP/HTTPSリスナーでのみ利用可能
  24. 下位互換機能、今後はルーティング・ポリシー機能をご利用ください パス・ルート・ルールの優先順位 1. 完全一致(EXACT_MATCH) 2. 最長接頭辞の強制一致 (FORCE_LONGEST_PREFIX_MATCH) 3. 接頭辞一致(PREFIX_MATCH) もしくは

    接尾 辞一致(SUFFIX_MATCH) に設定した順序 完全一致と最長接頭辞の強制一致は、ルールの順 序設定に関係なく優先的に適用 複数の接頭辞一致または接尾辞一致を同時に使用 する場合、上位のルールから順に適用される リクエスト・ルーティング – 2'. パス・ルート・セット(~2022/3/24) Copyright © 2024, Oracle and/or its affiliates 36 FLBのHTTP/HTTPSリスナーでのみ利用可能
  25. 組み合わせた場合は、仮想ホストの設定は、ルーティング・ポリシーやパス・ルート・セットの設定よ りも優先度が高くなる 仮想ホストごとにURIパス、リクエストヘッダー、Cookieなどのルーティングが動作する 例 : 1つのリスナーとA、B、Cの3つのバックエンド・セット、デフォルト・バックエンド・セットはA • 仮想ホストの設定 • foo.com

    → バックエンド・セットB • bar.com →バックエンド・セットC • URIパスによるポリシーの設定 • /biz → バックエンド・セットB (完全一致) • /baz →バックエンド・セットC (完全一致) 仮想ホストとルーティング・ポリシーを組み合わせた場合 Copyright © 2024, Oracle and/or its affiliates 38 URL ルーティング先 http://foo.com B http://foo.com/biz B http://foo.com/baz C http://bar.com C http://bar.com/biz B http://bar.com/baz C http://example.com A http://example.com/biz B http://example.com/baz C FLBのHTTP/HTTPSリスナーでのみ利用可能
  26. 仮想ホストとルーティング・ポリシーを組み合わせた場合 LB-APPS-1 ipAddress = ip-1 name = foo-and-bar-LB BackendSet[[] Listeners[]

    PathRouteSet[] Listener-default port = 554 serverName = null defaultBackendSet = foo.BES-1 certificate = foo-Certificate PathRouteSet = PRS-1 Listener-foo port = 443 serverName = *.foo.com defaultBackendSet = foo.BES-1 certificate = foo-Certificate PathRouteSet = null Listener-bar port = 443 serverName = *.bar.com defaultBackendSet = bar.BES-1 certificate = foo-Certificate PathRouteSet = PRS-1 foo-Certificate CN = www.foo.com SAN = *.foo.com bar-Certificate CN = www.bar.com SAN = *.bar.com foo-BES-1 [] – foo-Backends-1 bar-BES-1 [] – bar-Backends-1 bar-BES-2 [] – bar-Backends-2 PRS-1 [] – bar-path-route-rules Exact Matches /biz → bar-BES-1 /baz → bar-BES-2 URL 転送先 http://example.com foo-BES-1 http://example.com/biz bar-BES-1 http://example.com/baz bar-BES-2 http://foo.com foo-BES-1 http://bar.com bar-BES-1 http://bar.com/baz bar-BES-2 FLBのHTTP/HTTPSリスナーでのみ利用可能 Copyright © 2024, Oracle and/or its affiliates 39
  27. 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. ルール・セット FLBのHTTP/HTTPSリスナーでのみ利用可能 Copyright © 2024, Oracle and/or its affiliates 40
  28. ヘッダー・ルール リスナーを経由するリクエストまたはレスポンス に対してHTTPヘッダの追加、変更、削除が可能 ロード・バランサにつき最大50個のルール ルールセットを利用することにより以下のような 対応が可能 • バックエンド・サーバー情報の不要な流出を 抑制 •

    [Server]などのデバッグヘッダー削除 • Webサーバーに対するセキュリティ対策の補 助 • [x-xss-protection]や[x-content-type]ヘッダ追 加 FLBのHTTP/HTTPSリスナーでのみ利用可能 Copyright © 2024, Oracle and/or its affiliates 41
  29. Copyright © 2024, Oracle and/or its affiliates 45 WAF(Web Application

    Firewall)、 Webアプリケーション・アクセラレーションとの連携
  30. FLB上でWAF保護ポリシーを適用し、 VCN内アプリケーションを保護 • OCI Web Application Firewall(WAF)は、アプリケーション層(L7)DDOS攻撃、クロスサイトスクリ プティング、SQLインジェクション、などの多数のサイバー脅威からWebアプリケーションを保護する サービス •

    VCN内のフレキシブル・ロード・バランサー(パブリック/プライベート)に対してWAF保護ポリシー を適用できるようになった • インターネット・アプリケーションだけではなくVCN内部のプライベートなアクセスに対しても WAFでの保護が可能に • Blog:Announcing Oracle Cloud Infrastructure WAF Protection on Flexible Load Balancers • WAF課金体系の変更 フレキシブル・ロード・バランサー上でのWeb Application Firewall Copyright © 2024, Oracle and/or its affiliates 46 2021/10/27 新機能 OCI パブリック・サブ ネット プライベート・サブネット VCN DRG パブリック・ ロード・バラ ンサ インター ネット・ ゲートウェ イ インスタンス インスタンス プライベー ト・ロード・ バランサ WAFポリ シー WAFポリ シー オンプレミス 保護 保護 インターネッ ト Product Price Metric Instance $5 Instance Per Month Requests $0.6 1,000,000 Incoming Requests Per Month
  31. ロードバランサにキャッシュと圧縮機能を追加して、HTTPベースアプリケーションのトラ フィックを軽減 • キャッシュの最大サイズは100MB • リクエストにAccept-Encodingヘッダーを入れる必要がある • ログの取得も可能 [Network] Web

    Application Acceleration Copyright © 2024, Oracle and/or its affiliates 47 2022/6/15 新機能 “cacheStatus” HIT ・・キャッ シュあり MISS・・キャッ シュなし キャッシングを有効にすると圧縮も選択可能 参考ブログ:https://blogs.oracle.com/oracle4engineer/post/ja-intro-waa
  32. フレキシブル・ロード・バランサ(NLB)は、OCIロギング・サービ スにログ出力が可能 • アクセス・ログ、エラー・ログの2種類が出力 • 他サービスのログ、監査ログ、カスタムログと統合して蓄積、 分析が可能 • サービス・コネクタ・ハブ経由でオブジェクト・ストレージ やロギング・アナリティクス・サービスなどに出力可能

    ※ネットワーク・ロード・バランサ(NLB)はアクセス/エラーログ 出力不可 ログ出力はオプションのため要設定 • ロード・バランサ・インスタンス毎にユーザーが有効化/無効 化を選択 • OCIロギング・サービスの課金枠を消費するため、大量のトラ フィックがある場合には課金に注意(無料枠あり : 10GB/月) アクセス・ログ/エラー・ログの OCI ロギング・サービスへの出力 Copyright © 2024, Oracle and/or its affiliates 49 Logging ロギング 監査 VCN Flow Logs アプリケー ション ロード バランサー オブジェクト ストレージ OCIネイティ ブサービス
  33. https://docs.oracle.com/ja-jp/iaas/Content/Network/Concepts/vcn_flow_logs.htm VCNフロー・ログ機能を利用することで、ロード・バランサを通過するトラフィックの情報を収集し、 OCIロギング・サービスに出力することができる • VCNフロー・ログは、サブネット単位(or VCN単位)で有効化可能 → ロード・バランサの存在するサブネットに対して有効化を設定する • 有効化すると、ロード・バランサの仮想NICを流れるトラフィックのIPヘッダ情報をログとして収集

    • 収集したログは、OCIロギング・サービスに出力される フロー・ログで記録されるのは、あくまでIPヘッダの一部の情報のみのため、それ以上の情報が必要な 場合は、前述のアクセス・ログ機能や後述のVTAPを利用すること VCNフロー・ログ内容の例 (フォーマット詳細) ACCEPT TCP 172.21.2.185 Port 43360 → 129.146.13.236 Port 443 Bytes 10515 Packets 19 ACCEPT TCP 129.146.13.236 Port 443 → 172.21.2.185 Port 43360 Bytes 5548 Packets 14 VCNフロー・ログを利用したトラフィック・ログの取得 Copyright © 2024, Oracle and/or its affiliates 50 VCN Flow Logs
  34. https://docs.oracle.com/ja-jp/iaas/Content/Network/Tasks/vtap.htm フレキシブル・ロード・バランサ(FLB)に VTAP (Virtual Test Access Point) をアタッチすること で、ロード・バランサを流れるトラフィックをミ ラーし、ネットワーク・ロード・バランサ(NLB)

    経由で他のインスタンスに転送できる ユースケース • トラフィックの蓄積、分析、監査、レポー ティング(パケット・キャプチャ) • IDSによる侵入検知、トラフィック監視 • 通信のトラブルシューティング FLB、VTAPそのものにはトラフィックの蓄積、分 析機能はないため、ミラー先にサードパーティ ツールなどを設置して利用 VTAP (Virtual Test Access Point) と連携したフル・パケット・キャプチャ Copyright © 2024, Oracle and/or its affiliates 51 フレキシブル・ロード・バランサ (ソース)
  35. OCIのロードバランサ(FLB, NLB)の監視を行うに は、OCIモニタリングのメトリックの活用が不可 欠 • エージェントによる監視ができない • ユーザーによるエージェントのインストールはで きない •

    OCIモニタリング・エージェントも非対応 • OCI Eventsのイベントに非対応 • イベントを生成するサービス の一覧にない → 状態監視を行うにはOCIモニタリング、OCIロ ギングの2つのサービスを活用 ロードバランサのメトリックの活用 Copyright © 2024, Oracle and/or its affiliates 53
  36. https://docs.oracle.com/ja-jp/iaas/Content/Balance/Reference/loadbalancermetrics.htm OCIのロード・バランサのメトリック (ネームスペース : oci_lbaas)は、大きく3つの種類(lbComonent)の メトリック群が用意されている • lbComponent = loadbalancer

    • ロード・バランサ全体のリクエスト数、接続数、SSLの状態、送受信バイト数、帯域などの情報(11種) • lbComponent = listener • リスナー毎のHTTP応答数(HTTPステータスコード別) (8種) • lbComponent = backendset • バックエンド・セット毎のバックエンドサーバーの状態、アクティブ接続数、タイムアウトの有無、送受信バ イト数、HTTP応答数(HTTPステータスコード別)、応答時間など (19種) 詳細はドキュメント : Load Balancerメトリック を参照してください ロード・バランサのメトリックの種類 Copyright © 2024, Oracle and/or its affiliates 54
  37. アプリケーションに合わせて適切にヘルスチェックのパラメーターを設定 • ヘルス・ステータスは3分ごとに更新、より細かい粒度は使用不可 障害時はステータス・インジケーターの情報を使って問題を調査 • バックエンド・サーバーの[詳細]ページの[ステータス]フィールドに表示されているエラーコードを 確認する よくあるケース • ヘルスチェックの設定が間違っている

    • リスナーの構成が誤っている • 間違ったポートでリッスンしている • 間違ったプロトコルを使用している • 間違ったポリシーを使用している • セキュリティ・リストが誤って設定されている • VCNのセキュリティ・リストまたはネットワーク・セキュリティ・グループがトラフィックをブロックしてい る • ルート表の構成が誤っている トラブル時の対応ガイドライン Copyright © 2024, Oracle and/or its affiliates 58
  38. この資料では、以下のことを解説しました • タイムアウトとキープアライブ設定 • バックエンド・サーバーでのクライアントIPアドレスの識別 • SSL通信対応方式への理解とロード・バランサでのSSLターミネーションの設定 • セッション永続性を利用したバックエンド・サーバーの固定 •

    リクエスト・ルーティングを用いた高度なルーティング • WAF(Web Application Firewall)、Webアプリケーション・アクセラレーションとの連携 • ロード・バランサのロギング • ロード・バランサのメトリック • トラブル時の対応ガイドライン まとめ Copyright © 2024, Oracle and/or its affiliates 59
  39. 日本語マニュアル – ロード・バランシング • https://docs.oracle.com/ja-jp/iaas/Content/Balance/Concepts/balanceoverview.htm 日本語マニュアル – ネットワーク・ロード・バランサ • https://docs.oracle.com/ja-jp/iaas/Content/NetworkLoadBalancer/overview.htm

    チュートリアル – ロード・バランサでWebサーバーを負荷分散する • https://oracle-japan.github.io/ocitutorials/intermediates/using-load-balancer/ ロード・バランサ 関連の技術情報 Copyright © 2024, Oracle and/or its affiliates 60
  40. Oracle Cloud Infrastructure マニュアル • https://docs.oracle.com/ja-jp/iaas/Content/home.htm - マニュアル(日本語) • https://docs.cloud.oracle.com/iaas/api/

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

    Infrastructureを使ってみよう • https://oracle-japan.github.io/ocitutorials/ 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 © 2024, Oracle and/or its affiliates 62