Observação:

Acesse Painéis de Controle e APIs REST do OCI OpenSearch fora de uma VCN

Introdução

OpenSearch é um pacote distribuído de pesquisa e análise de código-fonte aberto usado para vários casos de uso, como monitoramento de aplicativos e servidores em tempo real, análise de logs e pesquisa de sites.

O OpenSearch também fornece um sistema altamente escalável para fornecer acesso rápido e resposta a grandes volumes de dados com uma ferramenta de visualização integrada - Painéis OpenSearch, que facilita para os usuários a exploração de seus dados.

Por padrão, os Painéis de Controle e APIs OpenSearch do OCI só podem ser acessados dentro da VCN. Para acessar os Painéis OpenSearch, os usuários finais precisam configurar uma VM e configurar o encaminhamento de portas todas as vezes para acessá-la. O mesmo também se aplica a APIs.

Objetivo

Acesse Painéis de Controle e APIs REST do OCI OpenSearch fora de uma VCN usando a Configuração de Proxy Reverso NGINX.

Pré-requisitos

Arquitetura

Estamos seguindo a arquitetura de Proxy Reverso, onde um servidor proxy reverso aceita uma solicitação de um cliente, encaminha-a para um servidor que pode atendê-lo e retorna a resposta do servidor ao cliente. Aqui estamos usando o NGINX, um servidor HTTP gratuito, de código aberto, de alto desempenho e um servidor proxy reverso, conforme mostrado no diagrama de arquitetura a seguir.

Arquitetura

Tarefa 1: Verificar o cluster OpenSearch

Assim que o cluster OpenSearch tiver sido criado com sucesso, você verá os detalhes do cluster conforme mostrado na imagem a seguir.

Cluster OpenSearch

  1. Na página de detalhes do Cluster, copie os valores a seguir, que serão usados na configuração.

    1. Ponto final da API
    2. OpenSearch Ponto final da API de Painel de Controle

    Além disso, observe o Nome de Usuário e a Senha fornecidos durante a criação do cluster.

Tarefa 2: Configurar o servidor proxy reverso

  1. Configure uma Instância de Computação (Neste tutorial, estamos usando VM.Standard.E4.Flex com base no Oracle Linux 8) na mesma sub-rede que você criou para OpenSearch. Você também poderá criá-lo em outra sub-rede, VCN ou região se a conectividade de rede estiver configurada. A instância deverá estar acessível pela Internet.

    Detalhes da Instância

  2. Uma vez criada a VM, abra as portas a seguir nas Listas de Segurança para os IPs e o Firewall (na VM) necessários.

    • 443 - Para Painel
    • 80 - Para Verificação
    • 9200 - Para APIs
    • 22 - Para Acesso SSH (Adicionado por padrão)

    Conexão da Console

  3. Faça log-in na VM e use os comandos a seguir para permitir as portas 80, 443 e 9200 do Firewall de VM.

    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  
    

Tarefa 3: Configurar NGINX

  1. Instale o Proxy Reverso NGINX e Inicie na VM usando o comando a seguir.

    sudo yum install nginx -y
    
  2. Ative e inicie o Serviço NGINX.

    sudo systemctl enable nginx && sudo systemctl start nginx
    
  3. Por padrão, o Oracle Linux vem com SELinux Ativado. Para permitir que a NGINX acesse a Internet, precisamos fornecer acesso.

    sudo setsebool -P httpd_can_network_connect on
    
  4. Ative o acesso às portas 9200 e 443.

    sudo semanage port -a -t http_port_t -p tcp 443
    sudo semanage port -a -t http_port_t -p tcp 9200
    
    • Se você receber ValueError: Port tcp/9200, já definido, use o comando a seguir.
    sudo semanage port -m -t http_port_t -p tcp 443
    sudo semanage port -m -t http_port_t -p tcp 9200
    

Tarefa 4: Ativar acesso HTTPS

Para configurar o Painel de Controle e as APIs OpenSearch com HTTPS ativado, devemos usar um certificado SSL fornecido por uma autoridade de certificação.

  1. Crie um par de chaves SSL usando o seguinte comando OpenSSL. Esse comando gera o par de chaves no diretório /etc/nginx.

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/cert.key -out /etc/nginx/cert.crt
    

Tarefa 5: Configurar o Servidor Proxy Reverso NGINX

Usaremos a seguinte configuração NGINX para configuração de proxy Reverso.

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;
		}
	}
}

Variáveis Usadas na Configuração:

  1. Faça backup do arquivo /etc/nginx/nginx.conf.

  2. Depois de substituir as variáveis por valores reais, salve a configuração em /etc/nginx/nginx.conf e reinicie o servidor NGINX.

    sudo systemctl restart nginx
    

Tarefa 6: Verificar o acesso

Agora, devemos poder acessar o Painel de Controle OpenSearch e as APIs de Ingestão (com Credenciais fornecidas durante a criação do Cluster OpenSearch) usando o IP Público da Instância.

Acesso ao Painel

Prompt de Senha Prompt de senha


Painel de Controle
Painel

Acesso à API REST

Devemos usar as mesmas credenciais ao usar a API OpenSearch.

Sucesso da API Mensagem de Sucesso da API

Falha de API Mensagem de Falha da API

Confirmações

Autor - Rithesh Subramanian (OCI Cloud Architect)

Mais Recursos de Aprendizagem

Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.