Nota:

Accedi ai dashboard e alle API REST OpenSearch di OCI all'esterno di una VCN

Introduzione

OpenSearch è una suite di ricerca e analitica distribuita e open source utilizzata per casi d'uso multipli come il monitoraggio in tempo reale di applicazioni e server, l'analisi dei log e la ricerca di siti Web.

OpenSearch offre inoltre un sistema altamente scalabile per fornire accesso e risposta rapidi a grandi volumi di dati con uno strumento di visualizzazione integrato, OpenSearch Dashboard, che semplifica l'esplorazione dei dati da parte degli utenti.

Per impostazione predefinita, ai dashboard e alle API OpenSearch OCI è possibile accedere solo all'interno della VCN. Per accedere ai dashboard OpenSearch, gli utenti finali devono impostare una VM e impostare l'inoltro delle porte ogni volta che possono accedervi. Lo stesso vale per le API.

Obiettivo

Accedi ai dashboard e alle API REST OCI OpenSearch all'esterno di una VCN utilizzando l'impostazione del proxy inverso NGINX.

Prerequisiti

Architettura

Stiamo seguendo l'architettura Reverse Proxy, in cui un server proxy inverso accetta una richiesta da parte di un client, la inoltra a un server in grado di soddisfarla e restituisce la risposta del server al client. Qui stiamo usando NGINX, un server HTTP gratuito, open-source e ad alte prestazioni e un server proxy inverso come mostrato nel seguente diagramma di architettura.

Architettura

Task 1: verificare il cluster OpenSearch

Una volta creato correttamente il cluster OpenSearch, verranno visualizzati i dettagli del cluster come mostrato nell'immagine seguente.

Cluster OpenSearch

  1. Nella pagina dei dettagli del cluster, copiare i valori seguenti che verranno utilizzati nell'impostazione.

    1. Endpoint API
    2. OpenSearch Endpoint API dashboard

    Inoltre, annotare il nome utente e la password forniti durante la creazione del cluster.

Task 2: Impostazione del server proxy inverso

  1. Impostare un'istanza di computazione (in questa esercitazione viene utilizzata VM.Standard.E4.Flex in base a Oracle Linux 8) nella stessa subnet creata per OpenSearch. Puoi anche crearla in un'altra subnet, VCN o area se la connettività di rete è impostata. L'istanza deve essere accessibile da Internet.

    Dettagli istanza

  2. Una volta creata la VM, aprire le porte riportate di seguito negli elenchi di sicurezza per gli IP e il firewall necessari (nella VM).

    • 443 - Per dashboard
    • 80 - Per la verifica
    • 9200 - Per le API
    • 22 - Per l'accesso SSH (aggiunto per impostazione predefinita)

    Connessione console

  3. Eseguire il login alla VM e utilizzare i comandi riportati di seguito per consentire alle porte 80, 443 e 9200 da VM Firewall.

    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  
    

Task 3: Impostazione di NGINX

  1. Installare NGINX Reverse Proxy e avviare nella VM utilizzando il comando seguente.

    sudo yum install nginx -y
    
  2. Abilitare e avviare il servizio NGINX.

    sudo systemctl enable nginx && sudo systemctl start nginx
    
  3. Per impostazione predefinita, Oracle Linux viene fornito con l'abilitazione di SELinux. Per consentire a NGINX di accedere a Internet, dobbiamo fornire l'accesso.

    sudo setsebool -P httpd_can_network_connect on
    
  4. Abilitare l'accesso alle porte 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 si ottiene ValueError: Port tcp/9200, già definito, utilizzare il comando seguente.
    sudo semanage port -m -t http_port_t -p tcp 443
    sudo semanage port -m -t http_port_t -p tcp 9200
    

Task 4: Abilita accesso HTTPS

Per impostare il dashboard OpenSearch e le API con HTTPS abilitato, è necessario utilizzare un certificato SSL fornito da un'autorità di certificazione.

  1. Creare una coppia di chiavi SSL utilizzando il comando OpenSSL seguente. Questo comando genera la coppia di chiavi nella directory /etc/nginx.

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

Task 5: Configura server proxy inverso NGINX

Per l'impostazione del proxy inverso verrà utilizzata la seguente configurazione 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;
		}
	}
}

Variabili utilizzate nella configurazione:

  1. Eseguire un backup del file /etc/nginx/nginx.conf.

  2. Dopo aver sostituito le variabili con i valori effettivi, salvare la configurazione in /etc/nginx/nginx.conf e riavviare il server NGINX.

    sudo systemctl restart nginx
    

Task 6: verificare l'accesso

Ora, dovremmo essere in grado di accedere sia al dashboard OpenSearch che alle API di inclusione (con le credenziali fornite durante la creazione del cluster OpenSearch) utilizzando l'IP pubblico dell'istanza.

Accesso al dashboard

Prompt password Prompt della password


Dashboard
Dashboard

Accesso API REST

Dovremmo utilizzare le stesse credenziali quando si utilizza l'API OpenSearch.

Successo delle API Messaggio di operazione riuscita API

Errore API Messaggio di errore API

Conferme

Autore - Rithesh Subramanian (Architetto cloud OCI)

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Explorer di Oracle Learning.

Per la documentazione sul prodotto, visitare il sito Oracle Help Center.