VM/ベアメタルの Runtime Fabric でのプロキシの管理

Anypoint Runtime Fabric クラスターは、Anypoint Platform コントロールプレーンおよびイメージリポジトリと継続的に通信します。クラスターにデプロイされているアプリケーションも、外部エンドポイントと通信できます。

インターネットへの Runtime Fabric アウトバウンド接続で使用するプロキシ設定を設定できます。これには、Anypoint コントロールプレーンに接続するための HTTP プロキシと、メトリクスとログを Anypoint Monitoring に送信するための SOCKS5 プロキシの両方が含まれます。アプリケーションのプロキシを設定することもできます。

Runtime Fabric で使用するプロキシは、インストール中またはインストール後に ​rtfctl​ ユーティリティを使用して設定できます。アプリケーションプロキシは、アプリケーションのデプロイ中に設定します。

rtfctl のインストール

Runtime Fabric のプロキシ設定を管理するには、​rtfctl​ コマンドラインツールが必要です。プロキシ設定を行う前に、​rtfctl をインストール​する手順を実行します。

rtfctl apply proxy​ コマンドを実行する前に Runtime Fabric をインストールする必要があります。

Anypoint Monitoring プロキシを設定する

監視エージェントは SOCKS5 プロキシを使用するため、Anypoint Monitoring を使用する場合は 2 つのプロキシ種別が必要です。

SOCKS5 プロキシは、次のエンドポイントで TCP 経由で Anypoint Monitoring に接続する必要があります。

  • US コントロールプレーン: dias-ingestor-router.us-east-1.prod.cloudhub.io

  • EU コントロールプレーン: dias-ingestor-router.eu-central-1.prod-eu.msap.io

このステップは、コントローラーノードで 1 回だけ実行します。
  1. rtfctl​ がインストールされているコントローラーノードにログインします。

  2. 次のコマンドを実行し、プレースホルダーの値を次の値に置き換えます。

    sudo /opt/anypoint/runtimefabric/rtfctl apply monitoring-proxy "socks5://<user>:<pass>@<10.0.0.2>:<8080>"
    • <user>​: SOCKS5 プロキシの認証に必要なユーザー名。

    • <pass>​: SOCKS5 プロキシの認証に必要なパスワード。

      パスワードは URL にエンコードされている必要があります。
    • <10.0.0.2>​: SOCKS5 プロキシへのアクセスに使用される IP アドレスまたはホスト名。

    • <8080>​: SOCKS5 プロキシが要求をリスンするホストのポート。

  3. 変更が成功したことを確認するには、次のコマンドを実行して、監視プロキシの現在の値を出力します。

    sudo /opt/anypoint/runtimefabric/rtfctl get monitoring-proxy

    出力は期待される値と一致する必要があります。

Runtime Fabric のサービス用に HTTP プロキシを設定する

アウトバウンドコンポーネントがコントロールプレーンと通信できるように HTTP プロキシと HTTPS プロキシを設定できます。

Anypoint Monitoring では Mule アプリケーション の場合と同じように​独自のプロキシ設定を使用します​。

HTTP プロキシを更新すると、クラスター内の各マシンは、マシンで実行されているすべてのポッドを再起動します。複数のレプリカを実行している場合、ダウンタイムは発生しませんが、メンテナンスウィンドウ中に HTTP プロキシの更新を実行する必要があります。

  • Runtime Fabric 内で実行されているサービスにプロキシの値を適用する。

  • Runtime Fabric インストーラー 1.0.x を使用している場合は、Runtime Fabric の各ノードでスクリプトを実行してクラスターを更新する。

これらのステップは、1 つのコントローラーノードで 1 回実行します。
  1. rtfctl​ がインストールされているコントローラーノードにログインします。

  2. 次のコマンドを実行し、プレースホルダーの値を次の値に置き換えます。

    sudo /opt/anypoint/runtimefabric/rtfctl apply http-proxy "http://<user>:<pass>@<10.0.0.1>:<8080>" --no-proxy "<1.1.1.1:8888,2.2.2.2:9999>"
    • <user>​: HTTP プロキシの認証に必要なユーザー名。

    • <pass>​: HTTP プロキシの認証に必要なパスワード。

      パスワードは URL にエンコードされている必要があります。
    • <10.0.0.1>​: HTTP プロキシにアクセスするための IP アドレスまたはホスト名を指定します。

    • <8080>​: HTTP プロキシが要求をリスンするホストのポートを指定します。

    • <1.1.1.1:8888,2.2.2.2:9999>​: カンマで区切られた ​RTF_NO_PROXY​ ホストとポートを指定します。

    • (省略可能) ​--confirm​: 変更の手動の肯定応答をスキップします。指定しなかった場合、​rtfctl apply proxy​ コマンドでは、続行する前に変更を確認することが求められます。

  3. 変更が成功したことを確認するには、次のコマンドを実行して、HTTP プロキシの現在の値を出力します。

    sudo /opt/anypoint/runtimefabric/rtfctl get http-proxy

    出力は期待される値と一致する必要があります。

  4. プロキシ値を削除するには、次のコマンドを実行します。

    sudo /opt/anypoint/runtimefabric/rtfctl apply http-proxy '' --no-proxy ''

HTTP_PROXY​ 環境変数について

Runtime Fabric のサービスにプロキシを適用したら、次のような警告が表示される場合があります。

Warning: Proxy configurations in the environment "HTTP_PROXY: " does not match configurations in Runtime Fabric "YOUR_PROXY"

Runtime Fabric で この警告​が生成されるのは、​HTTP_PROXY​ 環境変数を設定していないこと、または変数が Runtime Fabric サービスに使用される値と一致しないことを知らせるためです。これらの設定は必ずしも一致している必要はありませんが、Runtime Fabric ではサービスが影響を受ける可能性もあることを知らせるために警告が生成されます。

多くの Linux ツールでは ​HTTP_PROXY​ 環境変数を使用してそのプロキシ設定を提供しています。環境にインターネットアクセス用のプロキシが必要な場合、インターネットアクセスが必要なコマンド用に ​HTTP_PROXY​ 環境変数を設定する必要がある可能性が高くなります。

これにより、​kubectl​ のように HTTP または HTTPS 操作を使用するがインターネットアクセスが不要な他のツールに影響する可能性もあります。​NO_PROXY​ 環境変数を使用して、プロキシする必要がない接続を確立できます。

環境変数によるそのプロキシの動作に対する影響に関する詳細は、Linux ツールのドキュメントを参照してください。

NO_PROXY​ 環境変数について

デフォルトでは、​NO_PROXY​ は ​0.0.0.0/0​ と ​.local​ に設定されます。これらの設定により、プロキシで IPV4 宛先アドレスが転送されなくなります。

API Manager エージェントのプロキシを設定する

プロキシを使用して、API Manager で管理する Mule アプリケーション用の通信を確立できます。すべてのアプリケーションに同じ設定を使用している場合でも、このプロキシ設定は各 Mule アプリケーションで定義する必要があります。​「Mule アプリケーション用のプロキシの設定」​で説明しているように、この設定はアプリケーションが他の外部エンドポイントと通信するために使用するアプリケーションレベルのプロキシとは無関係です。

API Manager エージェントのプロキシを設定するには、次のプロパティをアプリケーションに追加します。

anypoint.platform.proxy_host=hostname
anypoint.platform.proxy_port=port
anypoint.platform.proxy_username=username
anypoint.platform.proxy_password=password

Mule アプリケーション用のプロキシの設定

Runtime Fabric でデプロイされるアプリケーションは、Runtime Fabric クラスターからプロキシ設定を継承しません。各アプリケーションでプロキシを設定する必要があります。

各コネクタ (HTTP リクエスターなど) でプロキシをセットアップするか、または次の例に示すようにアプリケーションのプロパティでプロキシをセットアップすることができます。アプリケーションで多くのコネクタを使用する場合は、アプリケーションのプロパティでプロキシを設定した方が楽です。

http.nonProxyHosts=localhost|*.svc.cluster.local|*.monitoring.svc.cluster.local
http.proxyHost=172.19.0.23
http.proxyPort=3128
https.proxyHost=172.19.0.23
https.proxyPort=3128

java.net.useSystemProxies=false
com.ning.http.client.AsyncHttpClientConfig.useProxySelector=false
com.ning.http.client.AsyncHttpClientConfig.useProxyProperties=true