Help us understand the problem. What is going on with this article?

MuleアプリケーションをDLBを接続する際のはまりどころ

はじめに

 今回は、Muleアプリケーション開発者が専用ロードバランサーからMuleアプリケーションに接続する際に、ちょっとしたはまりどころの紹介です。
 みんな原因を説明すると「そんな問題あるのかよー」と言ってしまうはまりどころですが、知っていると問題なく回避できます。

はまりどころ

 CloudHubにはMuleアプリケーションをCloudHubロードバランサーに接続するために8081ポートに変更してデプロイする機能があります。デプロイ時に${http.port}は8081に書き換えられます。

公式ヘルプ:CloudHubネットワークガイド

 しかし、専用ロードバランサー(DLB)では、Muleプリケーションのポートが違います。公式ヘルプでは下記のように紹介されています。
 ”CloudHub 専用ロードバランサでは、ポート 8091 でリスンする Mule アプリケーションへの HTTP 要求とポート 8092 でリスンする Mule アプリケーションへの HTTPS 要求を転送する。”(公式ヘルプ引用)

公式ヘルプ:専用ロードバランサアーキテクチャ

 ここがはまりどころです!!。
 HTTPリスナーコンポーネントを、デフォルト又は、変数${http.port}を指定してCloudHubにデプロイすると、ポート8081に上書きされてデプロイされます。
 Muleアプリケーションん開発者は、上書きすることを知らないで専用ロードバランサーから接続しようとすると、「502 Bad Gateway」エラーが発生し、8091でハードコーディングする方法やプロパティファイルに設定する方法、Runtime Managerに設定する方法など色々試しても、上書きされるため、かなりの労力を消費します。

 解決方法は、Backend With Proxyで利用されている${proxy.port}変数に変更することで、Cloudhubにデプロイした際にCloudHubの上書きの除外されます。

    <http:listener-config name="http-listener-config">
        <http:listener-connection host="0.0.0.0" port="${proxy.port}" protocol="HTTP"/>
    </http:listener-config>

まとめ

専用ロードバランサーからMuleアプリケーションに接続する際に一番わかりずらいのは、DLBからMuleアプリケーション間の通信だと考えています。
 マッピングルールが正しい場合、次に確認すべきはポイントはポートです。
 「設定しているのに何で接続できないの!!」と思ってしまうところなので、変数名が正しいか確認してみてください、では!

SevenstarsRock
SalesforceやMuleSoft導入のプロジェクトに関わっております。個人的に興味を持ったことを検証して記事にしています。
accenture
ストラテジー、コンサルティング、デジタル、テクノロジー、オペレーションズの5つの領域でサービスを提供する総合コンサルティング企業
https://www.accenture.com/jp-ja/new-applied-now
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away