ノート:
- このチュートリアルではOracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了する場合は、これらの値をクラウド環境に固有の値に置き換えてください。
VCN外部のOCI OpenSearchダッシュボードおよびREST APIへのアクセス
イントロダクション
OpenSearchは、リアルタイムのアプリケーションやサーバー監視、ログ分析、Webサイト検索など、複数のユースケースで使用される、分散型のオープンソース検索および分析スイートです。
また、OpenSearchは、統合されたビジュアライゼーション・ツールであるOpenSearch Dashboardsを使用して、大量のデータの高速なアクセスとレスポンスを実現する、スケーラビリティに優れたシステムを提供します。これにより、ユーザーはデータの探索が容易になります。
デフォルトでは、OCI OpenSearchダッシュボードおよびAPIにはVCN内でのみアクセスできます。OpenSearchダッシュボードにアクセスするには、エンド・ユーザーがVMを設定し、アクセスするたびにポート・フォワードを設定する必要があります。APIについても同様です。
目標
NGINXリバース・プロキシ設定を使用して、VCN外部のOCI OpenSearchダッシュボードおよびREST APIにアクセスします。
前提条件
- OCI OpenSearchクラスタ。詳細は、OpenSearchクラスタの作成を参照してください。
- インスタンスを作成する権限を持つユーザー/グループ(リバース・プロキシ・サーバーになります)。
アーキテクチャ
リバース・プロキシ・アーキテクチャに従います。リバース・プロキシ・サーバーは、クライアントからのリクエストを受け入れ、それを実現できるサーバーに転送し、クライアントのレスポンスを返します。ここでは、次のアーキテクチャ図に示すように、NGINX (無料、オープンソース、高パフォーマンスのHTTPサーバーおよびリバース・プロキシ・サーバー)を使用しています。
タスク1: OpenSearchクラスタの検証
OpenSearchクラスタが正常に作成されたら、次のイメージに示すようにクラスタの詳細が表示されます。
-
「クラスタ詳細」ページから、設定で使用される次の値をコピーします。
- APIエンドポイント
- OpenSearchダッシュボードAPIエンドポイント
また、クラスタの作成時に指定したユーザー名とパスワードもノートにとります。
タスク2: 逆プロキシ・サーバーの設定
-
コンピュート・インスタンスを設定します(このチュートリアルでは、Oracle Linux 8に基づくVM.Standard.E4.Flexを使用しています)。これは、OpenSearch用に作成したサブネットと同じです。ネットワーク接続が設定されている場合は、別のサブネット、VCNまたはリージョンで作成することもできます。インスタンスにはインターネットからアクセスできる必要があります。
-
VMが作成されたら、(VM内の)必要なIPおよびファイアウォールのセキュリティ・リストで次のポートを開きます。
- 443 - ダッシュボード用
- 80 - 検証用
- 9200 - APIの場合
- 22 - SSHアクセス用(デフォルトで追加)
-
VMにログインし、次のコマンドを使用して、VMファイアウォールからポート80、443、および9200を許可します。
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent sudo firewall-cmd --reload
タスク3: NGINXの設定
-
次のコマンドを使用して、NGINXリバース・プロキシをインストールし、VMで起動します。
sudo yum install nginx -y
-
NGINXサービスを有効にして起動します。
sudo systemctl enable nginx && sudo systemctl start nginx
-
デフォルトでは、Oracle Linuxには SELinux Enabledが付属しています。NGINXがインターネットにアクセスできるようにするには、アクセスを提供する必要があります。
sudo setsebool -P httpd_can_network_connect on
-
ポート9200および443へのアクセスを有効にします。
sudo semanage port -a -t http_port_t -p tcp 443 sudo semanage port -a -t http_port_t -p tcp 9200
- すでに定義されている
ValueError: Port tcp/9200
を取得する場合は、次のコマンドを使用します。
sudo semanage port -m -t http_port_t -p tcp 443 sudo semanage port -m -t http_port_t -p tcp 9200
- すでに定義されている
タスク4: HTTPSアクセスの有効化
HTTPSが有効なOpenSearchダッシュボードおよびAPIを設定するには、認証局によって提供されるSSL証明書を使用する必要があります。
-
次のOpenSSLコマンドを使用してSSLキー・ペアを作成します。このコマンドは、
/etc/nginx
ディレクトリの下に鍵ペアを生成します。sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/cert.key -out /etc/nginx/cert.crt
タスク5: NGINXリバース・プロキシ・サーバーの構成
リバース・プロキシ設定には、次のNGINX構成を使用します。
user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events
{
worker_connections 1024;
}
http
{
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server
{
listen 443;
server_name $host;
rewrite ^/$ https://$host/app/home redirect;
#OpenSearch Dashboard API endpoint without HTTPS in the front
set $domain_endpoint <OpenSearch Dashboard API endpoint>:5601;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://<OpenSearch Dashboard API endpoint>:5601;
}
location /app/login {
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
proxy_set_header Authorization "";
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
# Forward requests to Dashboards
proxy_pass https://$domain_endpoint/app/login;
# Handle redirects to Dashboards
proxy_redirect https://$domain_endpoint/app/login https://$host/app/login;
# Update cookie domain and path
proxy_cookie_domain $domain_endpoint $host;
proxy_cookie_path ~*^/$ /app/login/;
# Response buffer settings
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
server
{
listen 9200;
server_name $host;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://<API endpoint>:9200;
}
}
}
構成で使用される変数:
OpenSearch Dashboard API endpoint
: OpenSearchクラスタ詳細ページから取得されたダッシュボードAPIエンドポイント。API endpoint
: クラスタ詳細ページから取得されたAPIエンドポイント。
-
/etc/nginx/nginx.conf
ファイルのバックアップを作成します。 -
変数を実際の値に置き換えた後、構成を
/etc/NGINX/NGINX.conf
に保存し、NGINXサーバーを再起動します。sudo systemctl restart nginx
タスク6: アクセスの確認
これで、インスタンスのパブリックIPを使用して、OpenSearchダッシュボードと取込みAPI (OpenSearchクラスタの作成時に資格証明を指定)の両方にアクセスできるはずです。
ダッシュボード・アクセス
パスワード・プロンプト
ダッシュボード
REST APIアクセス
OpenSearch APIを使用する場合は、同じ資格証明を使用する必要があります。
APIの成功
API障害
関連リンク
謝辞
作成者 - Rithesh Subramanian (OCI Cloud Architect)
その他の学習リソース
docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Access OCI OpenSearch Dashboards and REST APIs outside a VCN
F74482-02
June 2023
Copyright © 2023, Oracle and/or its affiliates.