CloudHub ネットワークガイド

このガイドは、Runtime Manager のクラウドベースバージョンを使用するクラウドデプロイを対象とします。別のデプロイメントシナリオについては、​「デプロイメントオプション」​を参照してください。

概要

CloudHub にはインテグレーションと API を設計するためのさまざまなツールが用意されており、インテグレーションと API の保守性、安全性、拡張性が確保されます。このガイドでは、基本的なネットワークアーキテクチャ、DNS、およびファイアウォールルールについて説明します。

CloudHub ネットワークの概要
Figure 1. この画像は、CloudHub コンポーネントを示しています (ロードバランサー、Virtual Private Cloud、Mule ワーカーの DNS レコード)。

負荷分散および DNS レコードについては、以下の各セクションを参照してください。 VPC については、​「Virtual Private Cloud」​を参照してください。

負荷分散

CloudHub はすべてのインテグレーションに負荷分散サービスを提供します。デフォルトの負荷分散サービスを使用するか、​専用ロードバランサー​を取得することができます。

CloudHub 負荷分散サービスはワーカー間でラウンドロビン方式の負荷分散を実行します。これにより、ワーカーは、受け取る要求が増加するにつれて規模を線形的に拡大できます。また、この負荷分散では、アプリケーションのアップグレード時に切り替えが透過的に実行されます。​「CloudHub でのアプリケーションの管理」​を参照してください。

CloudHub にデプロイされた各アプリケーションには、ロードバランサーを参照する ​CNAME​ レコードがあります (例: myapp.region.cloudhub.io​)。CloudHub にデプロイされた Mule アプリケーションはホスト ​0.0.0.0​ 上で HTTP ポート (​8081​) または HTTPS ポート (​8082​) をリスンする必要があります。

Mule ワーカーでは次のポートが割り当てられます。

  • http.port​ が ​8081​ に設定されます

  • https.port​ が ​8082​ に設定されます

次に、ロードバランサーは Mule ワーカー上の割り当てられたポートに要求を転送します。転送されたトラフィックは引き続き HTTP および HTTPS プロトコルを使用します。つまり、​${http.port}​ で HTTPS をリスンしたり、​${https.port}​ でプレーン HTTP をリスンしたりできません。
これらのポートを、それぞれに予約されたプロパティ ​${http.port}​ および ​${https.port}​ を使用して参照する必要があります。これで、CloudHub サービスはデプロイ時にポートを動的に割り当てることができます。

HTTPS エンドポイントを公開する Mule 設定の例を次に示します。

<http:listener-config name="HTTP_Listener_Configuration" protocol="HTTPS" host="0.0.0.0" port="${https.port}" doc:name="HTTP Listener Configuration" >
		<tls:context name="TLS_Context_Custom_Keystore" doc:name="TLS Context">
			<tls:key-store type="jks" path="server.jks" keyPassword="keypassword" password="storepassword" alias="cloudhubworker" />
		</tls:context>
</http:listener-config>
Mule ワーカー上で CloudHub ロードバランサーは自動的に ​http.port:80​ を HTTP 用のポート ​:8081​ にプロキシし、​https.port:443​ を HTTPS 用の ​:8082​ にプロキシします。
mule-app.properties​ ファイルで ​http.port​ と ​https.port​ に他の値が指定されている場合、それらはデプロイ時に上書きされます。

CloudHub のロードバランサー (​myapp.region.cloudhub.io​) を介してクライアントが実行した要求ごとに、ロードバランサーは 2 つの接続を維持します。1 つはクライアントからの接続で、もう 1 つはワーカーへの接続です。 接続ごとにロードバランサーは 300 秒のアイドルタイムアウトを管理します。これは、どちらの接続にもデータが送信されていない場合にトリガーされます。この期間にデータが送受信されない場合、ロードバランサーは両方の接続を閉じます。

どちらの側からでも接続の処理に 300 秒を超える時間がかかる場合、処理を非同期で実行することを検討してください。

DNS レコード

アプリケーションが CloudHub にデプロイされると、アプリケーションの以下の DNS レコードが公開されます。

myapp.region.cloudhub.io

ロードバランサー。ポート 80 と 443 はそれぞれ ​${http.port}​ と ​${https.port}​ に転送されます。

mule-worker-myapp.region.cloudhub.io

Mule ワーカーの外部 IP アドレス。公開 HTTP サービスは ​${http.port}​ と ​${https.port}​ で公開されます。

mule-worker-internal-myapp.region.cloudhub.io

Mule ワーカーの内部 IP アドレス。この DNS レコードの IP アドレスには、顧客の非公開 ​Anypoint VPC​ 内でのみアクセスできます。​MuleSoft の共有 VPC 内で実行されているワーカーはこの IP アドレスにアクセスできません。​内部 HTTP サービスは ​${http.private.port}​ と ​${https.private.port}​ で公開されます。割り当てられたデフォルトのポートはそれぞれ 8091 および 8092 であり、これらを変更することはできません。

たとえば、次のような特定の状況では、アプリケーションの内部 IP アドレスを知ることが必要になる場合があります。

  • 公開インターネットにデータを送信せずに、顧客の ​Anypoint VPC​ 内でワーカーと直接通信する

  • 独自のロードバランサーをセットアップする

この IP アドレスには、Anypoint VPC 内から ​mule-worker-internal-myapp.region.cloudhub.io​ レコードを介してアクセスできます。ワーカーに直接アクセスする場合、CloudHub の負荷分散レイヤーから得られる負荷分散のすべてのメリットが失われます。

IP 範囲および静的 IP

CloudHub IP アドレスは Amazon EC2 IP プールから選択されます。この範囲のリストについては、 Amazon AWS IP アドレス範囲 API​ を参照してください。このページの「Download (ダウンロード)」リンクでは、リージョンを含むすべての範囲の動的に生成された JSON 表現を取得できます。これらの範囲は通知なしに変更される可能性があるため、この情報を定期的に更新する必要があります。

CloudHub では、アプリケーションの静的 IP の割り当てがサポートされるため、他のサービス用に静的 IP を許可リストに登録できます。アプリケーションの静的 IP を有効にするには、Runtime Manager UI のアプリケーション設定ページの ​[Static IPs (静的 IP)]​ タブに移動して、​[Use Static IP (静的 IP を使用)]​ チェックボックスをオンにします。デフォルトでは、サブスクリプション内の本番 vCore の 2 倍の数の静的 IP が割り当てられます。この制限を増やすには、 MuleSoft ヘルプセンター​にお問い合わせください。

アプリケーションの静的 IP が割り当てられると、IP アドレスはアプリケーション設定ページの ​[Static IPs (静的 IP)]​ タブに表示されます。静的 IP についての詳細は、​「Static IPs Tab Settings ([Static IPs (静的 IP) タブの設定)」]​を参照してください。

静的 IP アドレスは、Anypoint VPC 内部の非公開 IP アドレスではサポートされません。

場合によって、ファイアウォールまたはインフラストラクチャの設定により、Mule Runtime Engine が Runtime Manager の公開サービスにアクセスできないことがあります。これは、Mule を登録する場合や、Mule を開始し、Runtime Manager と連携するするように Mule を登録する場合に問題となることがあります。

Runtime Manager エージェント​と Runtime Manager コンソール間の通信のために IP アドレスを許可する必要がある場合、​「ポート、IP アドレス、ホスト名の許可」​を参照してください。

複数のワーカーを使用するアプリケーションに静的 IP を割り当てることができます。ただし、複数のワーカーの静的 IP を事前に割り当てることはできません。複数のワーカーの場合、IP アドレスは自動的に割り当てられます。

リージョンサービス

アプリケーションをどのリージョンにデプロイするかに応じて、インテグレーションの DNS レコードとロードバランサーが変わる場合があります。各リージョンでアプリケーションがどの DNS レコードを使用できるかについて次の表にまとめました。

米国コントロールプレーンの Anypoint Platform​ は、以下の地域をカバーしています。

米国コントロールプレーンの地域 DNS レコード

米国東部 (北バージニア)

myapp.us-e1.cloudhub.io

米国東部 (オハイオ)

myapp.us-e2.cloudhub.io

米国西部 (北カリフォルニア)

myapp.us-w1.cloudhub.io

米国西部 (オレゴン)

myapp.us-w2.cloudhub.io

カナダ (中央部)

myapp.ca-c1.cloudhub.io

南米 (サンパウロ)

myapp.br-s1.cloudhub.io

アジア太平洋 (シンガポール)

myapp.sg-s1.cloudhub.io

アジア太平洋 (シドニー)

myapp.au-s1.cloudhub.io

アジア太平洋 (東京)

myapp.jp-e1.cloudhub.io

EU (アイルランド)

myapp.ir-e1.cloudhub.io

EU (フランクフルト)

myapp.de-c1.cloudhub.io

EU (ロンドン)

myapp.uk-e1.cloudhub.io

MuleSoft Government Cloud 用 Anypoint Platform​ は、以下の地域をカバーしています。

米国コントロールプレーンの地域 DNS レコード

US Gov West (米国政府西部)

myapp.usg-w1.gov.cloudhub.io

EU コントロールプレーンの Anypoint Platform​ は、以下の地域をカバーしています。

EU コントロールプレーンの地域 DNS レコード

EU (アイルランド)

myapp.ir-e1.eu1.cloudhub.io

EU (フランクフルト)

myapp.de-c1.eu1.cloudhub.io

DNS レコードは各コントロールプレーンで一意です。EU コントロールプレーンは、米国コントロールプレーンがサポートする地域の一部をサポートしますが、DNS レコードは異なります。EU コントロールプレーンの詳細については、​「EU コントロールプレーンについて」​を参照してください。

リージョンへのデプロイは、内部および外部のワーカー DNS アドレスにも影響します。たとえば、米国のコントロールプレーンを使用していてそれをアイルランド地域にデプロイした場合、内部および外部の IP アドレスの DNS レコードは ​mule-worker-myapp.ir-e1.cloudhub.io​ および ​mule-worker-internal-myapp.ir-e1.cloudhub.io​ になります。

ファイアウォールルールおよびポートアドレス

外部に公開されるポートは ​${http.port}​ と ​${https.port}​ (デフォルトではそれぞれ 8081 と 8082) の 2 つのみです。他のポートにアクセスする必要がある場合、​Anypoint Virtual Private Cloud (Anypoint VPC)​ を使用できます。

たとえば JMX ベースの監視を行うために追加のポートを Anypoint VPC 内で開くことができます。​Anypoint VPC のドキュメント​でファイアウォールルールに関するセクションを参照してください。

専用の負荷分散の設定

場合によって、Mule ワーカー用のカスタム負荷分散レイヤーのセットアップが必要になることがあります。たとえば、カスタムドメイン名や SSL 証明書を提供する必要がある場合です。

ワーカー用の内部または外部 DNS レコードを介してトラフィックをロードバランサーから CloudHub ワーカーにルーティングできます。このレコードにはアプリケーション内のすべてのワーカーの IP アドレスが含まれます。DNS タイムアウトを 20 ~ 60 秒の間で設定することをお勧めします。これで、あらゆる DNS 変更がすばやく反映され、影響が最小限に抑えられます。

独自の ​Anypoint VPC​ を設定した後に、独自の​専用ロードバランサー​を設定できます。

CloudHub 上のアプリケーションの一般公開の回避

Anypoint VPC​ および ​CloudHub 専用ロードバランサー​がある場合、CloudHub でホストされるアプリケーションが一般に公開されることを回避できます。

  1. 次の方法を使用して、ポート 8081 および 8082 の ​Anypoint VPC ファイアウォールルール​を削除します。

    1. Anypoint VPC Management Center の ​[Firewall Rules (ファイアウォールルール)]​ タブ。​接続元​ ​Anywhere (0.0.0.0/0)​ とポート 8081 および 8082 を使用する両方のルールを削除します。

    2. Anypoint Platform CLI。インデックス ​1​ および ​3​ を使用して ​cloudhub vpc firewall-rules remove​ コマンドを実行します。

  2. 承認する IP アドレスを使用して、専用ロードバランサーで​許可リスト​を作成します。

CloudHub 専用ロードバランサー​がない場合、最初のステップを実行すれば、Anypoint VPC にデプロイされたアプリケーションは一般に公開されません。