Remarque :

Accéder aux tableaux de bord OCI OpenSearch et aux API REST en dehors d'un VCN

Introduction

OpenSearch est une suite de recherche et d'analyse distribuée et open source utilisée dans de nombreux cas d'utilisation tels que la surveillance des applications et des serveurs en temps réel, l'analyse des journaux et la recherche de sites Web.

OpenSearch fournit également un système hautement évolutif pour fournir un accès rapide et une réponse à de grands volumes de données avec un outil de visualisation intégré - OpenSearch Tableaux de bord, qui permet aux utilisateurs d'explorer facilement leurs données.

Par défaut, les tableaux de bord et les API OCI OpenSearch sont accessibles uniquement dans le VCN. Pour accéder aux tableaux de bord OpenSearch, les utilisateurs finaux doivent configurer une machine virtuelle et configurer le transfert de port chaque fois pour y accéder. Il en va de même pour les API.

Objectif

Accéder aux tableaux de bord OCI OpenSearch et aux API REST en dehors d'un VCN à l'aide de la configuration de proxy inverse NGINX.

Prérequis

Architecture

Nous suivons l'architecture Reverse Proxy, où un serveur proxy inverse accepte une demande d'un client, la transmet à un serveur capable de l'exécuter et renvoie la réponse du serveur au client. Ici, nous utilisons NGINX, un serveur HTTP gratuit, open source, hautes performances et un serveur proxy inverse comme indiqué dans le diagramme d'architecture suivant.

Architecture

Tâche 1 : vérification du cluster OpenSearch

Une fois le cluster OpenSearch créé, vous verrez les détails du cluster comme indiqué dans l'image suivante.

Cluster OpenSearch

  1. A partir de la page Détails du cluster, copiez les valeurs suivantes, qui seront utilisées dans la configuration.

    1. Adresse d'API
    2. OpenSearch Adresse d'API de tableau de bord

    Notez également le nom utilisateur et le mot de passe fournis lors de la création du cluster.

Tâche 2 : configurer le serveur proxy inverse

  1. Configurez une instance Compute (dans ce tutoriel, nous utilisons VM.Standard.E4.Flex sur la base d'Oracle Linux 8) dans le sous-réseau que vous avez créé pour OpenSearch. Vous pouvez également le créer dans un autre sous-réseau, VCN ou région si la connectivité réseau est configurée. L'instance doit être accessible à partir d'Internet.

    Détails de l'instance

  2. Une fois la machine virtuelle créée, ouvrez les ports suivants dans les listes de sécurité pour les adresses IP et le pare-feu requis (dans la machine virtuelle).

    • 443 - Pour le tableau de bord
    • 80 - Pour vérification
    • 9200 - Pour les API
    • 22 - Pour l'accès SSH (ajouté par défaut)

    Connexion à la console

  3. Connectez-vous à la machine virtuelle et utilisez les commandes suivantes pour autoriser les ports 80, 443 et 9200 à partir du pare-feu 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  
    

Tâche 3 : configuration de NGINX

  1. Installez le proxy inverse NGINX et démarrez dans la machine virtuelle à l'aide de la commande suivante.

    sudo yum install nginx -y
    
  2. Activez et démarrez le service NGINX.

    sudo systemctl enable nginx && sudo systemctl start nginx
    
  3. Par défaut, Oracle Linux est fourni avec SELinux activé. Pour permettre à NGINX d'accéder à Internet, nous devons fournir l'accès.

    sudo setsebool -P httpd_can_network_connect on
    
  4. Activez l'accès aux ports 9200 et 443.

    sudo semanage port -a -t http_port_t -p tcp 443
    sudo semanage port -a -t http_port_t -p tcp 9200
    
    • Si vous obtenez ValueError: Port tcp/9200, déjà défini, utilisez la commande suivante.
    sudo semanage port -m -t http_port_t -p tcp 443
    sudo semanage port -m -t http_port_t -p tcp 9200
    

Tâche 4 : activer l'accès HTTPS

Pour configurer le tableau de bord OpenSearch et les API avec HTTPS activé, nous devons utiliser un certificat SSL fourni par une autorité de certification.

  1. Créez une paire de clés SSL à l'aide de la commande OpenSSL suivante. Cette commande génère la paire de clés sous le répertoire /etc/nginx.

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

Tâche 5 : configuration du serveur proxy inverse NGINX

Nous utiliserons la configuration NGINX suivante pour la configuration de proxy inverse.

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

Variables utilisées dans la configuration :

  1. Effectuez une sauvegarde du fichier /etc/nginx/nginx.conf.

  2. Après avoir remplacé les variables par des valeurs réelles, enregistrez la configuration dans /etc/nginx/nginx.conf et redémarrez le serveur NGINX.

    sudo systemctl restart nginx
    

Tâche 6 : vérifier l'accès

Maintenant, nous devons pouvoir accéder aux API de tableau de bord OpenSearch et d'inclusion (avec les informations d'identification fournies lors de la création du cluster OpenSearch) à l'aide de l'adresse IP publique de l'instance.

Accès au tableau de bord

Invite de mot de passe Invite de mot de passe


Tableau de bord
Tableau de bord

Accès à l'API REST

Nous devons utiliser les mêmes informations d'identification que pour l'API OpenSearch.

Réussite de l'API Message de succès d'API

Echec de l'API Message d'échec d'API

Remerciements

Auteur - Rithesh Subramanian (architecte cloud OCI)

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour consulter la documentation produit, consultez Oracle Help Center.