Hinweis:

Auf OCI OpenSearch-Dashboards und REST-APIs außerhalb eines VCN zugreifen

Einführung

OpenSearch ist eine verteilte Open-Source-Such- und Analysesuite, die für mehrere Anwendungsfälle wie Echtzeitüberwachung von Anwendungen und Servern, Loganalysen und Website-Suche verwendet wird.

OpenSearch stellt außerdem ein hoch skalierbares System bereit, mit dem Benutzer mit einem integrierten Visualisierungstool - OpenSearch Dashboards - schnell auf große Datenmengen zugreifen und darauf reagieren können, wodurch Benutzer ihre Daten leicht untersuchen können.

Standardmäßig können nur innerhalb des VCN auf OCI-OpenSearch-Dashboards und -APIs zugegriffen werden. Für den Zugriff auf die OpenSearch-Dashboards müssen Endbenutzer eine VM einrichten und jedes Mal Portweiterleitungen einrichten, um darauf zuzugreifen. Dasselbe gilt auch für APIs.

Zielsetzung

Greifen Sie mit dem Reverse-Proxy-Setup von NGINX auf OCI-OpenSearch-Dashboards und -REST-APIs außerhalb eines VCN zu.

Voraussetzungen

Architektur

Wir folgen der Reverse-Proxy-Architektur, bei der ein Reverse-Proxy-Server eine Anforderung von einem Client akzeptiert, sie an einen Server weiterleitet, der sie erfüllen kann, und die Antwort des Servers auf den Client zurückgibt. Hier verwenden wir NGINX, einen kostenlosen Open-Source-HTTP-Server mit hoher Performance und einen Reverse-Proxy-Server, wie im folgenden Architekturdiagramm dargestellt.

Architektur

Aufgabe 1: Cluster OpenSearch prüfen

Nachdem das Cluster OpenSearch erfolgreich erstellt wurde, werden die Clusterdetails wie im folgenden Image angezeigt.

OpenSearch-Cluster

  1. Kopieren Sie auf der Seite "Clusterdetails" die folgenden Werte, die beim Setup verwendet werden.

    1. API-Endpunkt
    2. OpenSearch Dashboard-API-Endpunkt

    Beachten Sie außerdem den Benutzernamen und das Kennwort, die beim Erstellen des Clusters angegeben wurden.

Aufgabe 2: Reverse Proxy-Server einrichten

  1. Richten Sie eine Compute-Instanz ein (in diesem Tutorial verwenden wir VM.Standard.E4.Flex basierend auf Oracle Linux 8) in demselben Subnetz, das Sie für OpenSearch erstellt haben. Sie können sie auch in einem anderen Subnetz, einem anderen VCN oder einer anderen Region erstellen, wenn die Netzwerkkonnektivität eingerichtet ist. Die Instanz muss über das Internet zugänglich sein.

    Instanzdetails

  2. Öffnen Sie nach der Erstellung der VM die folgenden Ports in Sicherheitslisten für die erforderlichen IPs und Firewall (auf der VM).

    • 443 - Für Dashboard
    • 80 - Zur Prüfung
    • 9200 - Für APIs
    • 22 - Für SSH-Zugriff (standardmäßig hinzugefügt)

    Konsole-Verbindung

  3. Melden Sie sich bei der VM an, und verwenden Sie die folgenden Befehle, um die Ports 80, 443 und 9200 von der VM-Firewall zuzulassen.

    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  
    

Aufgabe 3: NGINX einrichten

  1. Installieren Sie NGINX Reverse Proxy, und starten Sie mit dem folgenden Befehl in der VM.

    sudo yum install nginx -y
    
  2. Aktivieren und starten Sie den NGINX-Service.

    sudo systemctl enable nginx && sudo systemctl start nginx
    
  3. Standardmäßig ist Oracle Linux für SELinux aktiviert. Damit NGINX auf das Internet zugreifen kann, müssen wir Zugriff gewähren.

    sudo setsebool -P httpd_can_network_connect on
    
  4. Aktivieren Sie den Zugriff auf die Ports 9200 und 443.

    sudo semanage port -a -t http_port_t -p tcp 443
    sudo semanage port -a -t http_port_t -p tcp 9200
    
    • Wenn Sie ValueError: Port tcp/9200 erhalten, die bereits definiert ist, verwenden Sie den folgenden Befehl.
    sudo semanage port -m -t http_port_t -p tcp 443
    sudo semanage port -m -t http_port_t -p tcp 9200
    

Aufgabe 4: HTTPS-Zugriff aktivieren

Um das Dashboard OpenSearch und APIs mit aktivierter HTTPS einzurichten, müssen wir ein SSL-Zertifikat verwenden, das von einer Certificate Authority bereitgestellt wird.

  1. Erstellen Sie ein SSL-Schlüsselpaar mit dem folgenden OpenSSL-Befehl. Dieser Befehl generiert das Schlüsselpaar im Verzeichnis /etc/nginx.

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

Aufgabe 5: Reverse-Proxyserver von NGINX konfigurieren

Wir verwenden die folgende NGINX-Konfiguration für das Reverse-Proxy-Setup.

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

In der Konfiguration verwendete Variablen:

  1. Erstellen Sie ein Backup der Datei /etc/nginx/nginx.conf.

  2. Nachdem Sie die Variablen durch tatsächliche Werte ersetzt haben, speichern Sie die Konfiguration in /etc/NGINX/NGINX.conf, und starten Sie den NGINX-Server neu.

    sudo systemctl restart nginx
    

Aufgabe 6: Zugriff prüfen

Jetzt sollten wir sowohl auf das Dashboard OpenSearch als auch auf die APIs zum Aufnehmen (mit den beim Erstellen des OpenSearch-Clusters angegebenen Zugangsdaten) mit der öffentlichen IP der Instanz zugreifen können.

Dashboard-Zugriff

Kennwort-Prompt Kennwort-Prompt


Dashboard
Dashboard

REST-API-Zugriff

Sie sollten dieselben Zugangsdaten verwenden, wenn Sie die OpenSearch-API verwenden.

API-Erfolg API-Erfolgsnachricht

API-Fehler API-Fehlermeldung

Bestätigungen

Autor - Rithesh Subramanian (OCI Cloud Architect)

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.