| <?xml version='1.0' encoding='utf-8' ?> |
| <!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ |
| <!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent"> |
| %BOOK_ENTITIES; |
| ]> |
| |
| <!-- Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <section id="host-allocation"> |
| <title>Assigning VMs to Hosts</title> |
| <para>At any point in time, each virtual machine instance is running on a single host. |
| How does &PRODUCT; determine which host to place a VM on? There are several ways:</para> |
| <itemizedlist> |
| <listitem><para>Automatic default host allocation. &PRODUCT; can automatically pick |
| the most appropriate host to run each virtual machine.</para></listitem> |
| <listitem><para>Instance type preferences. &PRODUCT; administrators can specify that certain hosts should have a preference for particular types of guest instances. |
| For example, an administrator could state that a host should have a preference to run Windows guests. |
| The default host allocator will attempt to place guests of that OS type on such hosts first. |
| If no such host is available, the allocator will place the instance wherever there is sufficient physical capacity.</para></listitem> |
| <listitem><para>Vertical and horizontal allocation. |
| Vertical allocation consumes all the resources of a given host before allocating any guests on a second host. |
| This reduces power consumption in the cloud. Horizontal allocation places a guest on each host in a round-robin fashion. |
| This may yield better performance to the guests in some cases.</para></listitem> |
| <listitem><para>End user preferences. |
| Users can not control exactly which host will run a given VM instance, |
| but they can specify a zone for the VM. |
| &PRODUCT; is then restricted to allocating the VM only to one of the hosts in that zone.</para></listitem> |
| <listitem><para>Host tags. The administrator can assign tags to hosts. These tags can be used to |
| specify which host a VM should use. |
| The &PRODUCT; administrator decides whether to define host tags, then create a service offering using those tags and offer it to the user. |
| </para></listitem> |
| <listitem><para>Affinity groups. |
| By defining affinity groups and assigning VMs to them, the user or administrator can |
| influence (but not dictate) which VMs should run on separate hosts. |
| This feature is to let users specify that certain VMs won't be on the same host.</para></listitem> |
| <listitem><para>&PRODUCT; also provides a pluggable interface for adding new allocators. |
| These custom allocators can provide any policy the administrator desires.</para></listitem> |
| </itemizedlist> |
| <section id="affinity-groups"> |
| <title>Affinity Groups</title> |
| <para>By defining affinity groups and assigning VMs to them, the user or administrator can |
| influence (but not dictate) which VMs should run on separate hosts. |
| This feature is to let users specify that VMs with the same “host anti-affinity” type won’t be on the same host. |
| This serves to increase fault tolerance. |
| If a host fails, another VM offering the same service (for example, hosting the user's website) is still up and running on another host.</para> |
| <para>The scope of an affinity group is per user account.</para> |
| <formalpara><title>Creating a New Affinity Group</title> |
| <para>To add an affinity group:</para></formalpara> |
| <orderedlist> |
| <listitem><para>Log in to the &PRODUCT; UI as an administrator or user.</para></listitem> |
| <listitem><para>In the left navigation bar, click Affinity Groups.</para></listitem> |
| <listitem><para>Click Add affinity group. In the dialog box, fill in the following fields:</para> |
| <itemizedlist> |
| <listitem><para>Name. Give the group a name.</para></listitem> |
| <listitem><para>Description. Any desired text to tell more about the purpose of the group.</para></listitem> |
| <listitem><para>Type. The only supported type shipped with &PRODUCT; is Host Anti-Affinity. |
| This indicates that the VMs in this group should avoid being placed on the same VM with each other. |
| If you see other types in this list, it means that your installation of &PRODUCT; has been extended |
| with customized affinity group plugins.</para></listitem> |
| </itemizedlist> |
| </listitem> |
| </orderedlist> |
| <formalpara><title>Assign a New VM to an Affinity Group</title> |
| <para>To assign a new VM to an affinity group:</para></formalpara> |
| <itemizedlist> |
| <listitem><para>Create the VM as usual, as described in <xref linkend="creating-vms"/>. |
| In the Add Instance wizard, there is a new Affinity tab where you can select the affinity group.</para></listitem> |
| </itemizedlist> |
| <formalpara><title>Change Affinity Group for an Existing VM</title> |
| <para>To assign an existing VM to an affinity group:</para></formalpara> |
| <orderedlist> |
| <listitem><para>Log in to the &PRODUCT; UI as an administrator or user.</para></listitem> |
| <listitem><para>In the left navigation bar, click Instances.</para></listitem> |
| <listitem><para>Click the name of the VM you want to work with.</para></listitem> |
| <listitem><para>Stop the VM by clicking the Stop button.</para></listitem> |
| <listitem><para>Click the Change Affinity button. <inlinemediaobject> |
| <imageobject> |
| <imagedata fileref="./images/change-affinity-button.png"/> |
| </imageobject> |
| <textobject> |
| <phrase>change-affinity-button.png: button to assign an affinity group |
| to a virtual machine</phrase> |
| </textobject> |
| </inlinemediaobject> |
| </para></listitem> |
| </orderedlist> |
| <formalpara><title>View Members of an Affinity Group</title> |
| <para>To see which VMs are currently assigned to a particular affinity group:</para></formalpara> |
| <orderedlist> |
| <listitem><para>In the left navigation bar, click Affinity Groups.</para></listitem> |
| <listitem><para>Click the name of the group you are interested in.</para></listitem> |
| <listitem><para>Click View Instances. The members of the group are listed.</para> |
| <para>From here, you can click the name of any VM in the list to access all its details and controls.</para></listitem> |
| </orderedlist> |
| <formalpara><title>Delete an Affinity Group</title> |
| <para>To delete an affinity group:</para></formalpara> |
| <orderedlist> |
| <listitem><para>In the left navigation bar, click Affinity Groups.</para></listitem> |
| <listitem><para>Click the name of the group you are interested in.</para></listitem> |
| <listitem><para>Click Delete.</para> |
| <para>Any VM that is a member of the affinity group will be disassociated from the group. |
| The former group members will continue to run normally on the current hosts, but if the |
| VM is restarted, it will no longer follow the host allocation rules from its former |
| affinity group.</para></listitem> |
| </orderedlist> |
| </section> |
| </section> |