初めに
この記事の位置付けは、次のシリーズ記事の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)を経由することも選択肢の一つです。
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 リソースの作成
タイプ | 項目 | 値 | コメント |
---|---|---|---|
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 (デフォルト)
VCNとパブリック・サブネットを指定し、次へをクリックします。
リスナーの構成
リスナー名前:適当な名前を入力
トラフィックのタイプ:TCP
イングレス・トラフィック・ポート:デフォルトは、「任意のポートを使用」となっているが、この例では、Oracle DB リスナーのポート(1521)を指定する。
バックエンドの選択
ここは重要でご注意ください。
- "Add backends (バックエンドの追加)":NLBを新規作成する際、バックエンドの選択肢はComputeインスタンスのみです。DBインスタンスをバックエンドに使用したい場合は、NLBを作成した後にバックエンドの編集が必要です。そのため、ここで一旦バックエンド・セット名を入力するだけでOKです。
- "Preserve source IP (ソースIPの保持)":デフォルトはチェックしているので、そのままでOKです。ただ、IPアドレスでバックエンドを追加すると、「ソースIPの保持」がOFFになりますので、ご注意ください。
ヘルス・チェック・ポリシーの部分で、TCPプロトコルを指定し、次へをクリックします(ポート1521は、オプションです)。
確認および作成
情報を確認した後、作成ボタンをクリックし、作成を開始します。
作成後
ロード・バランサの状態は、"ACTIVE"になったら、ヘルス・チェックは「OK」であることを確認してください。次のステップではNLBのパブリックIPを使用しますので、メモしておいてください。
3. Oracle Base DB に接続する
3-1. Oracle Base DB 用バックエンドの追加
ネットワーキング -> ロード・バランサ -> ロード・バランサ詳細 -> バックエンド・セット (BackendSet01)
次のように情報を入力し、追加ボタンをクリックします。
タイプ:IPアドレスを指定
IPアドレス:DBインスタンスのプライベートIP
ポート:1521
NLBの更新には約 1 分かかります。更新後の状態は、次のようです。
3-2. SQL Developerで Oracle Base DB に接続
-
接続を新規作成
Database Type: デフォルト(Oracle)を指定
Hostname: NLBのパブリックIPを入力。
Port: 1521 (デフォルト)
SID、Service Name: 片方を入力(PDBへ接続したい場合、PDBのサービス名を入力)。
Save Password: チェックしたら、次回接続の時、パスワードの入力が省略できます。
「テスト」ボタンを押し、接続をテストします。接続成功を確認したら、「接続」ボタンを押し、接続を立てます。
サービス名の確認方法は、以下の記事をご参考ください。
Oracle Base DBのサービス名を取得する
4. Autonomous DB に接続する
4-1. Autonomous DB 用バックエンドの追加
1. バックエンド・セットの追加作成
ネットワーキング → ロード・バランサ → ロード・バランサ詳細 → バックエンド・セット
バックエンド・セット名を適当に入力し、ヘルス・チェック・ポリシーの部分に、TCPプロトコルを指定し、作成ボタンをクリックしします。(ポート1522は、オプションです)。
2. バックエンドの追加
作成されたバックエンド・セット(BackendSet02
)をクリックし、詳細画面に入ります。
「バックエンドの追加」をクリックします。
次のように、情報を入力し、追加ボタンをクリックします。
タイプ:IPアドレスに指定
IPアドレス:Autonomous DB のプライベートIP
ポート:1522
追加後、次のように確認できます。
3. リスナーの追加
Networking → Load Balancers → Load Balancer Details → Listeners -> Create Listener
リスナーの名前:適当な名前を入力
プロトコル: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の選択肢から指定
5. 接続の一時停止
NLB自体と関連設定を保留し、NLBからの接続を一時停止したい場合、バックエンドをオフラインにすればOKです。必要に応じて、再度オンラインに切り替えればいいです。
"Offline"を"True"にして、「変更の保存」をクリックします(完了まで約1分間がかかる)。
変更後は以下のようです。ヘルスチェックはOKですが、クライアントからの接続ができなくなりました。
サマリー
ここまで、一つの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の保持」のチェックを外します。
以上です。
関連記事
オラクル・クラウドの個人ブログ一覧
OCI ロードバランサとOCI NLBの比較
SQL Developerで様々なDBに接続する方法
ネットワーク・ロード・バランサ (NLB) の経由でプライベート・サブネット内の OCI VMに接続する