OCI NLB経由でプライベートサブネット内の Oracle DB (Base DB/ADB) に接続する方法

Database

初めに

この記事の位置付けは、次のシリーズ記事の1つです。

利用方法タイトルOracle DBへADBへ
OCI BastionOCI Bastionサービスでプライベートサブネット内のOracle DBに接続する方法
OCI BastionOCI Bastion経由でプライベート・サブネット内のAutonomous DBに接続
OCI DB ToolsOCI データベース・ツールでオラクルDBへの接続方法
OCI Cloud ShellOCI Cloud Shell からプライベート・サブネット内のインスタンスに接続する
OCI Cloud ShellOCI Cloud Shell上のSQL PlusからADBに接続する

クラウド上のDBインスタンスが、一般的にはプライベート・サブネットに配置されます。このDBインスタンス(Oracle Base DB、或いは Autonomous AI DB )に接続するには、On-Pのクラウド管理者は踏み台サーバを経由したり、OCI BastionやOCIデータベースツールなどのサービスを利用したりする多くの方法があります。踏み台サーバを構築せず、インターネットから接続したい場合は、パブリック・サブネット内のネットワーク・ロード・バランサ(NLB)を経由することも選択肢の一つです。

Connect Oracle DB via NLB

NLBを作成した後、接続先のインスタンスをパブリック NLB のバックエンドとして追加し、関連するリスナー・ポート (1521 か 1522) を開くと、NLB を介してプライベート・サブネット内のインスタンスに接続できます。

メリット
✅ 踏み台サーバを立てるのは不要(コストを節約)。
✅ 設定方法は簡単で、管理者の一時作業に向く(数分間で設定OK)。
✅ レイヤー4通信であり、可用性が高くて、レイテンシが低い。
✅ OCI Bastionと比べて、セッションタイムアウト(最大3時間)の心配がない。
✅ バックエンドをオフラインに切り替えると、接続の一時停止ができる。
✅ NLB自体は"Always Free"でカバーできるので、無料で使える。

なお、一つ NLB に複数のバックエンド・セットを追加できます。例えば、Oracle Base DB 用に 1 つ、Autonomous DB 用に 1 つ、各バックエンド・セットは独自のリスナー・ポートを使用します。それで共通のNLBを経由し、それぞれのポートでターゲットに接続できます。

NLB自体は停止できませんが、バックエンドをオフラインにすることは可能です。使用しないときにオフラインに切り替えることで、踏み台サーバーを一時停止するのと同じような効果が得られます。

1. 事前準備

1-1. 関連する OCI リソースの作成

リソース項目コメント
VCNCIDR10.0.0.0/16
Public SubnetCIDR10.0.0.0/24NLB
Private SubnetCIDR10.0.1.0/24Target DB
Internet Gatewayルート表に追加
Security List
(Public Subnet)
Ingressソース側のIP, TCP 1521,1522接続元の IP アドレスを指定
Egress0.0.0.0/0, All Protocols
Security List
(Private Subnet)
Ingress10.0.0.0/24, TCP 1521,1522NLBからのアクセスを許可
Egress0.0.0.0/0, All Protocols
Route Table
(Public Subnet)
Ruleターゲット: Internet Gateway
宛先: 0.0.0.0/0
Oracle Base DBListener1521Private IP: 10.0.1.185
Autonomous DBListener1522Private IP: 10.0.1.224

1-2. SQL Developer の準備

この例では、GUI付きの SQL Developer を使います。ダウンロードと設定方法の詳細は、
SQL Developerで様々なDBに接続する方法をご参考ください。SQL Plusの愛用者は、クライアント側にSQL Plusを用意し、このステップを飛ばしてください。

1-3. ADB Wallet のダウンロード

Autonomous DBに接続するのに、デフォルトはWalletを使います。OCIコンソールよりWalletファイル(zip)をダウンロードして(詳細を省略)、クライアント側に保存します(解凍不要)。ダウンロード方法について、[こちら]()のドキュメントをご参照ください。

注意
プライベート サブネットの Autonomous DB に接続する時、ウォレット・ファイルを使用するかどうかを選択できます。 ウォレットを使用したくない場合は、(OCI コンソールから) mTLS 認証を無効にしておいてください(通常のユーザ・パスワード認証となる)。

2. NLBの作成

ネットワーキング → ロード・バランサ → ロード・バランサの作成
Create Load Balancer

タイプの選択
レイヤー4の"ネットワーク・ロード・バランサ"を選択し、進んでください。
Select Load Balancer Type

詳細情報の追加
NLBの名前:適当な名前を入力
可視性タイプ:パブリック (デフォルト)
パブリックIPの割当て:エフェメラル IPv4 (デフォルト)
Add detailes

VCNとパブリック・サブネットを指定し、次へをクリックします。
Choose Networking

リスナーの構成
リスナー名前:適当な名前を入力
トラフィックのタイプ:TCP
イングレス・トラフィック・ポート:デフォルトは、「任意のポートを使用」となっているが、この例では、Oracle DB リスナーのポート(1521)を指定する。
Configure listener

バックエンドの選択
ここは重要でご注意ください。

  • "Add backends (バックエンドの追加)":NLBを新規作成する際、バックエンドの選択肢はComputeインスタンスのみです。DBインスタンスをバックエンドに使用したい場合は、NLBを作成した後にバックエンドの編集が必要です。そのため、ここで一旦バックエンド・セット名を入力するだけでOKです。Choose backends
  • "Preserve source IP (ソースIPの保持)":デフォルトはチェックしているので、そのままでOKです。ただ、IPアドレスでバックエンドを追加すると、「ソースIPの保持」がOFFになりますので、ご注意ください。

ヘルス・チェック・ポリシーの部分で、TCPプロトコルを指定し、次へをクリックします(ポート1521は、オプションです)。
Specify health check policy

確認および作成
情報を確認した後、作成ボタンをクリックし、作成を開始します。
Review and create

作成後
ロード・バランサの状態は、"ACTIVE"になったら、ヘルス・チェックは「OK」であることを確認してください。次のステップではNLBのパブリックIPを使用しますので、メモしておいてください。
NLB status is active

3. Oracle Base DB に接続する

3-1. Oracle Base DB 用バックエンドの追加

ネットワーキング → ロード・バランサ → ロード・バランサ詳細 → バックエンド・セット (BackendSet01)

「バックエンドの追加」をクリックします。
Add backends

次のように情報を入力し、追加ボタンをクリックします。
タイプ:IPアドレスを指定
IPアドレス:DBインスタンスのプライベートIP
ポート:1521
Enter IP address of backend
NLBの更新には約 1 分かかります。更新後の状態は、次のようです。
Check backend health status

3-2. SQL Developerで Oracle Base DB に接続

  • 接続を新規作成
    • Database Type: デフォルト(Oracle)を指定
    • Hostname: NLBのパブリックIPを入力。
    • Port: 1521 (デフォルト)
    • SID、Service Name: 片方を入力(PDBへ接続したい場合、PDBのサービス名を入力)。
    • Save Password: チェックしたら、次回接続の時、パスワードの入力が省略できます。
    • テスト」ボタンを押し、接続をテストします。接続成功を確認したら、「接続」ボタンを押し、接続を立てます。Connect to Oracle Base DB with SQL developer
    • サービス名の確認方法は、以下の記事をご参考ください。
      Oracle Base Database のサービス名を取得する方法
  • 接続後Connection is successful

4. Autonomous DB に接続する

4-1. Autonomous DB 用バックエンドの追加

1) バックエンド・セットの作成

ネットワーキング → ロード・バランサ → ロード・バランサ詳細 → バックエンド・セット
Create Backend Set

バックエンド・セット名を適当に入力し、ヘルス・チェック・ポリシーの部分に、TCPプロトコルを指定し、作成ボタンをクリックしします。(ポート1522は、オプションです)。
Enter backend set name and specify health check policy

2) バックエンドの追加

作成されたバックエンド・セット(BackendSet02)をクリックし、詳細画面に入ります。
Backend set is added
「バックエンドの追加」をクリックします。
Add backend
次のように、情報を入力し、追加ボタンをクリックします。
タイプ:IPアドレスに指定
IPアドレス:Autonomous DB のプライベートIP
ポート:1522
Enter IP address and port number

追加後、次のように確認できます。
Check backend health status

3) リスナーの追加

Networking → Load Balancers → Load Balancer Details → Listeners -> Create Listener
Create listener
リスナーの名前:適当な名前を入力
プロトコル:TCP
イングレス・トラフィック・ポート:1522を指定
バックエンド・セット:追加したBackendSet02を指定
Enter listener details
追加後、次のように確認できます。
Check created listener

4-2. ホストファイルの編集

WalletファイルでADBに接続する場合、Walletに記載しているホスト名は、「プライベート・エンドポイントURL」で、VCN外部から識別できません。そのURLを識別するため、ローカルのホストファイルに、次のように一行を追加します。

ホストファイル
Windows OS: C:\Windows\System32\drivers\etc\hosts
Linux OS: /etc/hosts

追加内容
<NLB_Public_IP> <ADB_Private_Endpoint_URL>

例:xxx.xxx.42.221 xxxxxxxx.adb.ap-tokyo-1.oraclecloud.com

追加後、OSの再起動は不要です。

以下のADBの詳細情報画面から、プライベート・エンドポイントを確認できます。
Check private endpoint URL

4-3. SQL Developerで Autonomous DB に接続

  • 接続を新規作成
    • Database Type: デフォルトのOracleを指定
    • Connection Type: Cloud Walletを指定
    • Configuration File: Walletファイルを指定。事前にOCIコンソールよりダウンロードしてください。ダウンロード後、解凍不要でZIPファイルのままでOKです。
    • Service: 必要に応じて、XXXX_high, XXXX_medium, XXXX_lowの選択肢から指定Connect to ADB with SQL developer
  • 接続後Connection is successful

5. 接続の一時停止

NLB自体と関連設定を保留し、NLBからの接続を一時停止したい場合、バックエンドをオフラインにすればOKです。必要に応じて、再度オンラインに切り替えればいいです。

バックエンドを選択し、"Edit"をクリックします。
Edit backend

"Offline"を"True"にして、「変更の保存」をクリックします(完了まで約1分間がかかる)。
Set backend to offline

変更後は以下のようです。ヘルスチェックはOKですが、クライアントからの接続ができなくなりました。
Check backend offline status

サマリー

ここまで、一つのNLBを経由し、Oracle Base DB と Autonomous DB の2つインスタンスに接続できました。設定方法は簡単で、管理者の一時作業に向きます。セキュリティ・リスト(or NSG)で、ソース側のIPアドレスを絞り込み、NLBのリスナー・ポート(1521, 1522)を限定するのを推奨します。

設定ポイント

  • Oracle DB と ADB 共通(2点):
  • NLB作成後、DBインスタンスをバックエンドに追加可能(プライベートIPを指定)。
  • IPアドレスでバックエンドを追加する時、「ソースIPの保持」が利用できない。
  • Autonomous DB 特有(1点):
  • Autonomous DB へ接続する前、ローカルのホストファイルを編集し、NLBのパブリックIPとプライベート・エンドポイントURLの対応関係を紐付ける。

追記

追記日: 2023/07/12

上記の検証例では、NLBを作成した際に「ソースIPの保持」を選択していました。現在の仕様に基づき、バックエンドを追加する際には、「ソースIPの保持」のチェックを外さないと、IPアドレスを指定することができません。したがって、NLBを作成した際に「ソースIPの保持」のチェックを外します。
Check out Preserve Source IP

以上

タイトルとURLをコピーしました