[Oracle Cloud] ロードバランサで仮想ホスト名ベースのリクエスト・ルーティングしてみた (2024/01/16)

# はじめに

OCIのロードバランサ(Flexible Load Balancer)では、受信リクエストをバックエンド・セットにルーティングする方法として、仮想ホスト名、ルーティング・ポリシー、ルール・セットなどがありますが、仮想ホスト名ベースのルーティングを実施してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/c720c88a-1167-8497-2b3e-0c2dc45b7192.png)

ロードバランサ用に作成するリスナー(IPアドレス+プロトコル+ポート)に仮想ホスト名を割り当て、DNSシステムで作成したレコードと組み合せて使用します。リスナーに関連付けられたホスト名は、そのリスナーのバックエンド・セットに対応します。これらのバックエンド・セットは、異なるアプリケーションをホストする特定のバックエンドにトラフィックをルーティングします。


### 仮想ホスト名ベースのルーティングのメリット

- 1つのIPアドレスで異なるホスト名を利用できる
- 1つのロードバランサで異なるホスト名のアプリケーションをサポート
- 1つのロードバランサを複数のアプリケーションで利用することで、帯域幅総需要の管理の最適化
- 管理の簡素化

# 前提条件

- VCNの作成
- ロードバランサ(Flexible Load Balancer)の作成
- HTTPリスナーが稼働しているOCI Compute 2台

# 作業ステップ

- バックエンド・セットの追加作成
- ホスト名の追加
- リスナーの作成

# バックエンド・セットの追加作成
OCI Webコンソールナビゲーション メニューでロードバランサの詳細を開きます。
リソースの「バックエンド・セット」を選択し、「バックエンド・セットの作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/ba430d70-9796-eaa7-5ee6-26c53b159297.png)

「名前」を入力し、トラフィック分散ポリシー・セッション永続性を選択、ヘルス・チェックのURLパス(URI)を入力（例では 「/」）し「バックエンド・セットの作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/d7526434-dead-b8ea-86fa-6e41745e6cd7.png)

作業リクエストで「CreateBackendSet」が成功したことを確認

バックエンド・セットは２つ追加作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/b1bbf5fe-5dec-9a0d-a39d-458617c4927a.png)

## バックエンドの追加
作成したバックエンド・セットの詳細画面でリソースの「バックエンド」を選択し、「バックエンドの追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/b1f84af9-d53f-9553-65c6-a5f4ce17f6d8.png)

コンピュート・インスタンスからHTTPリスナーが稼働しているComputeインスタンスを選択し「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/c140012c-a2e5-29ee-97ca-ab2c98b36d2c.png)

それぞれのバックエンド・セットでバックエンドを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/c26d88e7-203c-b83b-f2db-42f042259ea6.png)


# ホスト名の追加
OCI Webコンソールナビゲーション メニューでロードバランサの詳細を開きます。
リソースの「ホスト名」を選択し、「ホスト名の作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/c897d363-11fb-29d0-8a6c-19d888e58868.png)

名前：「仮想ホスト１」
ホスト名：アクセスに使用するホスト名を入力
し、「作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/f6515737-1a38-b878-102d-d93006838de8.png)

名前：「仮想ホスト２」
ホスト名：アクセスに使用するホスト名を入力
し、「作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/5b86b6fa-3e24-02f8-28b3-7a32500bb133.png)


# リスナーの作成
OCI Webコンソールナビゲーション メニューでロードバランサの詳細を開きます。
リソースの「リスナー」を選択し、「リスナーの作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/a9d13b3a-eb6d-5f78-8ae3-c1419e98d3b7.png)

名前：「listener01」
プロトコル、ポートを選択
ホスト名：「仮想ホスト１」
バックエンド・セット：「BS01」
を選択し、「リスナーの作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/4041ec27-d070-d5f1-fa7c-868cc1dfab0d.png)

名前：「listener02」
プロトコル、ポートを選択
ホスト名：「仮想ホスト２」
バックエンド・セット：「BS02」
を選択し、「リスナーの作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/758695ec-62d0-7649-e425-105a66c465b0.png)

# アクセスの確認
作成したホスト名でロードバランサのIPアドレスが返るようにDNSを構成します。
指定したホスト名にアクセスし、ホスト名ごとに別のページができることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/ad80e7e7-ceda-d28e-14d2-a0136e063aed.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/d713fcfc-b97c-2445-c16e-b6b3723fe715.png)

# おわりに

仮想ホスト名を使うことで１つのロードバランサを複数のアプリケーションで共用することが簡単にできました。

# 参考情報

- [ドキュメント](https://docs.oracle.com/ja-jp/iaas/Content/Balance/Tasks/hostname_management.htm#HostnameManagement)
- [Flexible Load Balancingの機能](https://www.oracle.com/jp/cloud/networking/load-balancing/features/)