Saturday, April 14, 2018

Create and Administer Resource Pools

 Create and Administer Resource Pools


**ITEMS IN BOLD ARE TOPICS PULLED FROM THE BLUEPRINT**
Knowledge
  • Describe the Resource Pool hierarchy
    • A resource pool is a pool of resources….if only that was all there was to it.  The hierarchy of resource pools, whether talking about a standalone host or a cluster, starts at the root resource pool.  The root resource pool exists for every standalone host and DRS cluster and is not something you can see within vCenter.  By default, all resources for a host or cluster will exist in the root resource pool.
    • In the resource pool hierarchy there are three types of objects; parent resource pool, siblings and a child resource pool, with the root resource pool being the parent resource pool
    • Here is a graphical depiction of the resource pool hierarchy taken from chapter 8 of the vSphere Resource Management Guide:
 
    • The first resource pool created under the root resource pool is a child resource pool (let’s call this RP1).  RP1 is a child only to the root resource pool.  Underneath RP1 you can add virtual machines into it, and those virtual machines will get their resources from RP1 dependent upon their shares, limits, reservations or dynamic virtual machine entitlement.  A new resource pool can be added to RP1 (let’s call this new resource pool RP2).  RP2 is now a child resource pool of RP1, making RP1 a parent to RP2, but still a child resource pool of the root resource pool
    • The parent/child relationship can continue further as you nest more resource pools and virtual machines inside one another.  Any resource pool or virtual machines created at the same level as another resource pool will be known to each other as a sibling
    • The more nesting of virtual machines and resource pools you have the more complex it will be to understand, and more overhead to manage.  One KEY thing to remember; never use resource pools as an organizational tool, meaning don’t use it as a way to logically group virtual machines (use folders for this)
  • Define the Expandable Reservation parameter
    • When you enable the expandable reservation parameter it allows a child resource pool to ask its direct parent resource pool to borrow resources.  If the child resource pool runs out of resources, it is possible to still provide resources to its child pools or virtual machines by asking its parent resource pool.  Borrowing resources is recursive, meaning, if the child asks a parent, and the parent doesn’t have any, then that parent will asks its parent to borrow resources if the expandable resource parameter is set to enable.
    • That explanation can definitely get confusing, but just know that the expandable reservation allows a child resource pool to ask its parent for more resources should the child need it, and it is a recursive question if the parent resource pools going up the hierarchy have the expandable parameter set to true
  • Create/Remove a Resource Pool
    • Let’s create a resource pool under a cluster that only has the root resource pool (the cluster itself is the root resource pool)
    • Create a Resource Pool
        1. Log in to vCenter using the VI Client
        2. Navigate to the Host and Clusters view (View > Inventory > Hosts and Clusters)
        3. Right-click on the DRS cluster you want to create the resource pool in and select New Resource Pool… — if you don’t see this option then you must enable DRS for this cluster
        4. Enter in a descriptive name for the resource pool in the Name field
        5. Allocate CPU resources
          1. Allocate CPU shares for the resource pool: shares are only relative to siblings that share the same parent resource pool
            1. Low
            2. Normal
            3. High
            4. Custom – set the number of shares
          2. Use the slider to set a CPU reservation for the resource pool
            1. Is represented in MHz
            2. Represents the minimum amount of CPU resources this resource pool should have
            3. Choose whether to enable/disable expandable reservations by checking/unchecking the Expandable Reservation checkbox
            4. Enable/disable maximum CPU resources by checking/unchecking the Unlimited checkbox.  If disabled, set a maximum for CPU resources this resource pool is allowed to have represented in MHz
        6. Allocate Memory Resources
          1. Allocate Memory shares for the resource pool: shares are only relative to siblings that share the same parent resource pool
            1. Low
            2. Normal
            3. High
            4. Custom – set the number of shares
          2. Use the slider to set a memory reservation for the resource poo
            1. Is represented in MB
            2. Represents the minimum amount of CPU resources this resource pool should have
          3. Choose whether to enable/disable expandable reservations by checking/unchecking the Expandable Reservation checkbox
          4. Enable/disable maximum CPU resources by checking/unchecking the Unlimited checkbox.  If disabled, set a maximum for CPU resources this resource pool is allowed to have represented, in MHz
        7. Click OK when finished
    • Remove a Resource Pool
        1. Log in to vCenter using the VI Client
        2. Navigate to the Host and Clusters view (View > Inventory > Hosts and Clusters)
        3. Right-click on the resource pool you want to remove and select Remove
        4. Click Yes to confirm the removal operation
  • Configure Resource Pool attributes
    • Configuring attributes for a resource pool means changing the same attributes you configured when creating the resource pool.  The attributes you can change are:  the resource pool name, CPU and Memory shares, CPU and Memory reservation, CPU and Memory limits and set CPU and Memory expandable reservations.  Here is how to do it
    • Configuring Resource Pool Attributes
        1. Log in to vCenter using the VI Client
        2. Navigate to the Host and Clusters view (View > Inventory > Hosts and Clusters)
        3. Right-click on the resource pool you want to edit and select Edit Settings…
        4. Change the name if desired
        5. Change the CPU SharesReservationExpandable Reservation and Limit if desired
        6. Change the Memory SharesReservationExpandable Reservation and Limit if desired
        7. Click OK or Cancel when finished
  • Add/Remove virtual machines from a Resource Pool
    • Adding a Virtual Machine to a Resource Pool – the virtual machines reservations and limits do not change
        1. Log in to vCenter using the VI Client
        2. Navigate to the Host and Clusters view (View > Inventory > Hosts and Clusters)
        3. When you create a new virtual machine one of the pages in the wizard will allow you to specify a resource pool to place the virtual machine into
        4. If you create a new resource pool and want to add existing virtual machines to it you can drag-and-drop a virtual machine into a resource pool as long as you have the proper permissions
          1. If the resource pool does not have enough resources to guarantee the virtual machine reservation(s) then the move into the resource pool will fail (applies only to a powered-on virtual machine)
    • Removing a Virtual Machine from a Resource Pool
        1. Log in to vCenter using the VI Client
        2. Navigate to the Host and Clusters view (View > Inventory > Hosts and Clusters)
        3. Drag-and-drop the virtual machine into another resource pool.  Dragging it into the root of the DRS cluster will move it into the root resource pool
        4. If you no longer need the virtual machine power it off and delete it from disk or remove from inventory – this will also remove the virtual machine from a resource pool
  • Determine Resource Pool requirements for a given vSphere implementation
    • As you may have noticed a sort of theme to this blueprint, anytime you are trying to determine requirements for a certain function always has the same general answer “it depends” and resource pool requirements are no different
    • Before you can determine your resource pool requirements you need to define the workloads that will be running in your environment and their associated priority within the organization
    • Resource pools are used to segment your resources, whether by organization, workload or some other business requirement/process.  Once you define the workloads and their requirements, you can start to divide up the resources within the host or DRS cluster and begin to carve out resources into pools in a way that is efficient and is able to meet the requirements of the workloads running on said host or DRS cluster
    • Determine if your resource pools need to reach out to their parent resource pools should they need to provide more resources then they are allocated (expandable reservations)
    • Determine the need for reservations or limits.  I strongly recommend NOT using per-virtual machine reservations as they add a lot of administrative overhead and don’t play well with certain HA admission control policies (host failures the cluster tolerates).  If you are going to set a reservation, do it at the resource pool level
  • Evaluate appropriate shares, reservations and limits for a Resource Pool based on virtual machine workloads
    • Evaluating appropriate shares, reservations and limits for a resource pool based on virtual machine workloads directly relates to the previous section and the same pre-requisite applies; KNOW YOUR WORKLOADS!  If you don’t know what is happening in your environment and what your virtual machines require to operate efficiently and effectively, your vSphere implementation will most likely fail
    • I briefly defined what shares, reservations, and limits were previously, but let’s really dig into them now
      • Shares:  The amounts of shares you allocate to a resource pool are relative to the shares of any sibling (virtual machine or resource pool) and relative to its parent’s total resources.  Remember, a sibling is a virtual machine or resource pool that shares the same parent (receives resource from the same parent resource pool).  When resources are allocated, shares only matter when there is contention.  Contention occurs if you have overcommitted the resources in your DRS cluster (assigned more resources then you have) or during short-term spikes of workloads, which is normal.  Rule of thumb, allocate more shares to your higher priority workloads and don’t over-commit your resources unless you absolutely have to
      • Reservations:  Again, reservations are the minimum amount of resources the resource pool will get.  When you set a CPU or Memory reservation for a resource pool, those reservations are subtracted from the parent’s available resources, making them unavailable to other siblings.  If you have virtual machines that you need to guarantee a certain amount of resources for, reserve them in a resource pool and add those virtual machines to the resource pool
      • Expandable Reservations:  Using expandable reservations gives you flexibility.  If a virtual machine’s workload increases and its resource pool cannot allocate more resources because there aren’t any available, the resource pool will asks its parent resource pool to borrow resources.  Resource pools that have virtual machines with spiking workloads may consider enabling expandable reservations
      • Limits:  Limits is the maximum amount of resources a resource pool can have.  If you set a 16GB memory limit for a resource pool, it will never receive anymore than 16GB.  There aren’t too many use cases to limit a resource pool, but one use case maybe a workload within a virtual machine that will utilize any and all resources it can get its hands on and you can’t configure it otherwise, setting a limit on the resource pool is an option you may want to entertain

  • Clone a vApp
    • Clone a vApp
        1. Log in to vCenter using the VI Client
        2. Navigate to the Host and Clusters view (View > Inventory > Hosts and Clusters)
        3. Right-click on the vApp you want to clone and select Clone…
        4. Select a host, cluster or resource pool for the vApp to run on/in > click Next
        5. Enter in a name for the vApp in the vApp Name field
        6. Choose an inventory location for the vApp (which vDatacenter and folder) > click Next
        7. Select where you want to store the new vApp, choose a datastore or datastore cluster > click Next
        8. Choose the disk format you want to use
          1. Same format as source
          2. Thin provisioned format
          3. Thick format
        9. Click Next
        10. Map the networks for the new vApp – select the destination networks you want the new vApp to operate (source networks of original vApp are also displayed) by selecting the network from the drop down under the Destination Networks column > click Next
        11. Click Finish

No comments:

Post a Comment