LoginSignup
2
0

ネットワーク・ロード・バランサ (NLB) の経由でプライベート・サブネット内の Oracle Base DB と Autonomous DB に接続する

Last updated at Posted at 2023-02-08

初めに

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

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

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

image.png

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

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

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

目次

1. 事前準備

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

タイプ 項目 コメント
VCN CIDR 10.0.0.0/16
パブリック・サブネット CIDR 10.0.0.0/24 NLB
プライベート・サブネット CIDR 10.0.1.0/24 ターゲットDB
インターネット・ゲートウェイ ルート表に追加
セキュリティ・リスト (パブリック・サブネット用) Ingress ソース側のIP, TCP 1521,1522 接続元の IP アドレスを指定する
Egress 0.0.0.0/0, 全てのプロトコル
セキュリティ・リスト (プライベート・サブネット用) Ingress 10.0.0.0/24, TCP 1521,1522 NLBからのアクセスを許可
Egress 0.0.0.0/0, 全てのプロトコル
ルート表 (パブリック・サブネット用) ルール ターゲット: インターネット・ゲートウェイ
宛先: 0.0.0.0/0
Oracle Base DB リスナー 1521 プライベート IP: 10.0.1.185
Autonomous DB リスナー 1522 プライベート IP: 10.0.1.224

1-2. SQL Developer の準備

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

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

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

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

2. NLBの作成

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

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

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

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

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

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

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

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

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

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

3. Oracle Base DB に接続する

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

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

「バックエンドの追加」をクリックします。
image.png

次のように情報を入力し、追加ボタンをクリックします。
タイプ:IPアドレスを指定
IPアドレス:DBインスタンスのプライベートIP
ポート:1521

NLBの更新には約 1 分かかります。更新後の状態は、次のようです。
image.png

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

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

  • 接続後
    image.png

4. Autonomous DB に接続する

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

1. バックエンド・セットの追加作成
ネットワーキング → ロード・バランサ → ロード・バランサ詳細 → バックエンド・セット
image.png

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

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

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

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

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の詳細情報画面から、プライベート・エンドポイントを確認できます。

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の選択肢から指定
    image.png

  • 接続後
    image.png

5. 接続の一時停止

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

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

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

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

サマリー

ここまで、一つの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の保持」のチェックを外します。
image.png

以上です。


関連記事
オラクル・クラウドの個人シリーズ・ブログ
SQL Developerで様々なDBに接続する方法
ネットワーク・ロード・バランサ (NLB) の経由でプライベート・サブネット内の OCI VMに接続する

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0