ネットワーク・ロード・バランサ (NLB) の経由でプライベート・サブネット内の Oracle Analytics Cloud に接続

本ブログは、[オラクル・クラウドの個人ブログ一覧](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)の1つです。

__初めに__
プライベート・サブネット内のOracle Analytics Cloud (OAC)に接続する方法はいくつかありますが、その中でもネットワーク・ロード・バランサ（NLB）を経由する方法が一つの選択肢です。今回は、NLBを使用した接続手順についてご紹介します。

__構築図__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/098b2de9-81d5-15b2-fb43-460f81154227.png)

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

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

__目次__  

- [1. 事前準備](#1-事前準備)  
  - [1-1. ネットワーク・リソースの作成](#1-1-ネットワークリソースの作成)
  - [1-2. OAC接続情報の確認](#1-2-oac接続情報の確認)
- [2. NLBの作成](#2-nlbの作成) 
- [3. バックエンドの追加](#3-バックエンドの追加)
- [4. ホストファイルの編集](#4-ホストファイルの編集)  
- [5. OACへの接続](#5-oacへの接続)
- [6. 接続の一時停止](#6-接続の一時停止)  

# 1. 事前準備
## 1-1. ネットワーク・リソースの作成
|タイプ|項目|値|用途|  
|:--|:--|:--|:--|  
|VCN|CIDR|10.0.0.0/16|  
|パブリック・サブネット|CIDR|10.0.0.0/24|NLBの格納先|  
|プライベート・サブネット|CIDR|10.0.1.0/24|OACの格納先|  
|インターネットGW|||パブリック・サブネット用|
|セキュリティリスト (<strong>パブリック</strong>・サブネット用)|Ingress|ソース：接続元のIP, TCP <font color=blue>443</font>(宛先ポート)||  
||Egress|宛先：10.0.1.0/24, TCP All||  
|セキュリティリスト (<strong>プライベート</strong>・サブネット用)|Ingress|ソース：10.0.0.0/24, TCP <font color=blue>443</font>(宛先ポート)|<strong>NLBからのアクセス</strong>を許可|  
||Egress|宛先：0.0.0.0/0, TCP All||  
|ルート表 (<strong>パブリック</strong>・サブネット用)|ルール|ターゲット: インターネットGW<br>宛先: 0.0.0.0/0|外部からの接続|

## 1-2. OAC接続情報の確認
OACインスタンスの詳細画面でアクセス情報をメモしてください。
<strong>URL</strong>：「インスタンスの詳細」に表示されている。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/29b700f0-6586-4fa6-89ce-b4872c8461a8.png", width="600">

<strong>ホスト名</strong>と<strong>IPアドレス</strong>：「追加詳細」に表示されている
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/30c0f146-0e69-4db4-a4f6-44b215d86dbf.png", width="500">

# 2. NLBの作成
ネットワーキング → ロード・バランサ → ネットワーク・ロード・バランサ

「ネットワーク・ロード・バランサの作成」をクリックし、作成を開始します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/5cb6c854-ec9e-4dde-134a-7a1e1b750af0.png)

__詳細情報の追加__  
NLBの名前：適当な名前を入力  
可視性タイプ：<font color=blue>パブリック</font> (デフォルト)  
パブリックIPの割当て：エフェメラル IPv4 (デフォルト)  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/8020edef-163f-7e0d-0cfd-536fe7db7b5c.png)
VCNとパブリック・サブネットを指定し、次をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/c201afe6-ece3-e22d-5510-22f21627a246.png)

__リスナーの構成__  
リスナー名前：適当な名前を入力  
トラフィックのタイプ：<font color=blue>TCP</font>  
イングレス・トラフィック・ポート：デフォルトは、「任意のポートを使用」となっているが、ポート指定を選択し、<font color=blue>443</font>を入力する。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/961450c1-912a-cb13-3d22-b8ecd0b1e2da.png)

__バックエンドの選択__  

:::note
- バックエンドの追加：NLBを新規作成する際、バックエンドに選択できるのは<font color=blue>Computeインスタンス</font>のみです。OACインスタンスをバックエンドとして使用する場合は、<strong>NLB作成後</strong>にバックエンドの追加が必要となります。そのため、ここではバックエンドの追加は行いません。
:::

- ソースIPの保持：チェックを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/cf8acdff-f336-5e18-7449-7f57ae1efecc.png)
- ヘルス・チェック・ポリシーの指定：プロトコル <font color=blue>TCP</font>、ポート<font color=blue>443</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/07a0026b-4378-0ebf-7ae5-8f38cc9f08ce.png)

__確認および作成__  
情報を確認した後、作成ボタンをクリックし、作成を開始します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/8b49fa65-5bf4-78c8-c2f4-bb6df06c539c.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/18b3fd6a-64f4-3347-b73b-6f15d7dda517.png)

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

「バックエンドの追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/6c45fa84-7902-a31b-9f6e-1558eb6bb279.png)

情報を入力し、追加ボタンをクリックします。
タイプ：IPアドレスを指定
IPアドレス：OACインスタンスのプライベートIP
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/1a9d278b-7761-424b-a808-c387afb23740.png", width="550">  

NLBの更新には約 1 分かかります。更新後の状態は、次のようです。 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/7bd9a1d0-b2c1-c16f-d570-ebdc8418fc7b.png", width="550">  


# 4. ホストファイルの編集
接続端末から、OACのURLを識別するために、ローカルのホストファイルを編集する必要があります。

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

__追加内容__
`<NLB_Public_IP> <OAC_host_name>`
例：`xxx.xxx.52.240 oacprivate-<中略>-nt.analytics.ocp.oraclecloud.com`

追加後、OSの再起動は<strong>不要</strong>です。

# 5. OACへの接続
WEBブラウザを開き、[STEP 1-2](#1-2-oac接続情報の確認)で取得したURLを入力します。
例：`https://oacprivate-<中略>-nt.analytics.ocp.oraclecloud.com/ui/`

ログイン画面が表示されたら、ユーザーとパスワードを入力してログインします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/d875bb01-ac43-573a-5202-514eafe6e0c5.png", width="550">

接続後：
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/d04e4442-5d18-04f6-f893-201e3b75d595.png", width="600">

# 6. 接続の一時停止
NLBからの接続を一時的に停止したい場合、バックエンドを<strong>オフライン</strong>にするだけで対応可能です。必要に応じて、再度オンラインに切り替えることもできます。

バックエンドを選択し、"編集"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/34db2167-e4cd-0de0-1acb-45869a8b4065.png)

"オフライン"を"True"にして、「変更の保存」をクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/914b466e-a049-98a1-0090-c1106a7b4364.png", width="350">

変更後は以下の通りです。ヘルスチェックは「OK」ですが、クライアントからの接続ができなくなりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/76726cc3-6438-e94c-9d0f-9d5e7187f552.png)

以上です。  

----  
__関連記事__
[Oracle Analytics Cloud についてのFAQ](https://qiita.com/letian/items/eaca95c40a24c9d2027a)
[OCI Bastion経由でプライベート・サブネット内のOracle Analytics Cloudに接続](https://qiita.com/letian/items/5370c996e91badd5b240)