ノート:

VCN外部のOCI OpenSearchダッシュボードおよびREST APIへのアクセス

イントロダクション

OpenSearchは、リアルタイムのアプリケーションやサーバー監視、ログ分析、Webサイト検索など、複数のユースケースで使用される、分散型のオープンソース検索および分析スイートです。

また、OpenSearchは、統合されたビジュアライゼーション・ツールであるOpenSearch Dashboardsを使用して、大量のデータの高速なアクセスとレスポンスを実現する、スケーラビリティに優れたシステムを提供します。これにより、ユーザーはデータの探索が容易になります。

デフォルトでは、OCI OpenSearchダッシュボードおよびAPIにはVCN内でのみアクセスできます。OpenSearchダッシュボードにアクセスするには、エンド・ユーザーがVMを設定し、アクセスするたびにポート・フォワードを設定する必要があります。APIについても同様です。

目標

NGINXリバース・プロキシ設定を使用して、VCN外部のOCI OpenSearchダッシュボードおよびREST APIにアクセスします。

前提条件

アーキテクチャ

リバース・プロキシ・アーキテクチャに従います。リバース・プロキシ・サーバーは、クライアントからのリクエストを受け入れ、それを実現できるサーバーに転送し、クライアントのレスポンスを返します。ここでは、次のアーキテクチャ図に示すように、NGINX (無料、オープンソース、高パフォーマンスのHTTPサーバーおよびリバース・プロキシ・サーバー)を使用しています。

アーキテクチャ

タスク1: OpenSearchクラスタの検証

OpenSearchクラスタが正常に作成されたら、次のイメージに示すようにクラスタの詳細が表示されます。

OpenSearchクラスタ

  1. 「クラスタ詳細」ページから、設定で使用される次の値をコピーします。

    1. APIエンドポイント
    2. OpenSearchダッシュボードAPIエンドポイント

    また、クラスタの作成時に指定したユーザー名とパスワードもノートにとります。

タスク2: 逆プロキシ・サーバーの設定

  1. コンピュート・インスタンスを設定します(このチュートリアルでは、Oracle Linux 8に基づくVM.Standard.E4.Flexを使用しています)。これは、OpenSearch用に作成したサブネットと同じです。ネットワーク接続が設定されている場合は、別のサブネット、VCNまたはリージョンで作成することもできます。インスタンスにはインターネットからアクセスできる必要があります。

    インスタンスの詳細

  2. VMが作成されたら、(VM内の)必要なIPおよびファイアウォールのセキュリティ・リストで次のポートを開きます。

    • 443 - ダッシュボード用
    • 80 - 検証用
    • 9200 - APIの場合
    • 22 - SSHアクセス用(デフォルトで追加)

    コンソール接続

  3. 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の設定

  1. 次のコマンドを使用して、NGINXリバース・プロキシをインストールし、VMで起動します。

    sudo yum install nginx -y
    
  2. NGINXサービスを有効にして起動します。

    sudo systemctl enable nginx && sudo systemctl start nginx
    
  3. デフォルトでは、Oracle Linuxには SELinux Enabledが付属しています。NGINXがインターネットにアクセスできるようにするには、アクセスを提供する必要があります。

    sudo setsebool -P httpd_can_network_connect on
    
  4. ポート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証明書を使用する必要があります。

  1. 次の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;
		}
	}
}

構成で使用される変数:

  1. /etc/nginx/nginx.confファイルのバックアップを作成します。

  2. 変数を実際の値に置き換えた後、構成を/etc/NGINX/NGINX.confに保存し、NGINXサーバーを再起動します。

    sudo systemctl restart nginx
    

タスク6: アクセスの確認

これで、インスタンスのパブリックIPを使用して、OpenSearchダッシュボードと取込みAPI (OpenSearchクラスタの作成時に資格証明を指定)の両方にアクセスできるはずです。

ダッシュボード・アクセス

パスワード・プロンプト パスワード・プロンプト


ダッシュボード
ダッシュボード

REST APIアクセス

OpenSearch APIを使用する場合は、同じ資格証明を使用する必要があります。

APIの成功 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を参照してください。