0

I'm looking for the advice of how to manually (i.e. without using Runtime Manager - RM) deploy a mule application package on the on-premises Mule cluster. The official documentation suggests using the RM for the purpose either via the gui or cli or api. However, the RM is not available on our environment.

I can manually deploy the package on a single node by copying it to the /apps folder. But this way the application is only deployed on a single node, not on the cluster.
I've tried using the AMC agent rest API for the purpose with the same result - it only deploys on a single node.

So, what's the correct way of manually deploying a mule application on the Mule servers cluster without using Anypoint RM?

We are on Mule 4.4 EE.

aled
  • 21,330
  • 3
  • 27
  • 34
spoonboy
  • 2,570
  • 5
  • 32
  • 56
  • Please expand acronyms. They are making the question hard to understand. – aled Aug 09 '22 at 03:29
  • RM - Runtime Manager API - application programming interface – spoonboy Aug 09 '22 at 04:14
  • REST API is clear enough in the context of MuleSoft products, but RM is ambiguous. The Agent is really the Anypoint Runtime Manager Agent, not AMC Agent, nevermind the installer name. You can see that that the link to the documentation says "Runtime Manager agent REST API". – aled Aug 09 '22 at 11:30

2 Answers2

1

Copy the application jar file into the apps directory of every node. Mule clusters do not transfer applications between nodes.

Alternatively ou can use the Runtime Manager Agent instead however it also works in a per node basis. You need to send the same request to each node to deploy.

Each connector may or may not be cluster aware. Read each connector documentation to understand how they behave. In particular the documentation of the VM connector states:

When running in cluster mode, persistent queues are instead backed by the memory grid. This means that when a Mule flow uses VM Connector to publish content to a queue, Mule runtime engine (Mule) decides whether to process that message in the same origin node or to send it out to the cluster to be picked up and processed by another node.

aled
  • 21,330
  • 3
  • 27
  • 34
  • Will the apps connectors synchronised across the nodes if deployed this way? For example, only a single VM sub should be negotiated when an app is running on a cluster. – spoonboy Aug 09 '22 at 04:24
  • Depends on the connector. I'm not sure what do you mean by VM subs but the VM connector will work in a distributed manner in a cluster. – aled Aug 09 '22 at 10:24
  • I have updated my answer with more details. – aled Aug 09 '22 at 12:16
  • Thank you for the response. Basically, you are saying that there is no way to manually deploy on a cluster and the only option is to deploy on each individual node by one of the ways described in the question itself. I'll keep the question open as may be someone knows an alternative. I would expect the cluster deployment function to be provided by MuleSoft. – spoonboy Aug 09 '22 at 20:46
  • The only alternative is to use Runtime Manager to deploy to manage the cluster. There is no other option. A Mule cluster has some very specific features and deployment across the whole cluster is not one. – aled Aug 10 '22 at 03:29
  • This looks like a gap in the Mule cluster functionality. The cluster itself doesn't require RM. But to deploy an app on the cluster you need the RM. Otherwise, you have to manually re-deploy all the apps on each additional node. This does not make much sense to me. There are must be some applications synchronisation mechanism imbedded into the cluster support logic. – spoonboy Aug 10 '22 at 05:43
  • Deploying to a cluster is feature of Runtime Manager, not a feature of Mule runtime. That's simply a fact. – aled Aug 10 '22 at 10:09
-1

You can register the multiple nodes through AMC agent on the cloudhub control plane and create a server group and deploy code through control plain runtime manager it does the job of deployment to same app in n nodes

  • The question was about possibility of deploying on the cluster "without using Runtime Manager - RM" – spoonboy Aug 18 '22 at 00:24