はじめに
プライベート・エンドポイントで構成されているAutonomous DatabaseのDatabase Actionsにインターネット側からアクセスしたいというご要望があったので、ロード・バランサを使用して実現する方法を検証してみました。
1. ネットワークの構成
・VCNの作成
名前:ADB-OAC-VCN
IPv4 CIDR blocks:10.0.0.0/16
VCN「ADB-OAC-VCN」が作成されました。
・インターネット・ゲートウェイの作成
VCNの詳細画面の左側にあるリソース欄の「インターネット・ゲートウェイ」をクリックします。
「インターネット・ゲートウェイの作成」をクリックします。
名前に「InternetGateway1」と入力し、「インターネット・ゲートウェイの作成」をクリックします。
インターネット・ゲートウェイ「InternetGateway1」が作成されました。
・ルート表の作成
VCNの詳細画面の左側にあるリソース欄の「ルート表」をクリックします。
まず始めにロード・バランサを配置するサブネットに適用するルート表「RT_Public_Subnet_LB_ADB」を作成します。
「ルート表の作成」をクリックします。
項目 | 値 |
---|---|
名前 | RT_Public_Subnet_LB_ADB |
ルート・ルール:
項目 | 値 |
---|---|
ターゲット・タイプ | インターネット・ゲートウェイ |
CIDRブロック | 0.0.0.0/0 |
ターゲット・インターネット・ゲートウェイ | InternetGateway1 |
ルート表「RT_Public_Subnet_LB_ADB」が作成されました。
次にAutonomous Databaseを配置するサブネットに適用するルート表「RT_Public_Subnet_ADB」を作成します。
「ルート表の作成」をクリックします。
ここでは名前のみ入力して、「作成」をクリックします。
項目 | 値 |
---|---|
名前 | RT_Private_Subnet_ADB |
ルート・ルール | なし |
ルート表「RT_Public_Subnet_ADB」が作成されました。
・セキュリティ・リストの作成
VCNの詳細画面の左側にあるリソース欄の「セキュリティ・リスト」をクリックします。
まず始めにロード・バランサを配置するサブネットに適用するセキュリティ・リスト「SL_Public_Subnet_LB_ADB」を作成します。
「セキュリティ・リストの作成」をクリックします。
項目 | 値 |
---|---|
名前 | SL_Public_Subnet_LB_ADB |
項目 | 値 |
---|---|
ステートレス | チェックをオフ |
ソース・タイプ | CIDR |
ソースCIDR | 0.0.0.0/0 |
IPプロトコル | TCP |
ソース・ポート範囲 | 空白のまま |
宛先ポート範囲 | 443 |
項目 | 値 |
---|---|
ステートレス | チェックをオフ |
宛先タイプ | CIDR |
宛先CIDR | 0.0.0.0/0 |
IPプロトコル | すべてのプロトコル |
入力が完了したら、「セキュリティ・リストの作成」をクリックします。
セキュリティ・リスト「SL_Public_Subnet_LB_ADB」が作成されました。
次にAutonomous Databaseを配置するサブネットに適用するセキュリティ・リスト「SL_Private_Subnet_ADB」を作成します。
「セキュリティ・リストの作成」をクリックします。
項目 | 値 |
---|---|
名前 | SL_Private_Subnet_ADB |
項目 | 値 |
---|---|
ステートレス | チェックをオフ |
ソース・タイプ | CIDR |
ソースCIDR | 10.0.10.0/24 |
IPプロトコル | TCP |
ソース・ポート範囲 | 空白のまま |
宛先ポート範囲 | 443 |
項目 | 値 |
---|---|
ステートレス | チェックをオフ |
宛先タイプ | CIDR |
宛先 | 0.0.0.0/0 |
IPプロトコル | すべてのプロトコル |
入力が完了したら、「セキュリティ・リストの作成」をクリックします。
セキュリティ・リスト「SL_Public_Subnet_ADB」が作成されました。
・サブネットの作成
VCNの詳細画面の左側にあるリソース欄の「サブネット」をクリックします。
まず始めにロード・バランサを配置するサブネット「Public_Subnet_LB_ADB」を作成します。
「サブネットの作成」をクリックします。
項目 | 値 |
---|---|
名前 | Public_Subnet_LB_ADB |
サブネット・タイプ | リージョナル |
IPv4 CIDR Block | 10.0.10.0/24 |
項目 | 値 |
---|---|
ルート表 | RT_Public_Subnet_LB_ADB |
サブネット・アクセス | パブリック・サブネット |
このSUBNETでDNSホスト名を使用 | チェックをオン |
DHCPオプション | Default DHCP Options for ADB-OAC-VCN |
セキュリティ・リスト | RT_Public_Subnet_LB_ADB |
サブネット「Public_Subnet_LB_ADB」が作成されました。
次にAutonomous Databaseを配置するサブネット「Public_Subnet_ADB」を作成します。
「サブネットの作成」をクリックします。
項目 | 値 |
---|---|
名前 | Private_Subnet_ADB |
サブネット・タイプ | リージョナル |
IPv4 CIDR Block | 10.0.1.0/24 |
項目 | 値 |
---|---|
ルート表 | RT_Private_Subnet_ADB |
サブネット・アクセス | プライベート・サブネット |
このSUBNETでDNSホスト名を使用 | チェックをオン |
DHCPオプション | Default DHCP Options for ADB-OAC-VCN |
セキュリティ・リスト | RT_Private_Subnet_ADB |
サブネット「Public_Subnet_ADB」が作成されました。
以上で、ネットワークの準備が整いました。
2. Autonomous Databaseの作成
コンソールメニューから「Autonomous Database」に移動します。
「Autonomous Databaseの作成」をクリックします。
表示名:任意(ここではMyADB)
データベース名:任意(ここではmyadb)
お好みの構成を選択します。
adminユーザのパスワードを入力します。
「ネットワーク・アクセスの選択」セクションは以下のように入力します。
アクセス・タイプ:「プライベート・エンドポイント・アクセスのみ」
仮想クラウド・ネットワーク:ADB-OAC-VCN
サブネット:Private_Subnet_ADB
ホスト名:myadb
ネットワーク・セキュリティ・グループ:指定しない
全ての項目の入力が完了したら、「Autonomous Databaseの作成」をクリックします。
Autonomous Databaseのプロビジョニングが始まります。
数分待つと、作成したAutonomous Database「MyADB」が使用可能になります。
「MyADB」の詳細画面の「データベース・アクション」をクリックします。
プライベート・エンドポイントで構成されているAutonomous DatabaseはVCN内からのみアクセスが可能な旨が表示されます。
アクセスURLの「表示」をクリックしてURLを表示し、コピーしてメモしておきます。
「MyADB」の詳細画面の「ネットワーク」セクションにある「プライベート・エンドポイントIP」と「プライベート・エンドポイントURL」をコピーしてメモしておきます。
3. パブリックIPアドレスの予約
ロード・バランサにアタッチするためのパブリックIPアドレスを予約します。
これは必須ではありませんが、ロード・バランサに予約済みパブリックIPをアタッチして使用することで、ロード・バランサを一度削除して再作成した場合でも、同じパブリックIPアドレスを使用してアクセスすることが可能になります。
コンソールメニューから「予約済パブリックIP」に移動します。
「パブリックIPアドレスの予約」をクリックします。
予約済みパブリックIPアドレス名:PublicIP-LB-ADB
IPアドレスのソース:Oracle
予約済みパブリックIP「PublicIP-LB-ADB」が作成されました。
4. ロード・バランサの作成
コンソールメニューから「ロード・バランサ」に移動します。
「ロードバランサの作成」をクリックします。
「ロード・バランサの作成」をクリックします。
ロード・バランサ名:LB_for_ADB
可視性タイプ:パブリック
パブリックIPアドレスの割当て:予約済IPアドレス
既存の予約済みIPアドレスの選択:チェックをオン
予約済IPアドレス:PublicIP-LB-ADB
お好みの帯域幅を入力します。
仮想クラウド・ネットワーク:ADB-OAC-VCN
サブネット:Public_Subnet_LB_ADB
入力が完了したら、「次」をクリックします。
ロード・バランシング・ポリシーの指定:重み付けラウンド・ロビン
ここではバックエンドは追加しません。(IPアドレス指定によるバックエンドの追加ができないため)
ヘルス・チェック・ポリシー
プロトコル:TCP
ポート:443
その他の項目はデフォルトのまま
「拡張オプションの表示」をクリックします。
「バックエンド・セット名」タブ
バックエンド・セット名:BS_LB_for_ADB
「セキュリティ・リスト」タブ
「ロード・バランサの作成後にセキュリティ・リスト・ルールを手動で構成します」を選択
「次」をクリックします。
リスナー名:listener_LB_for_ADB
トラフィックのタイプ:TCP
モニターするポート:443
必要に応じて、ロギングの設定を行います。
入力が完了したら、「送信」をクリックして、ロード・バランサを作成します。
ロード・バランサ「LB_for_ADB」のプロビジョニングが始まります。
少し待つと、ロード・バランサ「LB_for_ADB」がアクティブになります。
バックエンドを登録していないため、警告が出ていますが問題ありません。
ロード・バランサのの詳細画面の左側にあるリソース欄の「バックエンド・セット」をクリックします。
バックエンドセット名「BS_LB_for_ADB」をクリックします。
「バックエンドの追加」をクリックします。
IPアドレス:Autonomous Databaseの詳細画面で確認したプライベート・エンドポイントIP
ポート:443
重み:1
入力が完了したら、「追加」をクリックします。
「閉じる」をクリックします。
バックエンドにAutonomous Databaseが追加され、少し待つとバックエンドのヘルスが「OK」になります。
バックエンド・セットの全体的なヘルスも「OK」になりました。
画面上部の「ロード・バランサ詳細」のリンクをクリックして、ロード・バランサの詳細画面に移動します。
ロード・バランサの全体的なヘルスも「OK」になっていることが確認できました。
5. 動作確認
ブラウザのアドレス欄に以下のURLを入力して、Database Actionsにアクセスしてみます。
https://LB_for_ADBのIPアドレス/ords/sql-developer
おっと、セキュリティリスクありと警告が表示されました。
詳細情報を確認すると、IPアドレスで接続しているために、サーバの証明書内の情報とホスト名が一致しないために警告が表示されているようです。
ここで「危険性を承知で続行」をクリックしてもDatabase Actionsにアクセスできますが、今回はクライアントのhostsファイルにエントリーを追加して対処します。
私はクライアントとしてMacを使用しているため、/etc/hostsに以下のような行を追加します。
ロードバランサのパブリックIP Autonomous Databaseのプライベート・エンドポイントURL
今回の例では、以下のようになります。
12x.xxx.xxx.x90 myadb.adb.ca-toronto-1.oraclecloud.com
では、hostsに追加したホスト名を使用して、Datababase Actionsにアクセスしてみます。
Database Actionsのサインイン画面が表示されました。
ユーザ名に「admin」を入力して「次」をクリックします。
パスワードにadminユーザのパスワードを入力して「サインイン」をクリックします。
Database Actionsにアクセスできました。
まとめ
ロード・バランサを使用して、プライベート・エンドポイントで構成されているAutonomous DatabaseのDatabase Actionsにアクセスすることができました。
めでたし、めでたし。