Well, this post will be split it up in multiple posts – I guess otherwise it’ll be too big and readers will get scared 😉. It’s difficult to provide a short “TL;DR” for that series. But if you’re interested in this topic I guess it might be a good idea to come back for updates anyway.
At some point I’ll mark this post as finished, so you’ll know when to not expect updates anymore. Update: I added Part 3, which concludes this series for the moment. There still might be updates in the future, but they will be more irregular from now on.
Heads-up: not all links might work already. This series is a work in progress. I’ll update whenever I have time, but the preparation for everything is taking too much time. So if it seems that something is missing, please either leave a comment or be a little bit more patient.
What is this about?
During the last year I had a project with some requirements I didn’t know how to handle right away. The basic requirement was: create an auto-scaling load-balanced three-tier-setup for Business Central on Azure.
So, obviously, in the beginning I did some searching. And, well, I found a couple of posts, articles, etc. that cover general three-tier-setup of NAV/Business Central. I also found some posts/articles regarding load-balancing of Dynamics NAV on Azure. But I couldn’t find anything good on using Scale Sets (to automatically add VMs during increased load) together with a Load Balancer and how to configure everything, so that it works completely automated. Not to mention the many issues you encounter (e.g. when using Windows-authentication instead of UserPassword-auth when the service tier is behind a load balancer).
Since I’m not that easily to scare, I (or better we, as a company) took that project and I started figuring out how to achieve the desired requirement. In the end it all worked out (somehow), but you might know the problem with v. 0.0.0.1 solutions (especially if you had no idea in the beginning where it was headed): they typically suck.
That’s why I took the hundreds of scripts, notes, config-files, etc. and started working on a solution that will give us reproducable results, a stable setup and an easily usable configuration.
The bigger Picture
You might ask yourself: why this blog post(-series)? Well, first of all it was a way for me to wrap my head about this whole topic in a more structured way. Because of the previous project I knew what I needed in the end and I wanted to create a repeatable solution and help others to avoid the same problems I had. I love sharing knowledge and think it’ll only advance the whole community if we all do so.
So, what will you get when you follow-through this series? In the end you’ll only have to provide one file with parameters and execute a script to have a Resource Group on Azure that contains the following:
- automatically prepared Images for 3 Tier Architecture setup of Business Central
- pre-configured VM Scale Sets for Application Servers and Web Servers that almost need no manual configuration (depending on your parameters)
- completely configured Load Balancers, so that you’ll only connect to the Load Balancer, no matter if is one machine or 200 machines in the backend
- a pre-configured Application Gateway that makes your Webclient available over Internet, without exposing any of your internal network
- and some more components
If you want, the demo script will provide you with a complete, ready-to-use, demo environment in around 1 hour. To give you an idea of the setup it creates, the following picture shows you a part of the generated components with the Network Diagram-tool from Azure:
The created demo environment contains
- a sample Domain (which contains a Domain Controller VM, a Load Balancer, a Public IP and an Availability Set) (the used template comes from here and is part of the “Azure Quickstart Templates” from Microsoft)
- an SQL Server (a simple SQL Server setup; find the template here in my repository) which contains the desired Business Central Demo Database
- temporary VM on which Business Central will be installed as Application Server (“temporary”, because this VM will be generalized and used the create the image, which will be used as a basis for the Scale Set; after Image-generation it’ll be deleted)
- temporary VM on which Business Central Webclient will be installed (another image source)
- 2 Scale Sets (for Tier 2 (Application) and Tier 3 (Web))
- a KeyVault and a Storage Account, which will be used to provide configuration data
Here you find the links to the different parts of this series. I’ll add more as soon as I can and when it’s done, the last link will be marked, so that you know that this series is finished.
- Part 1: Module, Template and Process Overview
- Part 2: Create the Demo Environment
- Part 3: Update and Final Thoughts
I’m looking forward to your feedback and hope this series helps others with their tasks or creates other great solutions.
And if you stumble upon this 5 years from today (like I did with many old posts I found): please don’t hesitate anyway to leave a quick comment 😊