The key to a stable and high-performance virtualised Alfresco environment is using the proper architecture in the virtualisation hosts. Out-of-the-box settings and slow disks might work for a test environment, but specific requirements need to be met when building the host system for proper performance to be achieved. Therefore, be sure to follow these minimum requirements when you design the virtualisation host infrastructure:
- The processors must support hardware-assisted virtualization, which is available in processors that include a virtualization option. Specifically, this means processors with Intel Virtualization Technology (Intel VT) or AMD Virtualization (AMD-V) technology.
- It is advisable that Alfresco guests be deployed on a hyper-visor such as from VMWare, or Microsoft.
- Sufficient memory must be allocated for the host operating system (OS). If you’re using Hyper-V, you need to reserve at least 1GB of random access memory (RAM) for use by the Hyper-V host. If you’re using a third-party hypervisor, check with the individual provider to determine the minimum amount of memory required.
- A dedicated network interface card (NIC) should be allocated for host management. This NIC should be separate from the NICs used by the VMs.
- Use multiple independent drive arrays of disk spindles. Best practice is to allocate a dedicated set of disk spindles or storage array for the host OS, another for the guest OS virtual disks, and at least two more (logs and database volumes) for virtualized RDBM sessions.
- Fixed-size or pass-through Virtual Hard Disks (VHDs) should be used for best guest disk performance. All VHDs used by Alfresco servers should be either fixed-size or pass-through (raw device mapping) disks that are directly connected to a volume on the host storage. Pass-through disks give you the fastest performance, which is highly recommended for Alfresco servers. Fixed-size disks are faster than dynamically expanding disks, which can suffer performance hits when they’re resizing.
- Consider pass-through (Raw Device Mapping) NICs for the best network performance or, at minimum, configure virtual NICs to use a single virtual switch for Alfresco servers.
- A 2:1 ratio for the number of virtual processors to physical cores is the maximum that should be used in a production environment. A virtual host that has too many allocated virtual central processor units (CPUs) can be overloaded and perform poorly. Therefore, you need to have a 2:1 ratio (or less) for the virtual processor–to–physical core ratio. For example, if your host is a two-processor quad-core system (eight cores total), the maximum number of virtual processors that can be allocated and running at any one time is 16. If each VM is allocated four virtual processors, the number of running VMs is capped at four on that host. Highest performance environments will limit the ration to 1:1.
In addition to these technical requirements for the virtualization host, keep in mind these recommendations when you set up your virtual environment:
- You should allocate a dedicated NIC for failover, such as in the scenario when you use virtual host failover software such as Hyper-V Live Migration.
- You should give as much memory and as many processor cores to your virtual hosts as your budget allows. Virtual hosts with multiple multicore processors and large amounts of RAM (64GB or more) are becoming commonplace because of the virtual host software’s ability to take advantage of the additional resources and because host failover solutions require additional resources. When it comes to sizing virtualization hosts, there’s a sweet spot that balances the cost of the additional components against the need to have fewer hosts. Generally, the virtualization overhead required to run virtual servers is only 5 percent, so the cost of adding memory and processor cores is more than made up by the advantages of having those additional resource. Note that this does not mean that you allocate all the available memory to an Alfresco Java instance
- You should run only the virtualization software and the virtualization role on the virtual hosts. (The two exceptions are antivirus and backup software.) Overloading a virtual host with other software or other server roles can significantly degrade guest performance. In addition, from a Windows Server licensing perspective, running any roles other than the virtualization role on a Windows Server requires one additional license. However, if the host runs only virtualization host software, the host OS isn’t counted when determining the number of Windows licenses used as part of Microsoft’s virtualization licensing program. Note: I am not a MS Windows licencing expert. You may want to confirm your actual rights and obligations under your specific arrangement with Microsoft.
- For performance reasons, you shouldn’t install all the Alfresco roles and the RDBM role on the same VM. Even small environments should use at least two VMs – one for the RDBM role, and the other for the Alfresco frontend and application roles.