Flink Web プロキシ設定
Flink Web は管理画面です。管理されたネットワークからのみアクセスし、認証を有効にして、インターネットに直接公開しないでください。
設定手順
- コンテナ外の Nginx
- 単一ホストの Docker Compose
- Kubernetes クラスター
1. 設定の準備
コンテナ外に Nginx をデプロイする場合は、まず Nginx のデプロイ を参照してインストールと基本設定を完了し、続けて HTTP プロキシ設定 または HTTPS プロキシ設定 を参照して HAP プロキシを設定します。
以下の例では、次の設定を使用します。
- Nginx 設定ファイル:
/usr/local/nginx/conf/conf.d/hap.conf - Flink サービスアドレス:
http://192.168.10.30:8081
コンテナ外の Nginx が実行されているホストから、http://192.168.10.30:8081 にアクセスできることを確認してください。接続できない場合、Flink Web プロキシには正常にアクセスできません。
2. 設定ファイルをバックアップ
cp -p /usr/local/nginx/conf/conf.d/hap.conf /usr/local/nginx/conf/conf.d/hap.conf.bak.$(date +%Y%m%d%H%M%S)
3. Flink プロキシ設定を追加
HAP プロキシ設定ファイルを編集します。
vi /usr/local/nginx/conf/conf.d/hap.conf
HAP のアクセスアドレスに対応する server 設定ブロックに、次の location を追加します。upstream hap 設定ブロックには追加しないでください。
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://192.168.10.30:8081; # 実際の Flink Web サービスアドレスに置き換えてください
return 200 "ok";
}
- この
locationは、HAP のアクセスアドレスに対応するserver設定ブ ロックに追加し、upstream hapには追加しないでください。 proxy_passには実際の Flink Web サービスアドレスを指定します。- HTTPS プロキシを使用する場合は
443 sslを listen するserverに、HTTP プロキシを使用する場合は80を listen するserverに設定を追加します。
HAP プロキシ設定との統合例
以下の例は /usr/local/nginx/conf/conf.d/hap.conf の設定参考として直接使用できます。実際の環境に合わせて、HAP バックエンドアドレス、証明書パス、Flink サービスアドレスを変更してください。
- HTTP
- HTTPS
upstream hap {
server 服务器IP:8880; # HAP システムの内部 IP アドレスとポートに変更
}
server {
listen 80;
server_name _;
access_log /data/logs/weblogs/hap.log main;
error_log /data/logs/weblogs/hap.error.log;
underscores_in_headers on;
client_max_body_size 2048m;
location / {
set $real_ip '';
if ($http_x_real_ip) {
set $real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $real_ip $remote_addr;
}
proxy_set_header X-Real-IP $real_ip;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://hap;
}
# IM に必要
location ~ /mds2 {
proxy_set_header Host $http_host;
proxy_hide_header X-Powered-By;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://hap;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
# SSE ストリーミング応答および長時間接続リクエスト
location ~ ^/(agent|api/workflow/api/sse/chat) {
set $md_real_ip '';
if ($http_x_real_ip) {
set $md_real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $md_real_ip $remote_addr;
}
proxy_buffering off;
proxy_read_timeout 30m;
proxy_send_timeout 30m;
client_max_body_size 16m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $md_real_ip;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-HTTP-Method-Override "";
proxy_pass http://hap;
proxy_redirect default;
}
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://192.168.10.30:8081; # 実際の Flink Web サービスアドレスに置き換えてください
return 200 "ok";
}
}
upstream hap {
server 服务器IP:8880; # HAP システムの内部 IP アドレスとポートに変更
}
server {
listen 80;
server_name _;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443 ssl;
server_name _;
access_log /data/logs/weblogs/hap.log main;
error_log /data/logs/weblogs/hap.error.log;
ssl_certificate /etc/cert/fullchain.pem; # SSL 証明書のパスに変更
ssl_certificate_key /etc/cert/privkey.pem; # SSL 秘密鍵のパスに変更
underscores_in_headers on;
client_max_body_size 2048m;
location / {
set $real_ip '';
if ($http_x_real_ip) {
set $real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $real_ip $remote_addr;
}
proxy_set_header X-Real-IP $real_ip;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://hap;
}
# IM に必要
location ~ /mds2 {
proxy_set_header Host $http_host;
proxy_hide_header X-Powered-By;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://hap;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
# SSE ストリーミング応答および長時間接続リクエスト
location ~ ^/(agent|api/workflow/api/sse/chat) {
set $md_real_ip '';
if ($http_x_real_ip) {
set $md_real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $md_real_ip $remote_addr;
}
proxy_buffering off;
proxy_read_timeout 30m;
proxy_send_timeout 30m;
client_max_body_size 16m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $md_real_ip;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-HTTP-Method-Override "";
proxy_pass http://hap;
proxy_redirect default;
}
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://192.168.10.30:8081; # 実際の Flink Web サービスアドレスに置き換えてください
return 200 "ok";
}
}
4. ログインアカウントを作成
ログインユーザー名は hap です。コマンド内の YourStrongPassword123 は例です。実行前に実際のログインパスワードへ置き換えてください。パスワードには英字と数字のみ使用できます。複雑なパスワードの使用を推奨します。
printf "hap:$(openssl passwd -apr1 'YourStrongPassword123')\n" > /usr/local/nginx/conf/conf.d/.flink_passwd
5. Nginx を確認して再読み込み
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
この方法では実行中の Nginx 設定を変更するため、コンテナを再起動すると設定が失われます。再度使用する場合は、手順に従って設定し直してください。
1. Flink サービスアドレスを確認
次のいずれかの方法で ENV_FLINK_URL の値を確認します。
- コンテナの環境変数を確認
- docker-compose.yaml を確認
HAP をデプロイしたサーバーで実行します。
docker exec -it $(docker ps -a | grep -E 'mingdaoyun-community|mingdaoyun-hap' | awk '{print $1}') bash
HAP コンテナ内で実行します。
export | grep -i ENV_FLINK
設定ファイルの既定のパスは /data/mingdao/script/docker-compose.yaml です。HAP をデプロイしたサーバーで実行します。
grep -n -i 'ENV_FLINK_URL' /data/mingdao/script/docker-compose.yaml
ENV_FLINK_URL のイコール(=)より後ろにあるアドレスだけをコピーし、変数名や行全体はコピーしないでください。コピーしたアドレスを、Nginx 設定の proxy_pass に指定します。
2. コンテナ内の Nginx 設定をバックアップ
cp -p /usr/local/nginx/conf/conf.d/private.conf /usr/local/nginx/conf/conf.d/private.conf.bak.$(date +%Y%m%d%H%M%S)
3. コンテナ内の Nginx 設定を変更
vi /usr/local/nginx/conf/conf.d/private.conf
アクセスアドレスに対応する server { ... } 設定ブロックを見つけ、最後の } の前に次の内容を貼り付けます。
ヒント:通常はファイル末尾の } の上に空行を 1 行追加してから、次の設定を貼り付けます。
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://flink:8081; # 実際の ENV_FLINK_URL の値に置き換えてください
return 200 "ok";
}
4. ログインアカウントを作成
ログインユーザー名は hap です。次のコマンドの YourStrongPassword123 は例です。実行前に実際のパスワードへ置き換えてください。パスワードには英字と数字のみ使用できるため、例のパスワードをそのまま使用しないでください。
printf "hap:$(openssl passwd -apr1 'YourStrongPassword123')\n" > /usr/local/nginx/conf/conf.d/.flink_passwd
5. Nginx を確認して再読み込み
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
6. コンテナを終了
exit
この方法では実行中の Nginx 設定を変更するため、コンテナを再起動すると設定が失われます。再度使用する場合は、手順に従って設定し直してください。
1. Flink サービスアドレスを確認
次のいずれかの方法で ENV_FLINK_URL の値を確認します。
- config Pod の環境変数を確認
- config.yaml を確認
コントロールノードで次のコマンドを実行します。default は実際の名前空間に置き換えてください。
kubectl -n default exec -it $(kubectl -n default get pod | grep config | awk '{print $1}') -- bash
config Pod 内で実行します。
export | grep -i ENV_FLINK
確認後、config Pod を終了します。
exit
既定の設定ファイルパスは /data/mingdao/script/kubernetes/config.yaml です。コントロールノードで実行します。
grep -n -i 'ENV_FLINK_URL' /data/mingdao/script/kubernetes/config.yaml
ENV_FLINK_URL のイコール(=)より後ろにあるアドレスだけをコピーし、変数名や行全体はコピーしないでください。コピーしたアドレスを、Nginx 設定の proxy_pass に指定します。
2. www Pod に入り、Nginx 設定をバックアップ
まず、すべての www Pod 名を確認します。
kubectl -n default get pod | grep www
www Pod が複数ある場合は、第 2~6 手順を Pod ごとに実行してください。すべての Pod で、新しく追加する Nginx 設定、ユーザー名、パスワードを同じにする必要があります。
<www-pod> を実際の Pod 名に順番に置き換え、1 つずつ Pod に入ります。
kubectl -n default exec -it <www-pod> -- bash
cp -p /usr/local/nginx/conf/conf.d/private.conf /usr/local/nginx/conf/conf.d/private.conf.bak.$(date +%Y%m%d%H%M%S)
3. www Pod 内の Nginx 設定を変更
Nginx 設定を編集します。
vi /usr/local/nginx/conf/conf.d/private.conf
アクセスアドレスに対応する server { ... } 設定ブロックを見つけ、最後の } の前に次の内容を貼り付けます。
ヒント:通常はファイル末尾の } の上に空行を 1 行追加してから、次の設定を貼り付けます。
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://flink:8081; # 実際の ENV_FLINK_URL の値に置き換えてください
return 200 "ok";
}
4. ログインアカウントを作成
ログインユーザー名は hap です。次のコマンドの YourStrongPassword123 は例です。実行前に実際のパスワードへ置き換えてください。パスワードには英字と数字のみ使用できるため、例のパスワードをそのまま使用しないでください。
printf "hap:$(openssl passwd -apr1 'YourStrongPassword123')\n" > /usr/local/nginx/conf/conf.d/.flink_passwd
5. Nginx を確認して再読み込み
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
6. コンテナを終了
exit
アクセスアドレス
設定完了後、ブラウザーで次のアドレスにアクセスし、設定したアカウントとパスワードでログインします。
<HAP访问地址>/privatedeploy/mdy/monitor/flink/
<HAP访问地址> を実際の HAP アクセスアドレスに置き換えてください。
ログインユーザー名は hap、パスワードは設定時に指定したパスワードです。