Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule をオンプレミスにデプロイする場合は、デフォルトのエラーハンドラー、共有プロパティ、スケジューラープール、コネクタ設定などのグローバル設定を定義して、同じドメインにデプロイされたすべてのアプリケーションで共有できます。これを行うには、Mule ドメインを作成し、各アプリケーションからそのドメインを参照します。そうすることで、その Mule ドメインに関連付けられた各アプリケーションがドメイン内の共有リソースにアクセスできるようになります。
Mule アプリケーションは、一度に 1 つのドメインにしか関連付けることができませんので注意してください。
同じオンプレミス Mule Runtime Engine (Mule) に複数のサービスをデプロイする場合は、ドメインを使用することでパフォーマンスを高めることができます。ドメインは、すべての共有リソースに対して中央管理ポイントを提供することにより、特に pom.xml
ファイルで宣言されているドメインの連動関係もドメインアプリケーション間で共有するため、クラスローディングプロセス (そしてメタスペースメモリの使用) をより効率的にします。
共有リソースにより、同じコネクタ設定セットを使用して、複数の開発チームが並行して作業を行うことができるため、チームは次のことが可能になります。
ドメイン内の複数のサービスを同じポートから公開できます。
永続的なストレージへの接続を共有できます。
きちんと定義されたインターフェースを通して Mule アプリケーション間でサービスを共有できます。
設定を 1 箇所のみで行うため、変更があっても Mule アプリケーション間の一貫性を保証できます。
メタデータを共有する場合は、Mule ドメインプロジェクトを Anypoint Studio で開いたままにしておいてください。そうでないと、リンク先の Mule プロジェクトでメタデータを手動で入力しなければなりません。
Anypoint Studio の Mule ドメインプロジェクトには次の主要ファイルが含まれます。
File Name (ファイル名) | 説明 |
---|---|
|
共有リソース設定ファイル。ファイル名は |
|
連動関係ファイル記述子。ドメインプロジェクトに必要なプラグインが格納された Maven POM ファイルです。 |
|
ドメインアーティファクトの記述子。 |
Mule ドメインプロジェクトをデプロイ可能な JAR ファイルにパッケージ化すると、次のファイルが含まれます。
File Name (ファイル名) | 説明 |
---|---|
|
共有リソース設定ファイル。ファイル名は |
|
ドメインのすべての連動関係が登録された Maven に似たリポジトリ。 |
|
アーティファクトの Maven 記述子ファイル。 |
|
連動関係の管理に使用する内部 Mule ファイル。 |
|
ドメインアーティファクトの記述子。 |
Mule アプリケーションで共有リソースを使用するには、次の作業を実行します。
Mule アプリケーションで共有リソースを参照します。
Anypoint Studio で新しいドメインを作成するには、次の手順を実行します。
上部のメニューバーで [File (ファイル)] > [New (新規)] > [Mule Domain Project (Mule ドメインプロジェクト)] を選択します。
通常の Mule プロジェクトの作成時と同じ項目に値を入力します。
プロジェクト名を入力して Mule バージョンを選択します。
ドメインプロジェクトを設定するには、mule-domain-config.xml
ファイルで 1 つ以上の共有リソースを定義します。このファイルは、Anypoint Studio で XML エディターまたはグラフィカルインターフェースを使用して編集できます。
ドメインの設定 XML にモジュールまたはコネクタの設定を追加することで、共有リソースを設定します。
次の例では、HTTP リスナーを共有リソースとして設定しています。
<?xml version="1.0" encoding="UTF-8"?>
<domain:mule-domain
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:domain="http://www.mulesoft.org/schema/mule/ee/domain"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/domain http://www.mulesoft.org/schema/mule/ee/domain/current/mule-domain-ee.xsd">
<!-- Example configuration for an HTTP Listener-->
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
</domain:mule-domain>
Anypoint Studio の [Global Elements (グローバル要素)] タブを使用して共有リソースを設定すると、最初にドメインプロジェクトにモジュールを追加してからグローバル要素を作成できます。
たとえば、ドメインプロジェクトに HTTP 用 Anypoint Connector (HTTP Connector) を追加する手順は、次のとおりです。
[Global Elements (グローバル要素)] タブで、[Manage Modules (モジュールを管理)] をクリックします。
[Add Module (モジュールを追加)] をクリックします。
追加するモジュールを検索し、[Add > (追加 >)] をクリックします。
[Finish (完了)] をクリックします。
ドメインプロジェクトに HTTP Connector を追加した後に、共有リソースとして使用するグローバル要素を作成できます。
[Global Elements (グローバル要素)] タブで、[Create (作成)] をクリックします。
HTTP Connector を選択し、設定プロセスを実行します。
[Global Element Properties (グローバル要素のプロパティ)] ウィンドウで、グローバル要素の設定可能なパラメーターを定義します。
Mule アプリケーションは、一度に 1 つのドメインにしか関連付けることができません。Studio を使用するか、プロジェクトの pom.xml
ファイルを直接編集するかのどちらかの方法で、既存の Mule アプリケーションをドメインに関連付けることができます。ドメインの連動関係を設定していない場合、Mule アプリケーションでは default
ドメインが使用されます。
Mule 4.2.2 以降のバージョンを使用する場合は、次の点を考慮してください。
バージョンではセマンティックバージョン設定が優先されます。
たとえば、バージョンを 1.0.1 に設定した場合、バージョン 1.0.2 以降のドメインは機能しますが、バージョン 1.0.0 のドメインは機能しません。
同じグループ ID、アーティファクト ID、バージョンを使用して異なるドメインがデプロイされると、pom.xml
ファイル内の参照が曖昧になるおそれがあります。
この問題を回避するには、Mule アプリケーションの mule-artifact.json
ファイルでドメインフォルダーの名前を追加します。
{
"domain": "mymuledomain-1.0.1-mule-domain"
...
}
Studio から Mule アプリケーションをドメインに関連付けるには、次の手順を実行します。
[Project Explorer] または [Package Explorer] ビューで Mule アプリケーションを右クリックします。
メニューが開きますので、[Properties (プロパティ)] をクリックします。
[Properties (プロパティ)] で [Mule Project (Mule プロジェクト)] をクリックします。
[Domain (ドメイン)] 項目でプロジェクトのドメインを選択します。
ドメインを選択すると、プロジェクトの Mule Runtime Engine が自動的にドメインの Mule Runtime Engine に一致します。
これらの手順を完了したら、Studio にプロジェクトの pom.xml
のドメインが含まれます。次に例を示します。
<dependencies>
...
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>mymuledomain</artifactId>
<version>1.0.0-SNAPSHOT</version>
<classifier>mule-domain</classifier>
<scope>provided</scope>
</dependency>
</dependencies>
次の mule-domain-config.xml
の例では、HTTP リスナーおよび HTTP 要求設定を共有リソースとして定義します。
<?xml version="1.0" encoding="UTF-8"?>
<mule-domain xmlns="http://www.mulesoft.org/schema/mule/domain"
xmlns:core="http://www.mulesoft.org/schema/mule/core"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/domain http://www.mulesoft.org/schema/mule/domain/current/mule-domain.xsd">
<http:listener-config name="HTTP_Listener_Configuration">
<http:listener-connection host="0.0.0.0" port="8080"/>
</http:listener-config>
<http:request-config name="domainLevel">
<http:request-connection host="localhost" port="9090"/>
</http:request-config>
</mule-domain>
ドメインに関連付けられているすべての Mule アプリケーションは、プロジェクト自体の中でリソースを参照するのと同じように設定内でリソースを参照することによって共有リソースを利用できます。次の例では、HTTP リスナーコネクタが HTTP_Listener_Configuration
という名前の共有リソースを参照しています。
<mule>
<flow name="httpService">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<set-payload value="success" />
</flow>
</mule>
Studio のビジュアルエディターでは、コネクタのプロパティエディターの [Connector Configuration (コネクタ設定)] 項目にあるドロップダウンリストから共有リソースを選択できます。
デフォルトでは、ドメインに関連付けられた Mule アプリケーションまたは Mule アプリケーションに関連付けられたドメインをデプロイすると、Anypoint Studio で両方がデプロイされます。このデフォルト動作を変更するには、ドメインの実行の設定を変更します。同じドメインを共有していなくても、ワークスペース内の一連の Mule アプリケーションをデプロイすることもできます。
Mule ドメインプロジェクトは、Runtime Manager ではインストールできません。 |
Studio からドメインプロジェクトとそれに関連付けられた Mule アプリケーションをデプロイする手順は次のとおりです。
再生ボタンの隣にあるドロップダウンメニューを開き、[Run Configurations (設定の実行)] を選択します。
[General (一般)] タブを選択し、右側のナビゲーションメニューで現在選択されている Mule アプリケーションと常に一緒にデプロイしたいプロジェクトのボックスを選択します。
Studio 外でドメインプロジェクトと Mule アプリケーションをスタンドアロン Mule Runtime Engine にデプロイする手順は次のとおりです。
Studio で、[File (ファイル)] > [Export (エクスポート)] を選択します。
[Mule] > [Anypoint Studio Project to Mule Deployable Archive (includes Studio metadata) (Anypoint Studio プロジェクトから Mule のデプロイ可能なアーカイブへ (Studio メタデータを含む))] を選択します。
このプロセスによって、スタンドアロン Mule Runtime Engine にデプロイできる JAR ファイルが作成されます。
エクスポートされたドメインの JAR ファイルを MULE_HOME/domains
にコピーします。
デプロイする各 Mule アプリケーションとそれに関連付けられたドメインをエクスポートします。
ドメインを参照する各 Mule アプリケーションのエクスポートされた JAR ファイルを MULE_HOME/apps
フォルダーにコピーします。
コマンドコンソールから Mule を起動します。
Mule が起動すると、Mule アプリケーションの起動前にすべてのドメインが完全に起動しているようにするため、Mule は先に MULE_HOME/domains
フォルダーで見つかったドメインをすべてデプロイしてから、次に MULE_HOME/apps
フォルダーで見つかった Mule アプリケーションをすべてデプロイします。
Mule Maven プラグインを使用してドメインをローカル Mule インスタンスにデプロイできます。 手順は、「ドメインのデプロイ」を参照してください。
1 つのゲートウェイポリシー (IP 許可リストなど) も適用する HTTP プロキシアプリケーション群があるとします。各アプリケーションは同じバックエンドとやり取りします。2 GB のヒープメモリと 256 MB のメタスペースが設定された Mule インスタンスで、適切なドメインを使用せずにこれらのアプリケーションを 60 件以上、別々にデプロイすると、リソースの飽和によって TPS (毎秒のトランザクション数) が大幅に低下します。80 件のアプリケーションをデプロイすると、メモリ不足例外によってデプロイエラーとなります。
この問題は、バックエンドサーバー設定を共有するドメインを使用するだけで大幅に改善され、デプロイするアプリケーション数が 100 件を超えても、マシンリソースはバランスよく使用されて良好なパフォーマンスが維持されます。
ドメインを使用することでパフォーマンスは明らかに向上しますが、デプロイされる各アプリケーションには、共有インフラストラクチャリソースによる複雑さが追加されます。パフォーマンスへの影響を回避するため、アプリケーションを追加する前に、各アプリケーションを個別にテストすることでオーバーヘッドを特定してから、他のアプリケーションと共存させてテストしてください。