注意:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它會使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值替代為您雲端環境特定的值。
存取 VCN 外部的 OCI OpenSearch 儀表板和 REST API
簡介
OpenSearch 是一個分散式的開源搜尋與分析套件,用於多種使用案例,例如即時應用程式與伺服器監控、日誌分析及網站搜尋。
OpenSearch 還提供可高度擴展的系統,可藉由整合的視覺化工具 OpenSearch 儀表板快速存取和回應大量資料,讓使用者輕鬆探索資料。
依照預設,OCI OpenSearch 儀表板和 API 只能在 VCN 內存取。若要存取 OpenSearch 儀表板,一般使用者每次都必須設定 VM 並設定連接埠轉送,才能存取它。同樣適用於 API。
目標
使用 NGINX 反向代理主機設定存取 VCN 以外的 OCI OpenSearch 儀表板和 REST API。
必要條件
- 一個 OCI OpenSearch 叢集。如需參考資訊,請參閱 Creating an OpenSearch cluster 。
- 具有建立執行處理權限的使用者 / 群組 (將會是反向代理主機伺服器)。
架構
我們遵循反向代理伺服器架構,反向代理伺服器會接受來自用戶端的要求,將它轉送至可以滿足要求的伺服器,並傳回伺服器對用戶端的回應。以下是使用 NGINX,這是免費、開放原始碼、高效能的 HTTP 伺服器和反向代理伺服器,如以下架構圖所示。
作業 1:驗證 OpenSearch 叢集
順利建立 OpenSearch 叢集之後,您將看到叢集詳細資訊,如下圖所示。
-
從「叢集明細」頁面中,複製下列要用於設定的值。
- API 端點
- OpenSearch Dashboard API 端點
此外,請注意建立叢集時提供的「使用者名稱」和「密碼」。
作業 2:設定反向代理主機伺服器
-
設定運算執行處理 (在本教學課程中,我們在您為 OpenSearch 建立的相同子網路中,使用以 Oracle Linux 8 為基礎的 VM.Standard.E4.Flex)。如果已設定網路連線,您也可以在另一個子網路、VCN 或區域中建立此網路。執行處理應該可從網際網路存取。
-
建立 VM 之後,請開啟安全清單中的下列連接埠,取得必要的 IP 和防火牆 (在 VM 中)。
- 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 反向代理伺服器並啟動。
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 Dashboard 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 雲端架構師)
其他學習資源
探索 docs.oracle.com/learn 的其他實驗室,或者存取更多 Oracle Learning YouTube 頻道上的免費學習內容。此外,請瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning 檔案總管。
如需產品文件,請造訪 Oracle Help Center 。
Access OCI OpenSearch Dashboards and REST APIs outside a VCN
F74482-02
June 2023
Copyright © 2023, Oracle and/or its affiliates.