A cluster is defined as "a group of tightly coupled computers that work together closely so that in many respects they can be viewed as though they are a single computer" (per Wikipedia). A VMware ESX Cluster is no difference. Clusters are used for 3 things- 1) high availability, 2) load balancing, and 3) high performance computing. VMware ESX clusters are used for #1 and #2. With a VMware ESX Cluster, you define 2 or more physical machines that will provide resources for the hosts (or resource pools) that are assigned to that cluster. By using ESX clusters, you can achieve high availability (VM HA) and load balancing of virtual machines (called VMware DRS, discussed below)
Just to reiterate, here is why you use VMware ESX Clusters:
- if one of the physical hosts goes down, the other physical host starts up the virtual guests machines that the original virtual host was running (VM HA).
- if one physical host is over utilized by a virtual guest, that virtual guest is moved to the other physical host (VMware DRS, discussed in the resource pool section, below).
Both of these features use VMotion to move these virtual guests from one system to another.
How do you identify a cluster inside Virtual Center? A cluster has an icon that looks like a group of 3 servers, like this:
When you click on the Cluster icon, on the right, you will see that status of that cluster and you can configure the cluster. Here is what it looks like:
Notice how you are able to view the total CPU &Memory resources, number of hosts, total number of processors, total number of virtual machines, and the migrations that have been performed. This cluster has VMware HA and fully automated DRS enabled. That means that if any of the servers in the cluster fail, the other machines will automatically take over those virtual guests. Also, with automated DRS, the virtual guests will be automatically migrated to obtain the best possible performance for all machines, according to the resource pool settings.
So what is a resource pool?
What are VMware ESX Server Resource Pools?
A VMware ESX Resource pool is a pool of CPU and memory resources. Inside the pool, resources are allocated based on the CPU and memory shares that are defined. This pool can have associated access control and permissions.
You would want to use a pool to ensure that CPU and RAM resources are allocated fairly across systems or to ensure that certain systems are giving the resources they need to perform the tasks that the application on that server demand.Inside VMware Virtual Center, Resource pools will be shown with the "pie chart" icon, like this:
Resource pools can be contained inside Clusters. Clusters contain hosts or resource pools, and and "Datacenters" contain Hosts and Clusters.
Here you see a resource pool inside a Cluster.
When setting up a resource pool, you must configure the limit, reservation, and share settings for both CPU & Memory for all virtual guest machines in the pool. Here is what that configuration windows looks like:
Back on the Resource Allocation tab for that resource pool, you can see a summary of the resources used by each VM and how that related to the resource pool:
Adding Alarms & Permissions
You can add alarms (alerts) and permissions on both clusters and resources pools. Thus, you could create a group of users who could only manage a single resources pool of server. To add an alarm or permission at the cluster or resource pool level, just right-click on the cluster or pool.
Summary
In summary, VMware ESX Clusters & Resource Pools are very important pieces of VMware's Virtual Infrastructure (VI). To take advantage of all that VI has to offer, you must understand and properly configure VMware Clusters & Resource pools. With clusters & resource pools, you can ensure that one system doesn't run away with the resources of the others, ensure that your virtual server load is balanced, and guarantee that if a virtual server goes down, all systems in that cluster will be brought up on another physical server.