Since I came home from Seattle MVP Summit I have been testing the Azure hosting environment. I wanted an environment to host my web sites and my Dynamics NAV.
I created three virtual machines with two cloud services. One computer is a domain controller and the other two have identical setup with Web server, MySql server and MSSql server.
The first thing I needed to do was to plan my network. If I use the default setup then the virtual machines are not guaranteed to always have the same internal IP addresses. I am using active directory domain controller (why I will tell you later) that will act as a DNS server for all the computers.
In my Virtual Network I created a separate subnet that will host only the domain controller. The domain controller will always be given the first available IP address on that subnet and that way I can add a DNS server to my virtual network.
I created a separate cloud service for my domain controller computer and I am using it as a management computer for the others.
For the two web computers I used the Web Platform Installer to install PHP and MySql. I also installed phpMyAdmin to manage the databases. I added a master/slave relationship between the MySql servers so that every change on each of them is replicated to the other one.
I installed MSSql server 2012 on all three computers. I wanted to be able to mirror my databases and I use the domain controller MSSql server as a witness to the mirroring. The mirroring setup in MSSql is done for each database and I always have a principal database and a mirror database. When the principal database in inaccessible the roles are shifted and the mirror becomes the principal. I am hoping that Dynamics NAV will support this failover functionality soon as this is built into the MSSql native client.
I added an extra hard drive for file data and another extra hard drive for database data to the web computers. When there is a domain controller you will have the option to use DFS Replication that can automatically synchronize folders between computers. I use this functionality to replicate my web folders between the web computers.
I used phpMyAdmin to export the databases on my old host and copied that file and the web folders to my new server. I created the websites and imported my databases. At first I had PHP errors and needed to go into Handler Mappings and delete all references to PHP and then I used PHP Manager to create a new mapping.
Finally I turned to Dynamics NAV. Since I am working with Advania to set up a Dynamics NAV hosting environment I wanted to make sure the all the installation should work through PowerShell. NAVTechDays 2013 had two sessions where Microsoft employees showed that by using PowerShell they where able to install NAV on Azure and on premise.
I tried out the Example-1VM script that is provided with the NAV DVD and then started to break things down into smaller parts that would work in my private cloud. Currently I have several instances of NAV up and running and am planning to share the PowerShell scripts in another post later.
The most suprising thing is that all three machines are small machines (1 core, 1.75GB memory) and still the performance is acceptable.