以前に「OCIでプライベート・サブネットに存在するデータベースに、ロード・バランサを使ってインターネットから接続してみた」という記事を書きましたが、同じことがネットワーク・ロード・バランサでもできるはずなので試してみました。
プライベート・サブネットに接続可能なデータベースが存在している前提で、以下に作成手順を記載していきます。
1.ロード・バランサの作成
まずは、ロード・バランサを作成します。
OCIコンソールの左上三本線メニューより「ネットワーキング>ロード・バランサ」を選択します。
[ロード・バランサの作成]ボタンを押し、作成ウィザードを起動します。
ロード・バランサ・タイプの選択画面では、「ネットワーク・ロード・バランサ」を選択し、[ロード・バランサの作成]ボタンを押します。
「詳細の追加」画面では、ロード・バランサ名、可視性タイプ、パブリックIPアドレスの割当てを設定します。
今回はインターネットからの接続に使用するため、可視性タイプを「パブリック」に設定する必要があります。
下にスクロールして、ロード・バランサの所属するネットワークを設定します。
[次]ボタンを押して、「リスナーの構成」画面に進みます。
任意のリスナー名を設定し、「リスナーで処理するトラフィックのタイプ」は「TCP」を選択します。
「イングレス・トラフィック・ポート」には、データベースへの接続ポートを設定します。
例えば、DBCSへの接続ポートであれば、デフォルトそのままの場合は「1521」を設定します。
(Autonomous Databaseであれば「1522(場合によっては「1521」)」、MySQL Databaseの場合は「3306」です)
[次]ボタンを押して、「バックエンドの選択」画面に進みます。
任意のバックエンド・サーバー名を設定します。
バックエンドの追加はここでは行わないでおきます。(あとで設定します)
「ソースIPの保持」チェックボックスはオフにしておきます。
下にスクロールして、ヘルスチェック・ポリシーを設定します。
プロトコルは「TCP」を選択し、ポートは前画面で設定したデータベースへの接続ポートを設定します。
[次]ボタンを押して、設定内容を確認し、問題なければ[ネットワーク・ロード・バランサの作成]ボタンを押します。
しばらくすると、ネットワーク・ロード・バランサが作成され、Active状態となります。
あとで利用するので、画面上の「IPアドレス(パブリック)」を控えておきます。
2.バックエンド・サーバーの追加
バックエンド・セットにデータベース・サーバーを追加します。
ロード・バランサ詳細画面の左下にあるリソース・メニューから「バックエンド・セット」を選択し、先ほど作成したバックエンド・セットを選択します。
バックエンド・セットの詳細画面の左下にあるリソース・メニューから「バックエンド」を選択し、「バックエンドの追加」ボタンを押します。
バックエンドの追加画面で、バックエンド・タイプとして「IPアドレス」を選択し、データベースのプライベートIPとポートを設定します。(ポートにはデータベースへの接続ポートを設定します)
[バックエンドの追加]ボタンを押すと、「作業リクエスト送信済」のダイアログが表示され、しばらく待つとステータスが「送信済み」から「成功」に変わります。
3.セキュリティ・ルールの追加
最後に、ロード・バランサへの接続を許可するよう、セキュリティ・リストにルールを追加します。
左上三本線メニューより「ネットワーキング>仮想クラウド・ネットワーク」を選択します。
仮想クラウド・ネットワーク(以下、VCN)が一覧表示されるので、ロード・バランサを作成したVCNを選択します。
VCNの詳細画面が表示され、画面下部にサブネットの一覧が表示されます。
一覧より、ロード・バランサを作成したパブリック・サブネットを選択します。
サブネットの詳細画面が表示され、画面下部にセキュリティ・リストの一覧が表示されます。
一覧より、データベース接続ポートの設定を行うセキュリティ・リストを選択します。(デフォルトでは「Default Security List for VCN名」になっています)
ようやく、設定画面にたどり着きました....
新しいルールを追加するため、[イングレス・ルールの追加]ボタンを押します。
イングレス・ルールの追加画面で、接続元のCIDRと接続ポートを指定して、[イングレス・ルールの追加]ボタンを押します。
今回は検証のため、接続元のCIDRを「0.0.0.0/0」としていますが、本来は実環境に合わせて、接続元のCIDRに絞って設定することをおすすめします。
4.接続テスト
手順1.ロード・バランサの作成の最後に控えておいた、ロード・バランサのIPアドレス(パブリック)を使って、インターネットからデータベースに接続してみます。
Oracle Databaseであれば、tnsnames.oraのHOSTをロード・バランサのIPアドレスに置き換えます。
SQL*Plusで接続してみると、インターネットからプライベート・サブネットのデータベースに接続できることが確認できます。
C:\OracleClient>sqlplus orauser/xxxxxxxx@privatedb
SQL*Plus: Release 18.0.0.0.0 - Production on 火 2月 1 21:21:47 2022
Version 18.5.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.5.0.0.0
に接続されました。
SQL>
注意点
ネットワーク・ロード・バランサには、TCPフローの場合は6分の Connections Idle Timeout が設定されています。(マニュアルの記載はこちらになります。)
6分間操作がないと、ORA-03113となりますので、注意が必要です。
また、回避方法として、こちらの記事もご参照ください。