With the Microsoft Azure platform gaining traction in the enterprise space, many Boomi customers are looking to run their Atoms, Molecules, and Clouds on it. I wanted to share my experiences with installing a Linux Molecule cluster on Azure, focusing mainly on the Azure storage and infrastructure setup.
First create a Resource group. This helps you in organizing your infrastructure.
Going forward, whenever you see an option for Resource group, chose the one you have created.
The most important and the first obvious question is "How do I set up the storage account?"
Log into your Azure Account and search for "storage accounts", if you do not have it as your favorite.
Click on +Add and "Fill in the blanks". Make a NOTE of the Location, as all other resources, will have to be part of the same location.
Once the storage has been created and deployed. Go back, to the storage and add the file share by clicking on the "Files" icon.
The below screen opens up. Now, click on +File Share. Provide a name and the quota and click Create.
Once this has been successfully created and deployed. Click on the "File Share again". The below screen will show up. You can increase the quota, at a later point by clicking ...More. The most important part here is the Connect:
Click Connect. The below screen pops up. Make a note of the connection string, we will using this, once our VMs are up.
This is where the storage is located and the access key is available by going back to "storage accounts" and then clicking on "Access keys". Copy this and replace [storage account access key] in the above string.
Now we have the Storage account set up!
Spinning up VMs
Let's spin the first VM now, NOTE: Make note of the "VPN" and "Security Group" which gets created by default. You can override these if you have already created one or you can "rename" the default ones to something more meaningful. Either way, these need to be consistent across all the VMs and so does the "Diagnostics storage account".
Create a new VM. You can choose any, I don't have a reason to explain why I chose Ubuntu. Click Create:
"Fill in the blanks". Be mindful of the "Resource group" and "Location". This needs to match your "storage account" settings from above:
Choose a size. I just went with the default:
Next is the most crucial step. One small quirk: first choose "Diagnostics storage account" to the "storage account" we created.
Choose if you have already created Virtual Network, Availability Set and Network Security group, otherwise go with the default. Make note of these because you will have to use the same values in the other VMs. You can leave everything else to its default values.
Quick side note: If you plan to publish web services on your molecule, be sure to choose a High availability "Availability Set" at the time of creating the virtual machine because you cannot go back and choose one after the fact.
Now, let's configure the "Network Security Groups". Search for "Network Security Groups" and find the security group that was part of your VM:
You don't have to make any changes to the this, as by default Azure allows for inter-network communication. You can add new rules if needed. That's it! Now, we can SSH into the VM.
SSH into VM
Azure supports SMB (cifs) and not NFS. Once logged in, run the following: "sudo apt-get install cifs-util" and create a directory to link the storage. Now, we will go back to the "Connect" String and replace [mount point] with the folder name and run the command here. Once, successful you will have the storage directory, you are UP AND RUNNING.
Repeat the same steps for other VMs. Be sure to have the Virtual Network, Network Security group, and Diagnostics storage account consistent for all the VMs.
In each of the VMs create "usergroup" and "user" for molecule install and configure the storage to "auto-mount".
From here on, the installation is similar to installing a molecule on any Linux box. Refer to Molecule installation checklist (Linux) .
In conclusion, the installation of a two node molecule with Azure support took us less than an hour. Azure native managed PaaS solution for a file service (Azure Files) is based on SMB/CIFS and currently does not support NFS. Azure Files can be mounted on both Windows and Linux machines. Azure is making a considerable investment in enhancing their platform and I am confident they will start supporting NFS in the future. Depending on the use case, there could be a performance tradeoff between an SMB/CIFS and an NFS solution. For this, Azure supports running NFS solutions on IaaS through a Partner Solution (vSIOS DataKeeper, Nasuni, and SoftNAS) or as a self-managed cluster (GlusterFS on a Linux VM) running on IaaS VM. We encourage testing of the specific use case to determine if using an NFS solution is needed. Else enjoy the Storage Account!