I’ve seen a lot of chatter lately about virtualizing Cisco Unified Communications Manager (CUCM) and other applications on Twitter. It seems that installing CUCM in a VM for the purposes of study or replicating a customer environment is a popular option, since the CUCM software can be powered up at will and doesn’t require a rack full of application servers. However, when attempting to install CUCM in a VM, there are some things that need to be taken into consideration. This isn’t necessarily going to be a step-by-step guide to the installation of a virtual CUCM system. If you’re looking for that, I suggest you head over to http://www.blindhog.net and check out some of their excellent resources. They even have some play-by-play videos that you can follow along with. That being said, here are some things to keep in mind when virtualizing your CUCM cluster.
1. Make sure your VM specs match the requirements. The biggest roadblock to the installation of CUCM in VMware is matching your server specs to the requirements. For the installation of CUCM or Unity Connection, you are going to need to reserve a minimum of 2GB of RAM and a 72 GB hard disk. Note that the RAM requirement is in addition to the RAM requirement of your workstation if you are installing your VM in VMware Workstation. If the CUCM installer can’t see 2GB of RAM when it checks your hardware specs, it will quit and notify you that you don’t appear to be installing on a supported system. Once you have completed the installation of CUCM, you can reduce the RAM of the VM to 1GB with no serious effects besides things running a little bit slower inside your CUCM environment. If your laptop only has 2GB of RAM, it’s probably time for an upgrade if you want to try and run CUCM in VMware Workstation. The hard disk requirements are just as strict. 72GB is the minimum needed for installation. I’ve never really had any luck with using thin provisioning on the volume, so I always pre-allocate the space when I create the VM in order to be sure to not have any errors during installation. For the record, if you are trying to install a CUCM Business Edition (CUCMBE) system in a VM, the minimum specs required are 6GB of RAM and 147GB of disk space. Anything less will cause the installer to think you are installing on something other than a 7828 server and only offer you the choice of CUCM or Unity Connection, not the combined CUCMBE. For the purposes of VM labbing and learning, it’s actually slightly more efficient to run CUCM and Connection in two separate VMs and integrate them together rather than using CUCMBE.
2. Know the licensing caveats. Ever since CUCM 5.x was released, the reality of licensing has been present with us. As I previously talked about, there are three types of licensing on a CUCM server. Each of these licenses are tied to a MAC address. In the versions of CUCM from 5.x all the way up to 7.0, this MAC address was the physical MAC address of the first NIC in the CUCM server. If you wanted to install new licenses on the system, you had to ensure they were tied to the MAC of the first node, usually the publisher. Once people started installing CUCM in a VM, which wasn’t officially supported in the 7.x train but was possible, it became apparent that a simple MAC licensing scheme wasn’t going to cut it any more, since a VM can be programmed with a specific MAC address fairly easily. Around the time 7.1(2) was released, Cisco changed their licensing structure to use something called a “License MAC address”. To prevent unscrupulous users from simple changing the MAC address of their VM and moving the system to new hardware, the License MAC performs a hash calculation of the following user-defined settings at install time:
- Time zone
- NTP server 1 (or “none”)
- NIC speed (or “auto”)
- IP Address (or “dhcp”)
- IP Mask (or “dhcp”)
- Gateway Address (or “dhcp”)
- Primary DNS (or “dhcp”)
- SMTP server (or “none”)
- Certificate Information (Organization, Unit, Location, State, Country)
Once these values are determined, a 12-character MAC-like address is kicked out and used for the MAC in the license files. If you want to see what address is generated after installation time, you can run the show status command from the server CLI. You can also use this handy answer file generator on Cisco’s website ahead of time. That way, you can have your license MAC ready ahead of time in case you need to move your hardware. In a lab scenario, however, you’re probably best to either do with the demo license files that are installed with the basic CUCM system or have some other licenses rehosted on the new CUCM VM. The demo license includes one node license and 150 Device License Units (DLUs) for phone registration, so they should cover most small deployments. The only side effect is the presence of red text on the home page alerting you to the fact you are running your cluster on demo licensing. If you want to implement a customer’s environment in a VM for testing, I’m not sure how you would do that if they have more than one CUCM node or more than 150 DLUs. I’ve been asking Cisco about this for quite some time, but I haven’t found any answers yet.
3. Be ready for the support issues. If you are trying to virtualize CUCM on any version prior to 8.x, you are going to find support hard to come by. When the VM boots up, you need to agree to a notice telling you that this is not a supported scenario and no TAC assistance is available. The SNMP service doesn’t work properly on the pre-8.x versions in VMware, so that function will be unavailable. Most of the hardware related issues or strange error messages are hard to decode, and since most people doing this are learning CUCM for the first time, it can be mystifying to figure out if this message is something normal or something caused by VMware. The best resource I’ve found is at the aforementioned http://www.blindhog.net website. The comments on their virtualizing CUCM posts are almost like a set of forums for some of the error messages you might see.
As long as you keep these things in mind when going through your installation, you shouldn’t run into any premature issues. Those can be saved for all the fun you’re going to run into once you get the server installed and are trying to figure out calling search spaces and media resource group lists. If you have any questions about virtualizing CUCM, don’t hesitate to leave a comment. I’m going to work on more scenarios for virtualizing CUCM, so hopefully I’ll have some more posts on this in the future.