OCI OpenSearchダッシュボードにロードバランサ経由でアクセスする

## はじめに
OpenSearchサービスを利用する際に使用するダッシュボードやAPIエンドポイントにLB（ロードバランサ）経由でアクセスしてみます。
通常？は踏み台サーバ+sshを使用しますが、ロードバランサ経由でアクセス設定することで、例えば社内ユーザに広くアクセス許可を与えることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/62404b75-965c-370b-39fc-ce566c7edeec.png)


必要なものはこちら：
* OpenSearchクラスタ
* FLB(フレキシブルロードバランサ)
* VCN
* 任意のドメイン　※なくてもできます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/a3d101bd-8fc6-a805-57b9-6e6fc6ef94ed.png)



## OpenSearchクラスタの作成
まずはOCI OpenSearchクラスタを作成します。
下記をポリシーを設定します。

https://docs.oracle.com/ja-jp/iaas/Content/search-opensearch/Concepts/ocisearchpermissions.htm

クラスタの作成はVCN、ポリシーができていれば特に手順に迷うことはないかと思います。
OCI OpenSearchクラスタは、
* データノード
* マスターノード
* ダッシュボードノード

から構成されますが、検証のためそれぞれ1ノード、1OCPUを選択してミニマム構成としておきます。
また、ネットワーキング構成においては、今回は作成済みVCNのプライベートサブネットを選択します（パブリックサブネットでも可能です）

## FLB作成


パブリックIPを付与してFLBを作成します。
リスナーとバックエンドセットを作成しますが、バックエンドはOpenSearchクラスのプライベートIPを指定するので一旦空としてロードバランサを作ります。

LBのバックエンドに追加するプライベートIPとして、OpenSearchクラスタの画面を開き、
ダッシュボードのIP、APIエンドポイントのIPをメモしておきます（赤線部分）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/c4955438-bf2a-afa9-91a9-67c523353f3f.png)

### バックエンドセット作成

まず最初にバックエンドセットを作ります。
ダッシュボードとapiの2つ作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/a92d1695-4707-4fe1-ad51-663aa404e449.png)

ダッシュボードの方は、先ほどのOpenSearchクラスタにあるダッシュボードプライベートIPを指定します。
またヘルスチェック設定、OpenSearchクラスタがhttpsアクセス基本のためSSL証明書を指定します。（リスナだけでなくバックエンドでも指定します）
※ドメイン、SSL証明書は事前に取得し、DNS設定、および証明書として登録しておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/eb7ae940-6680-8b26-5f99-89f42e5b7779.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/036bae65-5c4a-d736-b298-58b46c7a790a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/c37f2f09-c0a8-fbab-4b94-5203cab1d429.png)




apiの方も同様に設定します。
apiはユーザ認証情報を含めないと401のため、ヘルスチェックとしては簡易的にそのコードを指定しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/fd6fc91f-d3cf-a34a-7704-cbdf0668e3b2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/8a04d482-8dec-2643-d435-c18ff133e27f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/752bcc6b-5ab8-ec75-a400-3e221ad6f1d6.png)

### リスナの作成

続いてリスナをそれぞれ作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/842db35e-ff6b-68d3-6bd3-093e64aec389.png)


ダッシュボード、apiそれぞれのバックエンドを指定して作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/9977c0a9-5065-3178-7ec1-1fd77cb94df2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/4f0bebbb-cbd8-db62-9e44-ad31c1775376.png)

以上でロードバランサの設定が完了です。


## VCNのセキュリティリスト設定

ロードバランサのあるパブリックサブネットのセキュリティリストです。
ポート5601, 9200をIPを適宜ソース元IPを限定して疎通させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/3b939863-d3c8-540c-5f77-e4087af6954c.png)


続いてOpenSearchクラスタのあるプライベートサブネットのセキュリティリストです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/506cf7b3-8541-86fc-09f5-14451a38cd69.png)



## 動作確認
ダッシュボードに設定したドメインでアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846649/62404b75-965c-370b-39fc-ce566c7edeec.png)


apiエンドポイントも確認します。
```shell:apiエンドポイント呼び出し
curl https://mydomain.xyz:9200 -u user:pwd
```

```json:確認結果
{
  "name" : "opensearch-master-0",
  "cluster_name" : "amaaaaaassl65iqa7fzxnh53y4vf6lqxhzxt7h2zpbtytvm4ulw6zkird3dq",
  "cluster_uuid" : "FZ6JMpI_TdCL57uiyZTNYw",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.11.0",
    "build_type" : "tar",
    "build_hash" : "unknown",
    "build_date" : "2024-01-09T20:29:23.162321021Z",
    "build_snapshot" : false,
    "lucene_version" : "9.7.0",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}
```

## おわりに
ロードバランサ経由でOpenSearchダッシュボード、およぼapiエンドポイントにアクセスする方法についてまとめました。
設定項目が少し多いですが、限定された複数ユーザにアクセス許可を与える場合等に便利ですので是非お試しください。