0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OCI】OpenSearchのAPIからLB経由でデータを登録してみる

Posted at

はじめに

今回はOracle Cloud Infrastructure(OCI)のOpenSearchのAPIを使って
LB経由で外部からデータを登録してみたいと思います。

その前にそもそもOpenSearchとはなんなのか?という話ですが、

分散型の検索および分析エンジンで、大量のデータを高速に
検索・可視化・分析するためのプラットフォームです。
主にログやメトリクス(性能指標)、テキストデータの収集・検索・分析に利用されます。
Amazon Elasticsearch Serviceからフォークされたオープンソースプロジェクトとして
開発が進められており、スケーラブルかつ柔軟なデータ解析環境を構築することができます。

■参考
https://speakerdeck.com/oracle4engineer/oci-search-service-with-opensearch-gai-yao

詳細については上記や他サイトを参照して頂くとして
早速本題に入りたいと思います。

今回は下記のようにパブリックサブネットのLBが通信を受けて
バックエンドのOpenSearchにデータを流すというシンプルな構成となります。

■構成
image.png

■事前準備
・ドメインを取得

・SSL証明書を作成(Let's Encryptとかであればフリーで作れます)

・VCN、サブネット、セキュリティリスト作成
 参考: https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/

今回はセキュリティリストのイングレスに下記を設定しておきます。
5601 (0.0.0.0/0 TCP All): ダッシュボード用
9200 (0.0.0.0/0 TCP All): API用

・ポリシーの作成
 参考: https://docs.oracle.com/ja-jp/iaas/Content/Identity/Tasks/managingpolicies.htm

因みにOpenSearchクラスタを作成する際に以下のようなポリシーを適用するように
促されますので、こちらを登録するようにしてください。

allow [グループ名] to manage vnics in compartment [コンパートメント名]
allow [グループ名] to manage vcns in compartment [コンパートメント名]
allow [グループ名] to manage subnets in compartment [コンパートメント名]
allow [グループ名] to use network-security-groups in compartment [コンパートメント名]
allow [グループ名] to manage opensearch-family in compartment [コンパートメント名]

・LBの作成
 参考: https://oracle-japan.github.io/ocitutorials/intermediates/using-load-balancer/

予めLBのパブリックIPをDNSのAレコードとして登録し、
取得してあるドメイン名、SSL証明書でSSL通信ができるようにしておきます。

以上が事前準備となります。

◆目次
1.OpenSearchクラスタの作成
2.LBの設定
3.OpenSearchの接続テスト

1.OpenSearchクラスタの作成

左上メニュー[Ξ]からデータベースを選択し、OpenSearchの下のクラスタを選択します。
image.png

名前、コンパートメント、ソフトウェアのバージョンを入力・選択して次へ
image.png

ユーザ、パスワードを入力して次へ
image.png

ここでは用途に応じてクラスタの種類を選択できますが、
今回は開発を選択し、リソースは適当に設定して次へ
image.png

VCN、サブネットを選択して次へ
image.png

最後に設定を確認してクラスタの作成を実行
image.png

クラスタの作成が完了して詳細を見てみるとAPIとダッシュボードそれぞれの
プライベートIPが表示されますので、2つともメモしておきます。
image.png

以上でOpenSearchクラスタの作成は終了です。

2. LBの設定

ここではOpenSearchに外部からアクセスするためのLB設定をします。
準備段階でDNS、ドメイン、SSL証明書の設定が完了してあると思いますので、
リスナーを登録します。

リスナーはダッシュボード:5601、API:9200の2つを作成します。
image.png

バックエンドセットも同様に2つ作成します。
image.png

リスナー:5601(ダッシュボード)のバックエンドセット
image.png

リスナー:9200(API)のバックエンドセット
image.png

■注意点
ここで気をつけたいのが、OpenSearchはHTTPS通信しか許可していないため、
バックエンドセットもSSLを有効にします。

流れとしては下記のようなイメージとなります。
[ダッシュボード] - https → リスナー:5601 → https バックエンドセット:5601
[API] - https → リスナー:9200 → https バックエンドセット:9200

上記のことからSSL証明書はリスナーとバックエンドセットの両方に必要となります。

以上でLBの設定は終了です。

3. OpenSearchの接続テスト

設定が完了したら早速OpenSearchの接続テストをしてみます。
下記でアクセスします。
https://[FQDN]:5601/app/login?

OpenSearchクラスタを作成した時のユーザID、パスワードを使ってログインします。
image.png

左上メニュー[Ξ]からDashboards Managementを選択
image.png

Index patternsを選択
image.png

Create index patternを選択
image.png

Index pattern nameに「index_test*」と入れてNext stepを選択
image.png

そのままCreate index patternを選択
image.png

これでインデックスパターンが作成されました。
image.png

(今回はPostmanを使っていますが、APIツールであればなんでも構いません)
AuthorizationタブのAuth TypeをBasci Authを選択し、
Username、Passwordを入力します。
※こちらはOpenSearchで設定したものと同じです。
image.png

Bodyタブに移って下記を設定します。
image.png

Sendボタンを実行すると結果が返ってきます。
image.png

データ登録のリクエストサンプル

Method: POST
Endpoint: https://[FQDN]:9200/index_test001/_doc
Body:
{
  "field1": "index_test",
  "field2": "data01"
}

データ登録のレスポンスサンプル

{
    "_index": "index_test001",
    "_id": "trdFCJQBSUgzHqe6OF6b",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 2,
    "_primary_term": 1
}

因みに戻り値の_idを使ってGETしてみると登録したデータを確認できます。
image.png

データ参照のリクエストサンプル

Method: GET
Endpoint: https://[FQDN]:9200/index_test001/_doc/t7dHCJQBSUgzHqe61l6D

データ参照のレスポンスサンプル

{
    "_index": "index_test001",
    "_id": "t7dHCJQBSUgzHqe61l6D",
    "_version": 1,
    "_seq_no": 3,
    "_primary_term": 1,
    "found": true,
    "_source": {
        "field1": "index_test",
        "field2": "data01"
    }
}

最後にダッシュボードから登録されたデータを確認してみます。
左上メニュー[Ξ]からDiscoverを選択
image.png

左上検索項目から「index_test*」で絞り込んで見ると
APIで登録したデータ一覧が表示されます。
image.png

虫眼鏡のアイコンをクリックすると登録されたデータが確認できます。
image.png

以上でOpenSearchの接続テストは終了です。

おわり

OpenSearchはあまり外側からアクセスさせることは多くないかと思いますが、
APIを使ってデータ登録、確認をすることが比較的簡単にできます。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?