참고:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 완료하려면 이 값을 클라우드 환경에 해당하는 값으로 대체하십시오.
OCI OpenSearch 대시보드 및 VCN 외부의 REST API에 액세스
소개
OpenSearch 분산된 오픈 소스 검색 및 애널리틱스 제품군으로, 실시간 애플리케이션 및 서버 모니터링, 로그 애널리틱스 및 웹 사이트 검색과 같은 다양한 사용 사례에 사용됩니다.
OpenSearch는 또한 사용자가 손쉽게 데이터를 탐색할 수 있도록 통합된 시각화 도구인 OpenSearch 대시보드를 사용하여 대량의 데이터에 빠르게 액세스하고 응답할 수 있는 확장성이 뛰어난 시스템을 제공합니다.
기본적으로 OCI OpenSearch 대시보드 및 API는 VCN 내에서만 액세스할 수 있습니다. OpenSearch 대시보드에 액세스하려면 일반 사용자가 VM을 설정하고 액세스할 때마다 포트 전달을 설정해야 합니다. API에도 마찬가지입니다.
목표
NGINX Reverse Proxy Setup을 사용하여 VCN 외부의 OCI OpenSearch 대시보드 및 REST API에 액세스합니다.
필요 조건
- OCI OpenSearch 클러스터. 참조는 OpenSearch 클러스터 만들기를 참조하십시오.
- 인스턴스를 생성할 수 있는 권한이 있는 사용자/그룹(역방향 프록시 서버)입니다.
구조
역 프록시 아키텍처를 따르며, 역 프록시 서버가 클라이언트로부터 요청을 받아 이를 이행할 수 있는 서버로 전달한 다음 서버의 응답을 클라이언트로 반환합니다. 여기서는 다음 아키텍처 다이어그램과 같이 무료 오픈 소스 고성능 HTTP 서버 및 역 프록시 서버인 NGINX를 사용하고 있습니다.
작업 1: OpenSearch 클러스터 확인
OpenSearch 클러스터가 성공적으로 생성되면 다음 이미지와 같이 클러스터 세부정보가 표시됩니다.
-
Cluster details 페이지에서 설정에서 사용될 다음 값을 복사합니다.
- API 끝점
- OpenSearch 대시보드 API 엔드포인트
또한 클러스터를 만드는 동안 제공된 사용자 이름 및 암호를 확인합니다.
작업 2: 역 프록시 서버 설정
-
컴퓨팅 인스턴스 설정(이 자습서에서는 OpenSearch용으로 생성한 서브넷과 동일한 서브넷에서 Oracle Linux 8을 기반으로 VM.Standard.E4.Flex를 사용합니다.) 네트워크 연결이 설정된 경우 다른 서브넷, 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 설정
-
다음 명령을 사용하여 VM에서 NGINX Reverse Proxy and Start를 설치합니다.
sudo yum install nginx -y
-
NGINX 서비스를 사용으로 설정하고 시작합니다.
sudo systemctl enable nginx && sudo systemctl start nginx
-
기본적으로 Oracle Linux에는 SELinux가 사용으로 설정되어 있습니다. 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 액세스 사용
OpenSearch 대시보드 및 HTTPS가 사용으로 설정된 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.