참고:

OCI OpenSearch 대시보드 및 VCN 외부의 REST API에 액세스

소개

OpenSearch 분산된 오픈 소스 검색 및 애널리틱스 제품군으로, 실시간 애플리케이션 및 서버 모니터링, 로그 애널리틱스 및 웹 사이트 검색과 같은 다양한 사용 사례에 사용됩니다.

OpenSearch는 또한 사용자가 손쉽게 데이터를 탐색할 수 있도록 통합된 시각화 도구인 OpenSearch 대시보드를 사용하여 대량의 데이터에 빠르게 액세스하고 응답할 수 있는 확장성이 뛰어난 시스템을 제공합니다.

기본적으로 OCI OpenSearch 대시보드 및 API는 VCN 내에서만 액세스할 수 있습니다. OpenSearch 대시보드에 액세스하려면 일반 사용자가 VM을 설정하고 액세스할 때마다 포트 전달을 설정해야 합니다. API에도 마찬가지입니다.

목표

NGINX Reverse Proxy Setup을 사용하여 VCN 외부의 OCI OpenSearch 대시보드 및 REST API에 액세스합니다.

필요 조건

구조

역 프록시 아키텍처를 따르며, 역 프록시 서버가 클라이언트로부터 요청을 받아 이를 이행할 수 있는 서버로 전달한 다음 서버의 응답을 클라이언트로 반환합니다. 여기서는 다음 아키텍처 다이어그램과 같이 무료 오픈 소스 고성능 HTTP 서버 및 역 프록시 서버인 NGINX를 사용하고 있습니다.

구조

작업 1: OpenSearch 클러스터 확인

OpenSearch 클러스터가 성공적으로 생성되면 다음 이미지와 같이 클러스터 세부정보가 표시됩니다.

OpenSearch 클러스터

  1. Cluster details 페이지에서 설정에서 사용될 다음 값을 복사합니다.

    1. API 끝점
    2. OpenSearch 대시보드 API 엔드포인트

    또한 클러스터를 만드는 동안 제공된 사용자 이름 및 암호를 확인합니다.

작업 2: 역 프록시 서버 설정

  1. 컴퓨팅 인스턴스 설정(이 자습서에서는 OpenSearch용으로 생성한 서브넷과 동일한 서브넷에서 Oracle Linux 8을 기반으로 VM.Standard.E4.Flex를 사용합니다.) 네트워크 연결이 설정된 경우 다른 서브넷, 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. 다음 명령을 사용하여 VM에서 NGINX Reverse Proxy and Start를 설치합니다.

    sudo yum install nginx -y
    
  2. NGINX 서비스를 사용으로 설정하고 시작합니다.

    sudo systemctl enable nginx && sudo systemctl start nginx
    
  3. 기본적으로 Oracle Linux에는 SELinux가 사용으로 설정되어 있습니다. 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 액세스 사용

OpenSearch 대시보드 및 HTTPS가 사용으로 설정된 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를 참조하십시오.