AX2012 WMS Device scale out considerations
Wanted to share my thinking on scaling out the WMS solution for AX2012.
First let me draw out the technical layout of the solution and then, I will talk about how you could set this up. Below find some nice links that is worthwhile reading
As Andre wrote in his nice article on the installation you can see the basics of the setup, and the architecture.
Now when you set this up, here is what you should think about
- Where do I place my AOS, and how many
- Where do I place my IIS, and how many
Scale Option 1
AX2012 WMS is a pure IIS site that uses WCF to communicate and retrieve data from the AOS server. I basic hence this you can create as many IIS servers as you need and create yourself an NLB cluster using any load balance mechanism.
WMS is constructed so you can have multiple WEB sites (Application Pools) on the same ISS server, hosting more than on WMS site, either that connects to a specific AX application, or actually possible to multiple AX application from the same server if that was ever an idea.
Creating more WMS sites on the same server connecting to the same AX Application, to utilize your resources on the WEB server optimal is a way of optimizing performance if you have enough ressources on the server
Scale Option 2
Each of the WMS sites connects to one (1) AOS server. This makes the AOS server a single point of failure if you do not set the AOS server behind another NLB cluster, and connects to the cluster address.
However, there is a flaw on this setup, because the NLB service does not know anything about AOS port 2712, and 8201 making the NLB cluster send request to the AOS regardless if this AOS is not responding.
Install an AOS instance directly on the IIS server (will require more AOS license for the customer). With this setup you now have isolated the potential errors to one server and you can more easy monitor this setup. The rule is if the AOS server does not response, then shutdown W3SVC.
By shutting down IIS, the NLB cluster hosting the WMS site will know that the servers is not responding and stop redirecting traffic
You can use SCOM or other tools for this. I have a powershell tool for free that solves this, you can get it by contacting me at firstname.lastname@example.org (Putting it on my block later) Now having the AOS server locally there is no latency between the IIS and the AOS, hence performance should be optimal
Scale Option 3
As this is an IIS site, there are things you can do to optimize you IIS server for performance
Always do, whatever you can to performance optimize your IIS server. This includes potentially using APP Fabric.
Let me point out I have NOT tried this on WMS yet, so I do not know if this brings anything to the table, but I have set it up for Enterprise portal many times, and the nature of APP Fabric is to distribute IIS cache between ISS servers in a cluster. So if you are on a single server, do NOT consider this because it is irrelevant.
Scale Option 4
One typical scenario for the WMS is that the handheld device are used in a warehouse that not typically is located near the central AOS server installation, that especially is the case if you system is hosted somewhere outside your company. In this scenario, you have to decide where to install your components on the WAN site.
Place the AX components in the optimal way in regards of the “weakest link”, if you are using WAN optimization hardware between the sites, this potentially can help you on some of the traffic, especially on printing and Static WEB elements.
There is no conclusive way to do this so you have to test but here are three options.
Please do pay attention to the print. It seems like a minor thing. In a warehouse however, the user need the print to execute immediately, for these people 10 seconds is a long time to wait for a label or something else. My focus would be to optimize the setup for printing
Things to watch
Working with IIS is always fun! that’s why I am looking forward to AX7. So many things can go wrong. However, one of the most common mistakes on an IIS server is granting the correct access rights to the IIS server. The end-user neither the Application Pool account should never have elevated privileges.
Very often, you need to pay attention on the following local groups
- Performance Log Users
- Performance Monitor Users
Make sure that the correct accounts users have access, this includes also the application pool itself.