When working with Citrix XenServer 5.5 in a small to medium-sized environment, solutions providers can just add servers and watch them appear in the XenCenter management interface. But if your customer's environment grows bigger, you'll start to dislike the disorganized manner in which it displays virtual resources. In this case, working with resource pools can be a solution, and this article will show you exactly how you'll benefit from using XenServer resource pools.
Solution providers should know that XenServer hosts can be placed in a resource pool. Using a resource pool allows you to have more flexibility in your XenServer environment. Instead of putting virtual machines (VMs) on specific hosts, you can run them on a server and manage them from the resource pool. In this configuration, your customers also need shared storage. Using a combination of shared storage and hosts allows you to run VMs anywhere within the resource pool. The only requirement is that the VM's host has enough resources available for running a virtual machine.
With resource pools, you can also use XenMotion or high availability. By using either of these technologies, you can move VMs between hosts in the same resource pool. A maximum of 16 hosts are supported per resource pool. XenMotion doesn't enforce this restriction in any way, but it is a good idea to stick to it. Having too many hosts in a resource pool only makes managing it more difficult.
Resource pool requirements
The most important requirement for creating a resource pool is that the pool must consist of XenServer hosts that are using the same CPUs and running the same version of the XenServer software. You don't need to have an exact match for CPUs, but you have to use CPUs that are created by the same vendor and have the same features.
There are some operational requirements as well. First, you need to decide which server is going to be the master server in the resource pool. The master server should not be a member of another existing resource pool, and it should not be configured for shared storage or have any VMs currently on it. Basically, you can add a new XenServer host to a new resource pool, but it's not a good idea to add an existing VM host.
Another resource pool requirement is shared storage. A XenServer resource pool allows you to manage multiple XenServer hosts as one entity, thus allowing you to do an easy migration of VMs from one host to another. But that does require the hosts to have access to the same shared storage on a network. Therefore, it is a good idea to set up the shared storage first and then add hosts to the resource pool.
Creating resource pools
To create a resource pool, you can use either the XenCenter management console or the command-line interface. Creating a pool from the XenCenter command-line interface (Figure 1) is easy: Open the Pool menu, select New Pool, click Next, then enter a name and a description for the new pool. After adding the new pool, click Next to add new servers to the resource pool. A list of all the available servers is accessible from the graphical interface.
Figure 1 -- Creating a resource pool from the XenCenter interface
A common problem that arises when adding servers to a new resource pool is that you might not see any available servers. Most of the time, that's because the servers are already in the resource pool that was created by default. If that occurs, there are two options for getting the servers into the resource pool. One option is to right-click on the server from the XenCenter interface and select Remove Server from Pool (Figure 2).
However, choosing this option has a lot of consequences. It permanently deletes the server from the current pool, reinitializes all local storage and reboots the server. So, basically, removing a server from a current pool means that you have to start its installation all over again. Make sure that this really is what you want to do before clicking OK to remove a server from its current pool!
Figure 2 -- Generally, removing a server from its current resource pool is not recommended.
A much better approach is to only add new servers to a resource pool upon installation. Doing so ensures that the management database of that server is properly added to the database of the resource pool and everything is neatly integrated.
A resource pool functions as a management domain, where you can use XenMotion or high availability between the hosts in the resource pool. However, using multiple resource pools also means separating hosts into multiple groups. Therefore, solutions providers should use multiple resource pools only if they want a clear separation between the different hosts in the resource pool.
About the expert
Sander van Vugt is an independent trainer and consultant living in the Netherlands. Van Vugt is an expert in Linux high availability, virtualization and performance and has completed several projects that implement all three. He is also the writer of various Linux-related books, such as Beginning the Linux Command Line, Beginning Ubuntu Server Administration and Pro Ubuntu Server Administration.