リバースプロキシの背後でTiDBダッシュボードを使用する
リバースプロキシを使用して、TiDBダッシュボードサービスを内部ネットワークから外部に安全に公開できます。
手順
ステップ1:実際のTiDBダッシュボードアドレスを取得する
複数のPDインスタンスがクラスタにデプロイされている場合、実際にTiDBダッシュボードを実行するのは1つのPDインスタンスのみです。したがって、リバースプロキシのアップストリームが正しいアドレスを指していることを確認する必要があります。このメカニズムの詳細については、 複数のPDインスタンスを使用した展開を参照してください。
展開にTiUPツールを使用する場合は、次のコマンドを実行して、実際のTiDBダッシュボードアドレスを取得します( CLUSTER_NAME
をクラスタ名に置き換えます)。
tiup cluster display CLUSTER_NAME --dashboard
出力は実際のTiDBダッシュボードアドレスです。サンプルは次のとおりです。
http://192.168.0.123:2379/dashboard/
ノート:
この機能は、
tiup cluster
デプロイメントツールの新しいバージョン(v1.0.3以降)でのみ使用できます。TiUPクラスターをアップグレードする
tiup update --self tiup update cluster --force
手順2:リバースプロキシを構成する
HAProxyを使用する
リバースプロキシとしてHAProxyを使用する場合は、次の手順を実行します。
たとえば、
8033
ポートでTiDBダッシュボードにリバースプロキシを使用します。 HAProxy構成ファイルに、次の構成を追加します。frontend tidb_dashboard_front bind *:8033 use_backend tidb_dashboard_back if { path /dashboard } or { path_beg /dashboard/ } backend tidb_dashboard_back mode http server tidb_dashboard 192.168.0.123:2379192.168.0.123:2379
をステップ1で取得したTiDBダッシュボードの実際のアドレスのIPとポートに置き換えます。設定を有効にするためにHAProxyを再起動します。
リバースプロキシが有効かどうかをテストします。HAProxyが配置されているマシンの
8033
ポート(http://example.com:8033/dashboard/
など)の/dashboard/
アドレスにアクセスして、TiDBダッシュボードにアクセスします。
NGINXを使用する
リバースプロキシとしてNGINXを使用する場合は、次の手順を実行します。
たとえば、
8033
ポートでTiDBダッシュボードにリバースプロキシを使用します。 NGINX構成ファイルに、次の構成を追加します。server { listen 8033; location /dashboard/ { proxy_pass http://192.168.0.123:2379/dashboard/; } }http://192.168.0.123:2379/dashboard/
をステップ1で取得したTiDBダッシュボードの実際のアドレスに置き換えます。構成を有効にするためにNGINXをリロードします。
sudo nginx -s reloadリバースプロキシが有効かどうかをテストします。NGINXが配置されているマシンの
8033
ポート(http://example.com:8033/dashboard/
など)の/dashboard/
アドレスにアクセスして、TiDBダッシュボードにアクセスします。
パスプレフィックスをカスタマイズする
TiDBダッシュボードは、デフォルトでhttp://example.com:8033/dashboard/
などの/dashboard/
のパスでサービスを提供します。これは、リバースプロキシの場合にも当てはまります。 TiDBダッシュボードサービスにhttp://example.com:8033/foo/
やhttp://example.com:8033/
などのデフォルト以外のパスを提供するようにリバースプロキシを構成するには、次の手順を実行します。
ステップ1:PD構成を変更して、TiDBダッシュボードサービスのパスプレフィックスを指定します
PD構成の[dashboard]
のカテゴリーのpublic-path-prefix
の構成項目を変更して、TiDBダッシュボードサービスのパスプレフィックスを指定します。この項目を変更した後、PDインスタンスを再起動して、変更を有効にします。
たとえば、クラスタがTiUPを使用してデプロイされ、サービスをhttp://example.com:8033/foo/
で実行する場合は、次の構成を指定できます。
server_configs:
pd:
dashboard.public-path-prefix: /foo
TiUPを使用して新しいクラスタをデプロイするときに構成を変更する
新しいクラスタをデプロイする場合は、上記の構成をtopology.yaml
TiUPトポロジファイルに追加して、クラスタをデプロイできます。具体的な手順については、 TiUP導入ドキュメントを参照してください。
TiUPを使用してデプロイされたクラスタの構成を変更する
デプロイされたクラスタの場合:
クラスタの構成ファイルを編集モードで開きます(
CLUSTER_NAME
をクラスタ名に置き換えます)。tiup cluster edit-config CLUSTER_NAMEserver_configs
のpd
構成で構成アイテムを変更または追加します。server_configs
が存在しない場合は、トップレベルに追加します。monitored: ... server_configs: tidb: ... tikv: ... pd: dashboard.public-path-prefix: /foo ...変更後の構成ファイルは、次のファイルのようになります。
server_configs: pd: dashboard.public-path-prefix: /foo global: user: tidb ...または
monitored: ... server_configs: tidb: ... tikv: ... pd: dashboard.public-path-prefix: /foo変更した構成を有効にするために、すべてのPDインスタンスに対してローリングリスタートを実行します(
CLUSTER_NAME
をクラスタ名に置き換えます)。tiup cluster reload CLUSTER_NAME -R pd
詳細については、 一般的なTiUP操作-構成を変更しますを参照してください。
TiDBダッシュボードサービスをルートパス( http://example.com:8033/
など)で実行する場合は、次の構成を使用します。
server_configs:
pd:
dashboard.public-path-prefix: /
手順2:リバースプロキシ構成を変更する
HAProxyを使用する
http://example.com:8033/foo/
を例にとると、対応するHAProxy構成は次のとおりです。
frontend tidb_dashboard_front
bind *:8033
use_backend tidb_dashboard_back if { path /foo } or { path_beg /foo/ }
backend tidb_dashboard_back
mode http
http-request set-path %[path,regsub(^/foo/?,/dashboard/)]
server tidb_dashboard 192.168.0.123:2379
192.168.0.123:2379
をステップ1で取得したTiDBダッシュボードの実際のアドレスのIPとポートに置き換えます。
TiDBダッシュボードサービスをルートパス( http://example.com:8033/
など)で実行する場合は、次の構成を使用します。
frontend tidb_dashboard_front
bind *:8033
use_backend tidb_dashboard_back
backend tidb_dashboard_back
mode http
http-request set-path /dashboard%[path]
server tidb_dashboard 192.168.0.123:2379
構成を変更し、変更した構成を有効にするためにHAProxyを再起動します。
NGINXを使用する
http://example.com:8033/foo/
を例にとると、対応するNGINX構成は次のとおりです。
server {
listen 8033;
location /foo/ {
proxy_pass http://192.168.0.123:2379/dashboard/;
}
}
http://192.168.0.123:2379/dashboard/
をステップ1で取得したTiDBダッシュボードの実際のアドレスに置き換えます。
TiDBダッシュボードサービスをルートパス( http://example.com:8033/
など)で実行する場合は、次の構成を使用します。
server {
listen 8033;
location / {
proxy_pass http://192.168.0.123:2379/dashboard/;
}
}
構成を変更し、変更した構成を有効にするためにNGINXを再起動します。
sudo nginx -s reload
次は何ですか
ファイアウォールの構成など、TiDBダッシュボードのセキュリティを強化する方法については、 セキュリティTiDBダッシュボードを参照してください。