doc: Import configuration reference
Import the following files from the former config-reference [1]: api.rst cells.rst fibre-channel.rst hypervisor-basics.rst hypervisor-hyper-v.rst hypervisor-kvm.rst hypervisor-lxc.rst hypervisor-qemu.rst hypervisor-virtuozzo.rst hypervisor-vmware.rst hypervisor-xen-api.rst hypervisor-xen-libvirt.rst hypervisors.rst index.rst iscsi-offload.rst logs.rst resize.rst samples/api-paste.ini.rst samples/index.rst samples/policy.yaml.rst samples/rootwrap.conf.rst schedulers.rst The below files are skipped as they're already included, in slightly different forms, in the nova documentation. config-options.rst nova-conf-samples.rst nova-conf.rst nova.conf Part of bp: doc-migration Change-Id: I145e38149bf20a5e068f8cfe913f90c7ebeaad36
This commit is contained in:
parent
6b21efbc7f
commit
da224b3a05
25
doc/source/admin/configuration/api.rst
Normal file
25
doc/source/admin/configuration/api.rst
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
=========================
|
||||||
|
Compute API configuration
|
||||||
|
=========================
|
||||||
|
|
||||||
|
The Compute API, run by the ``nova-api`` daemon, is the component of OpenStack
|
||||||
|
Compute that receives and responds to user requests, whether they be direct API
|
||||||
|
calls, or via the CLI tools or dashboard.
|
||||||
|
|
||||||
|
Configure Compute API password handling
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The OpenStack Compute API enables users to specify an administrative password
|
||||||
|
when they create or rebuild a server instance. If the user does not specify a
|
||||||
|
password, a random password is generated and returned in the API response.
|
||||||
|
|
||||||
|
In practice, how the admin password is handled depends on the hypervisor in use
|
||||||
|
and might require additional configuration of the instance. For example, you
|
||||||
|
might have to install an agent to handle the password setting. If the
|
||||||
|
hypervisor and instance configuration do not support setting a password at
|
||||||
|
server create time, the password that is returned by the create API call is
|
||||||
|
misleading because it was ignored.
|
||||||
|
|
||||||
|
To prevent this confusion, use the ``enable_instance_password`` configuration
|
||||||
|
option to disable the return of the admin password for installations that do
|
||||||
|
not support setting instance passwords.
|
295
doc/source/admin/configuration/cells.rst
Normal file
295
doc/source/admin/configuration/cells.rst
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
==========
|
||||||
|
Cells (v1)
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Configuring and implementing Cells v1 is not recommended for new deployments
|
||||||
|
of the Compute service (nova). Cells v2 replaces cells v1, and v2 is
|
||||||
|
required to install or upgrade the Compute service to the 15.0.0 Ocata
|
||||||
|
release. More information on cells v2 can be found in :doc:`/user/cells`.
|
||||||
|
|
||||||
|
`Cells` functionality enables you to scale an OpenStack Compute cloud in a more
|
||||||
|
distributed fashion without having to use complicated technologies like
|
||||||
|
database and message queue clustering. It supports very large deployments.
|
||||||
|
|
||||||
|
When this functionality is enabled, the hosts in an OpenStack Compute cloud are
|
||||||
|
partitioned into groups called cells. Cells are configured as a tree. The
|
||||||
|
top-level cell should have a host that runs a ``nova-api`` service, but no
|
||||||
|
``nova-compute`` services. Each child cell should run all of the typical
|
||||||
|
``nova-*`` services in a regular Compute cloud except for ``nova-api``. You can
|
||||||
|
think of cells as a normal Compute deployment in that each cell has its own
|
||||||
|
database server and message queue broker.
|
||||||
|
|
||||||
|
The ``nova-cells`` service handles communication between cells and selects
|
||||||
|
cells for new instances. This service is required for every cell. Communication
|
||||||
|
between cells is pluggable, and currently the only option is communication
|
||||||
|
through RPC.
|
||||||
|
|
||||||
|
Cells scheduling is separate from host scheduling. ``nova-cells`` first picks
|
||||||
|
a cell. Once a cell is selected and the new build request reaches its
|
||||||
|
``nova-cells`` service, it is sent over to the host scheduler in that cell and
|
||||||
|
the build proceeds as it would have without cells.
|
||||||
|
|
||||||
|
Cell configuration options
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. todo:: This is duplication. We should be able to use the
|
||||||
|
oslo.config.sphinxext module to generate this for us
|
||||||
|
|
||||||
|
Cells are disabled by default. All cell-related configuration options appear in
|
||||||
|
the ``[cells]`` section in ``nova.conf``. The following cell-related options
|
||||||
|
are currently supported:
|
||||||
|
|
||||||
|
``enable``
|
||||||
|
Set to ``True`` to turn on cell functionality. Default is ``false``.
|
||||||
|
|
||||||
|
``name``
|
||||||
|
Name of the current cell. Must be unique for each cell.
|
||||||
|
|
||||||
|
``capabilities``
|
||||||
|
List of arbitrary ``key=value`` pairs defining capabilities of the current
|
||||||
|
cell. Values include ``hypervisor=xenserver;kvm,os=linux;windows``.
|
||||||
|
|
||||||
|
``call_timeout``
|
||||||
|
How long in seconds to wait for replies from calls between cells.
|
||||||
|
|
||||||
|
``scheduler_filter_classes``
|
||||||
|
Filter classes that the cells scheduler should use. By default, uses
|
||||||
|
``nova.cells.filters.all_filters`` to map to all cells filters included with
|
||||||
|
Compute.
|
||||||
|
|
||||||
|
``scheduler_weight_classes``
|
||||||
|
Weight classes that the scheduler for cells uses. By default, uses
|
||||||
|
``nova.cells.weights.all_weighers`` to map to all cells weight algorithms
|
||||||
|
included with Compute.
|
||||||
|
|
||||||
|
``ram_weight_multiplier``
|
||||||
|
Multiplier used to weight RAM. Negative numbers indicate that Compute should
|
||||||
|
stack VMs on one host instead of spreading out new VMs to more hosts in the
|
||||||
|
cell. The default value is 10.0.
|
||||||
|
|
||||||
|
Configure the API (top-level) cell
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The cell type must be changed in the API cell so that requests can be proxied
|
||||||
|
through ``nova-cells`` down to the correct cell properly. Edit the
|
||||||
|
``nova.conf`` file in the API cell, and specify ``api`` in the ``cell_type``
|
||||||
|
key:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
compute_api_class=nova.compute.cells_api.ComputeCellsAPI
|
||||||
|
# ...
|
||||||
|
|
||||||
|
[cells]
|
||||||
|
cell_type= api
|
||||||
|
|
||||||
|
Configure the child cells
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Edit the ``nova.conf`` file in the child cells, and specify ``compute`` in the
|
||||||
|
``cell_type`` key:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
# Disable quota checking in child cells. Let API cell do it exclusively.
|
||||||
|
quota_driver=nova.quota.NoopQuotaDriver
|
||||||
|
|
||||||
|
[cells]
|
||||||
|
cell_type = compute
|
||||||
|
|
||||||
|
Configure the database in each cell
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Before bringing the services online, the database in each cell needs to be
|
||||||
|
configured with information about related cells. In particular, the API cell
|
||||||
|
needs to know about its immediate children, and the child cells must know about
|
||||||
|
their immediate agents. The information needed is the ``RabbitMQ`` server
|
||||||
|
credentials for the particular cell.
|
||||||
|
|
||||||
|
Use the :command:`nova-manage cell create` command to add this information to
|
||||||
|
the database in each cell:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# nova-manage cell create -h
|
||||||
|
usage: nova-manage cell create [-h] [--name <name>]
|
||||||
|
[--cell_type <parent|api|child|compute>]
|
||||||
|
[--username <username>] [--password <password>]
|
||||||
|
[--broker_hosts <broker_hosts>]
|
||||||
|
[--hostname <hostname>] [--port <number>]
|
||||||
|
[--virtual_host <virtual_host>]
|
||||||
|
[--woffset <float>] [--wscale <float>]
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
--name <name> Name for the new cell
|
||||||
|
--cell_type <parent|api|child|compute>
|
||||||
|
Whether the cell is parent/api or child/compute
|
||||||
|
--username <username>
|
||||||
|
Username for the message broker in this cell
|
||||||
|
--password <password>
|
||||||
|
Password for the message broker in this cell
|
||||||
|
--broker_hosts <broker_hosts>
|
||||||
|
Comma separated list of message brokers in this cell.
|
||||||
|
Each Broker is specified as hostname:port with both
|
||||||
|
mandatory. This option overrides the --hostname and
|
||||||
|
--port options (if provided).
|
||||||
|
--hostname <hostname>
|
||||||
|
Address of the message broker in this cell
|
||||||
|
--port <number> Port number of the message broker in this cell
|
||||||
|
--virtual_host <virtual_host>
|
||||||
|
The virtual host of the message broker in this cell
|
||||||
|
--woffset <float>
|
||||||
|
--wscale <float>
|
||||||
|
|
||||||
|
As an example, assume an API cell named ``api`` and a child cell named
|
||||||
|
``cell1``.
|
||||||
|
|
||||||
|
Within the ``api`` cell, specify the following ``RabbitMQ`` server information:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
rabbit_host=10.0.0.10
|
||||||
|
rabbit_port=5672
|
||||||
|
rabbit_username=api_user
|
||||||
|
rabbit_password=api_passwd
|
||||||
|
rabbit_virtual_host=api_vhost
|
||||||
|
|
||||||
|
Within the ``cell1`` child cell, specify the following ``RabbitMQ`` server
|
||||||
|
information:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
rabbit_host=10.0.1.10
|
||||||
|
rabbit_port=5673
|
||||||
|
rabbit_username=cell1_user
|
||||||
|
rabbit_password=cell1_passwd
|
||||||
|
rabbit_virtual_host=cell1_vhost
|
||||||
|
|
||||||
|
You can run this in the API cell as root:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# nova-manage cell create --name cell1 --cell_type child \
|
||||||
|
--username cell1_user --password cell1_passwd --hostname 10.0.1.10 \
|
||||||
|
--port 5673 --virtual_host cell1_vhost --woffset 1.0 --wscale 1.0
|
||||||
|
|
||||||
|
Repeat the previous steps for all child cells.
|
||||||
|
|
||||||
|
In the child cell, run the following, as root:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# nova-manage cell create --name api --cell_type parent \
|
||||||
|
--username api_user --password api_passwd --hostname 10.0.0.10 \
|
||||||
|
--port 5672 --virtual_host api_vhost --woffset 1.0 --wscale 1.0
|
||||||
|
|
||||||
|
To customize the Compute cells, use the configuration option settings
|
||||||
|
documented above.
|
||||||
|
|
||||||
|
Cell scheduling configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To determine the best cell to use to launch a new instance, Compute uses a set
|
||||||
|
of filters and weights defined in the ``/etc/nova/nova.conf`` file. The
|
||||||
|
following options are available to prioritize cells for scheduling:
|
||||||
|
|
||||||
|
``scheduler_filter_classes``
|
||||||
|
List of filter classes. By default ``nova.cells.filters.all_filters``
|
||||||
|
is specified, which maps to all cells filters included with Compute
|
||||||
|
(see the section called :ref:`Filters <compute-scheduler-filters>`).
|
||||||
|
|
||||||
|
``scheduler_weight_classes``
|
||||||
|
List of weight classes. By default ``nova.cells.weights.all_weighers`` is
|
||||||
|
specified, which maps to all cell weight algorithms included with Compute.
|
||||||
|
The following modules are available:
|
||||||
|
|
||||||
|
``mute_child``
|
||||||
|
Downgrades the likelihood of child cells being chosen for scheduling
|
||||||
|
requests, which haven't sent capacity or capability updates in a while.
|
||||||
|
Options include ``mute_weight_multiplier`` (multiplier for mute children;
|
||||||
|
value should be negative).
|
||||||
|
|
||||||
|
``ram_by_instance_type``
|
||||||
|
Select cells with the most RAM capacity for the instance type being
|
||||||
|
requested. Because higher weights win, Compute returns the number of
|
||||||
|
available units for the instance type requested. The
|
||||||
|
``ram_weight_multiplier`` option defaults to 10.0 that adds to the weight
|
||||||
|
by a factor of 10.
|
||||||
|
|
||||||
|
Use a negative number to stack VMs on one host instead of spreading
|
||||||
|
out new VMs to more hosts in the cell.
|
||||||
|
|
||||||
|
``weight_offset``
|
||||||
|
Allows modifying the database to weight a particular cell. You can use this
|
||||||
|
when you want to disable a cell (for example, '0'), or to set a default
|
||||||
|
cell by making its ``weight_offset`` very high (for example,
|
||||||
|
``999999999999999``). The highest weight will be the first cell to be
|
||||||
|
scheduled for launching an instance.
|
||||||
|
|
||||||
|
Additionally, the following options are available for the cell scheduler:
|
||||||
|
|
||||||
|
``scheduler_retries``
|
||||||
|
Specifies how many times the scheduler tries to launch a new instance when no
|
||||||
|
cells are available (default=10).
|
||||||
|
|
||||||
|
``scheduler_retry_delay``
|
||||||
|
Specifies the delay (in seconds) between retries (default=2).
|
||||||
|
|
||||||
|
As an admin user, you can also add a filter that directs builds to a particular
|
||||||
|
cell. The ``policy.json`` file must have a line with
|
||||||
|
``"cells_scheduler_filter:TargetCellFilter" : "is_admin:True"`` to let an admin
|
||||||
|
user specify a scheduler hint to direct a build to a particular cell.
|
||||||
|
|
||||||
|
Optional cell configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Cells store all inter-cell communication data, including user names and
|
||||||
|
passwords, in the database. Because the cells data is not updated very
|
||||||
|
frequently, use the ``[cells]cells_config`` option to specify a JSON file to
|
||||||
|
store cells data. With this configuration, the database is no longer consulted
|
||||||
|
when reloading the cells data. The file must have columns present in the Cell
|
||||||
|
model (excluding common database fields and the ``id`` column). You must
|
||||||
|
specify the queue connection information through a ``transport_url`` field,
|
||||||
|
instead of ``username``, ``password``, and so on.
|
||||||
|
|
||||||
|
The ``transport_url`` has the following form::
|
||||||
|
|
||||||
|
rabbit://USERNAME:PASSWORD@HOSTNAME:PORT/VIRTUAL_HOST
|
||||||
|
|
||||||
|
The scheme can only be ``rabbit``.
|
||||||
|
|
||||||
|
The following sample shows this optional configuration:
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"parent": {
|
||||||
|
"name": "parent",
|
||||||
|
"api_url": "http://api.example.com:8774",
|
||||||
|
"transport_url": "rabbit://rabbit.example.com",
|
||||||
|
"weight_offset": 0.0,
|
||||||
|
"weight_scale": 1.0,
|
||||||
|
"is_parent": true
|
||||||
|
},
|
||||||
|
"cell1": {
|
||||||
|
"name": "cell1",
|
||||||
|
"api_url": "http://api.example.com:8774",
|
||||||
|
"transport_url": "rabbit://rabbit1.example.com",
|
||||||
|
"weight_offset": 0.0,
|
||||||
|
"weight_scale": 1.0,
|
||||||
|
"is_parent": false
|
||||||
|
},
|
||||||
|
"cell2": {
|
||||||
|
"name": "cell2",
|
||||||
|
"api_url": "http://api.example.com:8774",
|
||||||
|
"transport_url": "rabbit://rabbit2.example.com",
|
||||||
|
"weight_offset": 0.0,
|
||||||
|
"weight_scale": 1.0,
|
||||||
|
"is_parent": false
|
||||||
|
}
|
||||||
|
}
|
28
doc/source/admin/configuration/fibre-channel.rst
Normal file
28
doc/source/admin/configuration/fibre-channel.rst
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
=================================
|
||||||
|
Configuring Fibre Channel Support
|
||||||
|
=================================
|
||||||
|
|
||||||
|
Fibre Channel support in OpenStack Compute is remote block storage attached to
|
||||||
|
compute nodes for VMs.
|
||||||
|
|
||||||
|
.. todo:: This below statement needs to be verified for current release
|
||||||
|
|
||||||
|
Fibre Channel supported only the KVM hypervisor.
|
||||||
|
|
||||||
|
Compute and Block Storage support Fibre Channel automatic zoning on Brocade and
|
||||||
|
Cisco switches. On other hardware Fibre Channel arrays must be pre-zoned or
|
||||||
|
directly attached to the KVM hosts.
|
||||||
|
|
||||||
|
KVM host requirements
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
You must install these packages on the KVM host:
|
||||||
|
|
||||||
|
``sysfsutils``
|
||||||
|
Nova uses the ``systool`` application in this package.
|
||||||
|
|
||||||
|
``sg3-utils`` or ``sg3_utils``
|
||||||
|
Nova uses the ``sg_scan`` and ``sginfo`` applications.
|
||||||
|
|
||||||
|
Installing the ``multipath-tools`` or ``device-mapper-multipath`` package is
|
||||||
|
optional.
|
14
doc/source/admin/configuration/hypervisor-basics.rst
Normal file
14
doc/source/admin/configuration/hypervisor-basics.rst
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
===============================
|
||||||
|
Hypervisor Configuration Basics
|
||||||
|
===============================
|
||||||
|
|
||||||
|
The node where the ``nova-compute`` service is installed and operates on the
|
||||||
|
same node that runs all of the virtual machines. This is referred to as the
|
||||||
|
compute node in this guide.
|
||||||
|
|
||||||
|
By default, the selected hypervisor is KVM. To change to another hypervisor,
|
||||||
|
change the ``virt_type`` option in the ``[libvirt]`` section of ``nova.conf``
|
||||||
|
and restart the ``nova-compute`` service.
|
||||||
|
|
||||||
|
Specific options for particular hypervisors can be found in
|
||||||
|
the following sections.
|
464
doc/source/admin/configuration/hypervisor-hyper-v.rst
Normal file
464
doc/source/admin/configuration/hypervisor-hyper-v.rst
Normal file
@ -0,0 +1,464 @@
|
|||||||
|
===============================
|
||||||
|
Hyper-V virtualization platform
|
||||||
|
===============================
|
||||||
|
|
||||||
|
.. todo:: This is really installation guide material and should probably be
|
||||||
|
moved.
|
||||||
|
|
||||||
|
It is possible to use Hyper-V as a compute node within an OpenStack Deployment.
|
||||||
|
The ``nova-compute`` service runs as ``openstack-compute``, a 32-bit service
|
||||||
|
directly upon the Windows platform with the Hyper-V role enabled. The necessary
|
||||||
|
Python components as well as the ``nova-compute`` service are installed
|
||||||
|
directly onto the Windows platform. Windows Clustering Services are not needed
|
||||||
|
for functionality within the OpenStack infrastructure. The use of the Windows
|
||||||
|
Server 2012 platform is recommend for the best experience and is the platform
|
||||||
|
for active development. The following Windows platforms have been tested as
|
||||||
|
compute nodes:
|
||||||
|
|
||||||
|
- Windows Server 2012
|
||||||
|
- Windows Server 2012 R2 Server and Core (with the Hyper-V role enabled)
|
||||||
|
- Hyper-V Server
|
||||||
|
|
||||||
|
Hyper-V configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The only OpenStack services required on a Hyper-V node are ``nova-compute`` and
|
||||||
|
``neutron-hyperv-agent``. Regarding the resources needed for this host you have
|
||||||
|
to consider that Hyper-V will require 16 GB - 20 GB of disk space for the OS
|
||||||
|
itself, including updates. Two NICs are required, one connected to the
|
||||||
|
management network and one to the guest data network.
|
||||||
|
|
||||||
|
The following sections discuss how to prepare the Windows Hyper-V node for
|
||||||
|
operation as an OpenStack compute node. Unless stated otherwise, any
|
||||||
|
configuration information should work for the Windows 2012 and 2012 R2
|
||||||
|
platforms.
|
||||||
|
|
||||||
|
Local storage considerations
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
The Hyper-V compute node needs to have ample storage for storing the virtual
|
||||||
|
machine images running on the compute nodes. You may use a single volume for
|
||||||
|
all, or partition it into an OS volume and VM volume.
|
||||||
|
|
||||||
|
.. _configure-ntp-windows:
|
||||||
|
|
||||||
|
Configure NTP
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Network time services must be configured to ensure proper operation of the
|
||||||
|
OpenStack nodes. To set network time on your Windows host you must run the
|
||||||
|
following commands:
|
||||||
|
|
||||||
|
.. code-block:: bat
|
||||||
|
|
||||||
|
C:\>net stop w32time
|
||||||
|
C:\>w32tm /config /manualpeerlist:pool.ntp.org,0x8 /syncfromflags:MANUAL
|
||||||
|
C:\>net start w32time
|
||||||
|
|
||||||
|
Keep in mind that the node will have to be time synchronized with the other
|
||||||
|
nodes of your OpenStack environment, so it is important to use the same NTP
|
||||||
|
server. Note that in case of an Active Directory environment, you may do this
|
||||||
|
only for the AD Domain Controller.
|
||||||
|
|
||||||
|
Configure Hyper-V virtual switching
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
Information regarding the Hyper-V virtual Switch can be found in the `Hyper-V
|
||||||
|
Virtual Switch Overview`__.
|
||||||
|
|
||||||
|
To quickly enable an interface to be used as a Virtual Interface the
|
||||||
|
following PowerShell may be used:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> $if = Get-NetIPAddress -IPAddress 192* | Get-NetIPInterface
|
||||||
|
PS C:\> New-VMSwitch -NetAdapterName $if.ifAlias -Name YOUR_BRIDGE_NAME -AllowManagementOS $false
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
It is very important to make sure that when you are using a Hyper-V node
|
||||||
|
with only 1 NIC the -AllowManagementOS option is set on ``True``, otherwise
|
||||||
|
you will lose connectivity to the Hyper-V node.
|
||||||
|
|
||||||
|
__ https://technet.microsoft.com/en-us/library/hh831823.aspx
|
||||||
|
|
||||||
|
Enable iSCSI initiator service
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
To prepare the Hyper-V node to be able to attach to volumes provided by cinder
|
||||||
|
you must first make sure the Windows iSCSI initiator service is running and
|
||||||
|
started automatically.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> Set-Service -Name MSiSCSI -StartupType Automatic
|
||||||
|
PS C:\> Start-Service MSiSCSI
|
||||||
|
|
||||||
|
Configure shared nothing live migration
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
Detailed information on the configuration of live migration can be found in
|
||||||
|
`this guide`__
|
||||||
|
|
||||||
|
The following outlines the steps of shared nothing live migration.
|
||||||
|
|
||||||
|
#. The target host ensures that live migration is enabled and properly
|
||||||
|
configured in Hyper-V.
|
||||||
|
|
||||||
|
#. The target host checks if the image to be migrated requires a base VHD and
|
||||||
|
pulls it from the Image service if not already available on the target host.
|
||||||
|
|
||||||
|
#. The source host ensures that live migration is enabled and properly
|
||||||
|
configured in Hyper-V.
|
||||||
|
|
||||||
|
#. The source host initiates a Hyper-V live migration.
|
||||||
|
|
||||||
|
#. The source host communicates to the manager the outcome of the operation.
|
||||||
|
|
||||||
|
The following three configuration options are needed in order to support
|
||||||
|
Hyper-V live migration and must be added to your ``nova.conf`` on the Hyper-V
|
||||||
|
compute node:
|
||||||
|
|
||||||
|
* This is needed to support shared nothing Hyper-V live migrations. It is used
|
||||||
|
in ``nova/compute/manager.py``.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
instances_shared_storage = False
|
||||||
|
|
||||||
|
* This flag is needed to support live migration to hosts with different CPU
|
||||||
|
features. This flag is checked during instance creation in order to limit the
|
||||||
|
CPU features used by the VM.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
limit_cpu_features = True
|
||||||
|
|
||||||
|
* This option is used to specify where instances are stored on disk.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
instances_path = DRIVELETTER:\PATH\TO\YOUR\INSTANCES
|
||||||
|
|
||||||
|
Additional Requirements:
|
||||||
|
|
||||||
|
* Hyper-V 2012 R2 or Windows Server 2012 R2 with Hyper-V role enabled
|
||||||
|
|
||||||
|
* A Windows domain controller with the Hyper-V compute nodes as domain members
|
||||||
|
|
||||||
|
* The instances_path command-line option/flag needs to be the same on all hosts
|
||||||
|
|
||||||
|
* The ``openstack-compute`` service deployed with the setup must run with
|
||||||
|
domain credentials. You can set the service credentials with:
|
||||||
|
|
||||||
|
.. code-block:: bat
|
||||||
|
|
||||||
|
C:\>sc config openstack-compute obj="DOMAIN\username" password="password"
|
||||||
|
|
||||||
|
__ https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/manage/Use-live-migration-without-Failover-Clustering-to-move-a-virtual-machine
|
||||||
|
|
||||||
|
How to setup live migration on Hyper-V
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
To enable 'shared nothing live' migration, run the 3 instructions below on each
|
||||||
|
Hyper-V host:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> Enable-VMMigration
|
||||||
|
PS C:\> Set-VMMigrationNetwork IP_ADDRESS
|
||||||
|
PS C:\> Set-VMHost -VirtualMachineMigrationAuthenticationTypeKerberos
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Replace the ``IP_ADDRESS`` with the address of the interface which will
|
||||||
|
provide live migration.
|
||||||
|
|
||||||
|
Additional Reading
|
||||||
|
------------------
|
||||||
|
|
||||||
|
This article clarifies the various live migration options in Hyper-V:
|
||||||
|
|
||||||
|
`Hyper-V Live Migration of Yesterday
|
||||||
|
<https://ariessysadmin.blogspot.ro/2012/04/hyper-v-live-migration-of-windows.html>`_
|
||||||
|
|
||||||
|
Install nova-compute using OpenStack Hyper-V installer
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
In case you want to avoid all the manual setup, you can use Cloudbase
|
||||||
|
Solutions' installer. You can find it here:
|
||||||
|
|
||||||
|
`HyperVNovaCompute_Beta download
|
||||||
|
<https://www.cloudbase.it/downloads/HyperVNovaCompute_Beta.msi>`_
|
||||||
|
|
||||||
|
The tool installs an independent Python environment in order to avoid conflicts
|
||||||
|
with existing applications, and dynamically generates a ``nova.conf`` file
|
||||||
|
based on the parameters provided by you.
|
||||||
|
|
||||||
|
The tool can also be used for an automated and unattended mode for deployments
|
||||||
|
on a massive number of servers. More details about how to use the installer and
|
||||||
|
its features can be found here:
|
||||||
|
|
||||||
|
`Cloudbase <https://www.cloudbase.it>`_
|
||||||
|
|
||||||
|
.. _windows-requirements:
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Python
|
||||||
|
------
|
||||||
|
|
||||||
|
Python 2.7 32bit must be installed as most of the libraries are not working
|
||||||
|
properly on the 64bit version.
|
||||||
|
|
||||||
|
**Setting up Python prerequisites**
|
||||||
|
|
||||||
|
#. Download and install Python 2.7 using the MSI installer from here:
|
||||||
|
|
||||||
|
`python-2.7.3.msi download
|
||||||
|
<https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi>`_
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> $src = "https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi"
|
||||||
|
PS C:\> $dest = "$env:temp\python-2.7.3.msi"
|
||||||
|
PS C:\> Invoke-WebRequest –Uri $src –OutFile $dest
|
||||||
|
PS C:\> Unblock-File $dest
|
||||||
|
PS C:\> Start-Process $dest
|
||||||
|
|
||||||
|
#. Make sure that the ``Python`` and ``Python\Scripts`` paths are set up in the
|
||||||
|
``PATH`` environment variable.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> $oldPath = [System.Environment]::GetEnvironmentVariable("Path")
|
||||||
|
PS C:\> $newPath = $oldPath + ";C:\python27\;C:\python27\Scripts\"
|
||||||
|
PS C:\> [System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::User
|
||||||
|
|
||||||
|
Python dependencies
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
The following packages need to be downloaded and manually installed:
|
||||||
|
|
||||||
|
``setuptools``
|
||||||
|
https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe
|
||||||
|
|
||||||
|
``pip``
|
||||||
|
https://pip.pypa.io/en/latest/installing/
|
||||||
|
|
||||||
|
``PyMySQL``
|
||||||
|
http://codegood.com/download/10/
|
||||||
|
|
||||||
|
``PyWin32``
|
||||||
|
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20217/pywin32-217.win32-py2.7.exe
|
||||||
|
|
||||||
|
``Greenlet``
|
||||||
|
http://www.lfd.uci.edu/~gohlke/pythonlibs/#greenlet
|
||||||
|
|
||||||
|
``PyCryto``
|
||||||
|
http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
|
||||||
|
|
||||||
|
The following packages must be installed with pip:
|
||||||
|
|
||||||
|
* ``ecdsa``
|
||||||
|
* ``amqp``
|
||||||
|
* ``wmi``
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> pip install ecdsa
|
||||||
|
PS C:\> pip install amqp
|
||||||
|
PS C:\> pip install wmi
|
||||||
|
|
||||||
|
Other dependencies
|
||||||
|
------------------
|
||||||
|
|
||||||
|
``qemu-img`` is required for some of the image related operations. You can get
|
||||||
|
it from here: http://qemu.weilnetz.de/. You must make sure that the
|
||||||
|
``qemu-img`` path is set in the PATH environment variable.
|
||||||
|
|
||||||
|
Some Python packages need to be compiled, so you may use MinGW or Visual
|
||||||
|
Studio. You can get MinGW from here: http://sourceforge.net/projects/mingw/.
|
||||||
|
You must configure which compiler is to be used for this purpose by using the
|
||||||
|
``distutils.cfg`` file in ``$Python27\Lib\distutils``, which can contain:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[build]
|
||||||
|
compiler = mingw32
|
||||||
|
|
||||||
|
As a last step for setting up MinGW, make sure that the MinGW binaries'
|
||||||
|
directories are set up in PATH.
|
||||||
|
|
||||||
|
Install nova-compute
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Download the nova code
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
#. Use Git to download the necessary source code. The installer to run Git on
|
||||||
|
Windows can be downloaded here:
|
||||||
|
|
||||||
|
https://github.com/msysgit/msysgit/releases/download/Git-1.9.2-preview20140411/Git-1.9.2-preview20140411.exe
|
||||||
|
|
||||||
|
#. Download the installer. Once the download is complete, run the installer and
|
||||||
|
follow the prompts in the installation wizard. The default should be
|
||||||
|
acceptable for the purposes of this guide.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> $src = "https://github.com/msysgit/msysgit/releases/download/Git-1.9.2-preview20140411/Git-1.9.2-preview20140411.exe"
|
||||||
|
PS C:\> $dest = "$env:temp\Git-1.9.2-preview20140411.exe"
|
||||||
|
PS C:\> Invoke-WebRequest –Uri $src –OutFile $dest
|
||||||
|
PS C:\> Unblock-File $dest
|
||||||
|
PS C:\> Start-Process $dest
|
||||||
|
|
||||||
|
#. Run the following to clone the nova code.
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> git.exe clone https://git.openstack.org/openstack/nova
|
||||||
|
|
||||||
|
Install nova-compute service
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
To install ``nova-compute``, run:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> cd c:\nova
|
||||||
|
PS C:\> python setup.py install
|
||||||
|
|
||||||
|
Configure nova-compute
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The ``nova.conf`` file must be placed in ``C:\etc\nova`` for running OpenStack
|
||||||
|
on Hyper-V. Below is a sample ``nova.conf`` for Windows:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
auth_strategy = keystone
|
||||||
|
image_service = nova.image.glance.GlanceImageService
|
||||||
|
compute_driver = nova.virt.hyperv.driver.HyperVDriver
|
||||||
|
volume_api_class = nova.volume.cinder.API
|
||||||
|
fake_network = true
|
||||||
|
instances_path = C:\Program Files (x86)\OpenStack\Instances
|
||||||
|
use_cow_images = true
|
||||||
|
force_config_drive = false
|
||||||
|
injected_network_template = C:\Program Files (x86)\OpenStack\Nova\etc\interfaces.template
|
||||||
|
policy_file = C:\Program Files (x86)\OpenStack\Nova\etc\policy.json
|
||||||
|
mkisofs_cmd = C:\Program Files (x86)\OpenStack\Nova\bin\mkisofs.exe
|
||||||
|
allow_resize_to_same_host = true
|
||||||
|
running_deleted_instance_action = reap
|
||||||
|
running_deleted_instance_poll_interval = 120
|
||||||
|
resize_confirm_window = 5
|
||||||
|
resume_guests_state_on_host_boot = true
|
||||||
|
rpc_response_timeout = 1800
|
||||||
|
lock_path = C:\Program Files (x86)\OpenStack\Log\
|
||||||
|
rpc_backend = nova.openstack.common.rpc.impl_kombu
|
||||||
|
rabbit_host = IP_ADDRESS
|
||||||
|
rabbit_port = 5672
|
||||||
|
rabbit_userid = guest
|
||||||
|
rabbit_password = Passw0rd
|
||||||
|
logdir = C:\Program Files (x86)\OpenStack\Log\
|
||||||
|
logfile = nova-compute.log
|
||||||
|
instance_usage_audit = true
|
||||||
|
instance_usage_audit_period = hour
|
||||||
|
use_neutron = True
|
||||||
|
[glance]
|
||||||
|
api_servers = http://IP_ADDRESS:9292
|
||||||
|
[neutron]
|
||||||
|
url = http://IP_ADDRESS:9696
|
||||||
|
auth_strategy = keystone
|
||||||
|
admin_tenant_name = service
|
||||||
|
admin_username = neutron
|
||||||
|
admin_password = Passw0rd
|
||||||
|
admin_auth_url = http://IP_ADDRESS:35357/v2.0
|
||||||
|
[hyperv]
|
||||||
|
vswitch_name = newVSwitch0
|
||||||
|
limit_cpu_features = false
|
||||||
|
config_drive_inject_password = false
|
||||||
|
qemu_img_cmd = C:\Program Files (x86)\OpenStack\Nova\bin\qemu-img.exe
|
||||||
|
config_drive_cdrom = true
|
||||||
|
dynamic_memory_ratio = 1
|
||||||
|
enable_instance_metrics_collection = true
|
||||||
|
[rdp]
|
||||||
|
enabled = true
|
||||||
|
html5_proxy_base_url = https://IP_ADDRESS:4430
|
||||||
|
|
||||||
|
Prepare images for use with Hyper-V
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
Hyper-V currently supports only the VHD and VHDX file format for virtual
|
||||||
|
machine instances. Detailed instructions for installing virtual machines on
|
||||||
|
Hyper-V can be found here:
|
||||||
|
|
||||||
|
`Create Virtual Machines
|
||||||
|
<http://technet.microsoft.com/en-us/library/cc772480.aspx>`_
|
||||||
|
|
||||||
|
Once you have successfully created a virtual machine, you can then upload the
|
||||||
|
image to `glance` using the `openstack-client`:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> openstack image create --name "VM_IMAGE_NAME" --property hypervisor_type=hyperv --public \
|
||||||
|
--container-format bare --disk-format vhd
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
VHD and VHDX files sizes can be bigger than their maximum internal size,
|
||||||
|
as such you need to boot instances using a flavor with a slightly bigger
|
||||||
|
disk size than the internal size of the disk file.
|
||||||
|
To create VHDs, use the following PowerShell cmdlet:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> New-VHD DISK_NAME.vhd -SizeBytes VHD_SIZE
|
||||||
|
|
||||||
|
Inject interfaces and routes
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
The ``interfaces.template`` file describes the network interfaces and routes
|
||||||
|
available on your system and how to activate them. You can specify the location
|
||||||
|
of the file with the ``injected_network_template`` configuration option in
|
||||||
|
``/etc/nova/nova.conf``.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
injected_network_template = PATH_TO_FILE
|
||||||
|
|
||||||
|
A default template exists in ``nova/virt/interfaces.template``.
|
||||||
|
|
||||||
|
Run Compute with Hyper-V
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
To start the ``nova-compute`` service, run this command from a console in the
|
||||||
|
Windows server:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> C:\Python27\python.exe c:\Python27\Scripts\nova-compute --config-file c:\etc\nova\nova.conf
|
||||||
|
|
||||||
|
Troubleshoot Hyper-V configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* I ran the :command:`nova-manage service list` command from my controller;
|
||||||
|
however, I'm not seeing smiley faces for Hyper-V compute nodes, what do I do?
|
||||||
|
|
||||||
|
Verify that you are synchronized with a network time source. For
|
||||||
|
instructions about how to configure NTP on your Hyper-V compute node, see
|
||||||
|
:ref:`configure-ntp-windows`.
|
||||||
|
|
||||||
|
* How do I restart the compute service?
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> net stop nova-compute && net start nova-compute
|
||||||
|
|
||||||
|
* How do I restart the iSCSI initiator service?
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
PS C:\> net stop msiscsi && net start msiscsi
|
372
doc/source/admin/configuration/hypervisor-kvm.rst
Normal file
372
doc/source/admin/configuration/hypervisor-kvm.rst
Normal file
@ -0,0 +1,372 @@
|
|||||||
|
===
|
||||||
|
KVM
|
||||||
|
===
|
||||||
|
|
||||||
|
.. todo:: This is really installation guide material and should probably be
|
||||||
|
moved.
|
||||||
|
|
||||||
|
KVM is configured as the default hypervisor for Compute.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
This document contains several sections about hypervisor selection. If you
|
||||||
|
are reading this document linearly, you do not want to load the KVM module
|
||||||
|
before you install ``nova-compute``. The ``nova-compute`` service depends
|
||||||
|
on qemu-kvm, which installs ``/lib/udev/rules.d/45-qemu-kvm.rules``, which
|
||||||
|
sets the correct permissions on the ``/dev/kvm`` device node.
|
||||||
|
|
||||||
|
To enable KVM explicitly, add the following configuration options to the
|
||||||
|
``/etc/nova/nova.conf`` file:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
compute_driver = libvirt.LibvirtDriver
|
||||||
|
|
||||||
|
[libvirt]
|
||||||
|
virt_type = kvm
|
||||||
|
|
||||||
|
The KVM hypervisor supports the following virtual machine image formats:
|
||||||
|
|
||||||
|
* Raw
|
||||||
|
* QEMU Copy-on-write (QCOW2)
|
||||||
|
* QED Qemu Enhanced Disk
|
||||||
|
* VMware virtual machine disk format (vmdk)
|
||||||
|
|
||||||
|
This section describes how to enable KVM on your system. For more information,
|
||||||
|
see the following distribution-specific documentation:
|
||||||
|
|
||||||
|
* `Fedora: Virtualization Getting Started Guide <http://docs.fedoraproject.org/
|
||||||
|
en-US/Fedora/22/html/Virtualization_Getting_Started_Guide/index.html>`_
|
||||||
|
from the Fedora 22 documentation.
|
||||||
|
* `Ubuntu: KVM/Installation <https://help.ubuntu.com/community/KVM/
|
||||||
|
Installation>`_ from the Community Ubuntu documentation.
|
||||||
|
* `Debian: Virtualization with KVM <http://static.debian-handbook.info/browse/
|
||||||
|
stable/sect.virtualization.html#idp11279352>`_ from the Debian handbook.
|
||||||
|
* `Red Hat Enterprise Linux: Installing virtualization packages on an existing
|
||||||
|
Red Hat Enterprise Linux system <http://docs.redhat.com/docs/en-US/
|
||||||
|
Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_
|
||||||
|
Installation_Guide/sect-Virtualization_Host_Configuration_and_Guest_Installa
|
||||||
|
tion_Guide-Host_Installation-Installing_KVM_packages_on_an_existing_Red_Hat_
|
||||||
|
Enterprise_Linux_system.html>`_ from the ``Red Hat Enterprise Linux
|
||||||
|
Virtualization Host Configuration and Guest Installation Guide``.
|
||||||
|
* `openSUSE: Installing KVM <http://doc.opensuse.org/documentation/html/
|
||||||
|
openSUSE/opensuse-kvm/cha.kvm.requires.html#sec.kvm.requires.install>`_
|
||||||
|
from the openSUSE Virtualization with KVM manual.
|
||||||
|
* `SLES: Installing KVM <https://www.suse.com/documentation/sles-12/book_virt/
|
||||||
|
data/sec_vt_installation_kvm.html>`_ from the SUSE Linux Enterprise Server
|
||||||
|
``Virtualization Guide``.
|
||||||
|
|
||||||
|
Enable KVM
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
The following sections outline how to enable KVM based hardware virtualization
|
||||||
|
on different architectures and platforms. To perform these steps, you must be
|
||||||
|
logged in as the ``root`` user.
|
||||||
|
|
||||||
|
For x86 based systems
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
#. To determine whether the ``svm`` or ``vmx`` CPU extensions are present, run
|
||||||
|
this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# grep -E 'svm|vmx' /proc/cpuinfo
|
||||||
|
|
||||||
|
This command generates output if the CPU is capable of
|
||||||
|
hardware-virtualization. Even if output is shown, you might still need to
|
||||||
|
enable virtualization in the system BIOS for full support.
|
||||||
|
|
||||||
|
If no output appears, consult your system documentation to ensure that your
|
||||||
|
CPU and motherboard support hardware virtualization. Verify that any
|
||||||
|
relevant hardware virtualization options are enabled in the system BIOS.
|
||||||
|
|
||||||
|
The BIOS for each manufacturer is different. If you must enable
|
||||||
|
virtualization in the BIOS, look for an option containing the words
|
||||||
|
``virtualization``, ``VT``, ``VMX``, or ``SVM``.
|
||||||
|
|
||||||
|
#. To list the loaded kernel modules and verify that the ``kvm`` modules are
|
||||||
|
loaded, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# lsmod | grep kvm
|
||||||
|
|
||||||
|
If the output includes ``kvm_intel`` or ``kvm_amd``, the ``kvm`` hardware
|
||||||
|
virtualization modules are loaded and your kernel meets the module
|
||||||
|
requirements for OpenStack Compute.
|
||||||
|
|
||||||
|
If the output does not show that the ``kvm`` module is loaded, run this
|
||||||
|
command to load it:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# modprobe -a kvm
|
||||||
|
|
||||||
|
Run the command for your CPU. For Intel, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# modprobe -a kvm-intel
|
||||||
|
|
||||||
|
For AMD, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# modprobe -a kvm-amd
|
||||||
|
|
||||||
|
Because a KVM installation can change user group membership, you might need
|
||||||
|
to log in again for changes to take effect.
|
||||||
|
|
||||||
|
If the kernel modules do not load automatically, use the procedures listed
|
||||||
|
in these subsections.
|
||||||
|
|
||||||
|
If the checks indicate that required hardware virtualization support or kernel
|
||||||
|
modules are disabled or unavailable, you must either enable this support on the
|
||||||
|
system or find a system with this support.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Some systems require that you enable VT support in the system BIOS. If you
|
||||||
|
believe your processor supports hardware acceleration but the previous
|
||||||
|
command did not produce output, reboot your machine, enter the system BIOS,
|
||||||
|
and enable the VT option.
|
||||||
|
|
||||||
|
If KVM acceleration is not supported, configure Compute to use a different
|
||||||
|
hypervisor, such as ``QEMU`` or ``Xen``. See :ref:`compute_qemu` or
|
||||||
|
:ref:`compute_xen_api` for details.
|
||||||
|
|
||||||
|
These procedures help you load the kernel modules for Intel-based and AMD-based
|
||||||
|
processors if they do not load automatically during KVM installation.
|
||||||
|
|
||||||
|
.. rubric:: Intel-based processors
|
||||||
|
|
||||||
|
If your compute host is Intel-based, run these commands as root to load the
|
||||||
|
kernel modules:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# modprobe kvm
|
||||||
|
# modprobe kvm-intel
|
||||||
|
|
||||||
|
Add these lines to the ``/etc/modules`` file so that these modules load on
|
||||||
|
reboot:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
kvm
|
||||||
|
kvm-intel
|
||||||
|
|
||||||
|
.. rubric:: AMD-based processors
|
||||||
|
|
||||||
|
If your compute host is AMD-based, run these commands as root to load the
|
||||||
|
kernel modules:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# modprobe kvm
|
||||||
|
# modprobe kvm-amd
|
||||||
|
|
||||||
|
Add these lines to ``/etc/modules`` file so that these modules load on reboot:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
kvm
|
||||||
|
kvm-amd
|
||||||
|
|
||||||
|
For POWER based systems
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
KVM as a hypervisor is supported on POWER system's PowerNV platform.
|
||||||
|
|
||||||
|
#. To determine if your POWER platform supports KVM based virtualization run
|
||||||
|
the following command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# cat /proc/cpuinfo | grep PowerNV
|
||||||
|
|
||||||
|
If the previous command generates the following output, then CPU supports
|
||||||
|
KVM based virtualization.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
platform: PowerNV
|
||||||
|
|
||||||
|
If no output is displayed, then your POWER platform does not support KVM
|
||||||
|
based hardware virtualization.
|
||||||
|
|
||||||
|
#. To list the loaded kernel modules and verify that the ``kvm`` modules are
|
||||||
|
loaded, run the following command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# lsmod | grep kvm
|
||||||
|
|
||||||
|
If the output includes ``kvm_hv``, the ``kvm`` hardware virtualization
|
||||||
|
modules are loaded and your kernel meets the module requirements for
|
||||||
|
OpenStack Compute.
|
||||||
|
|
||||||
|
If the output does not show that the ``kvm`` module is loaded, run the
|
||||||
|
following command to load it:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# modprobe -a kvm
|
||||||
|
|
||||||
|
For PowerNV platform, run the following command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# modprobe -a kvm-hv
|
||||||
|
|
||||||
|
Because a KVM installation can change user group membership, you might need
|
||||||
|
to log in again for changes to take effect.
|
||||||
|
|
||||||
|
Configure Compute backing storage
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Backing Storage is the storage used to provide the expanded operating system
|
||||||
|
image, and any ephemeral storage. Inside the virtual machine, this is normally
|
||||||
|
presented as two virtual hard disks (for example, ``/dev/vda`` and ``/dev/vdb``
|
||||||
|
respectively). However, inside OpenStack, this can be derived from one of these
|
||||||
|
methods: ``lvm``, ``qcow``, ``rbd`` or ``flat``, chosen using the
|
||||||
|
``images_type`` option in ``nova.conf`` on the compute node.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The option ``raw`` is acceptable but deprecated in favor of ``flat``. The
|
||||||
|
Flat back end uses either raw or QCOW2 storage. It never uses a backing
|
||||||
|
store, so when using QCOW2 it copies an image rather than creating an
|
||||||
|
overlay. By default, it creates raw files but will use QCOW2 when creating a
|
||||||
|
disk from a QCOW2 if ``force_raw_images`` is not set in configuration.
|
||||||
|
|
||||||
|
QCOW is the default backing store. It uses a copy-on-write philosophy to delay
|
||||||
|
allocation of storage until it is actually needed. This means that the space
|
||||||
|
required for the backing of an image can be significantly less on the real disk
|
||||||
|
than what seems available in the virtual machine operating system.
|
||||||
|
|
||||||
|
Flat creates files without any sort of file formatting, effectively creating
|
||||||
|
files with the plain binary one would normally see on a real disk. This can
|
||||||
|
increase performance, but means that the entire size of the virtual disk is
|
||||||
|
reserved on the physical disk.
|
||||||
|
|
||||||
|
Local `LVM volumes
|
||||||
|
<https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)>`__ can also be
|
||||||
|
used. Set ``images_volume_group = nova_local`` where ``nova_local`` is the name
|
||||||
|
of the LVM group you have created.
|
||||||
|
|
||||||
|
Specify the CPU model of KVM guests
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The Compute service enables you to control the guest CPU model that is exposed
|
||||||
|
to KVM virtual machines. Use cases include:
|
||||||
|
|
||||||
|
* To maximize performance of virtual machines by exposing new host CPU features
|
||||||
|
to the guest
|
||||||
|
|
||||||
|
* To ensure a consistent default CPU across all machines, removing reliance of
|
||||||
|
variable QEMU defaults
|
||||||
|
|
||||||
|
In libvirt, the CPU is specified by providing a base CPU model name (which is a
|
||||||
|
shorthand for a set of feature flags), a set of additional feature flags, and
|
||||||
|
the topology (sockets/cores/threads). The libvirt KVM driver provides a number
|
||||||
|
of standard CPU model names. These models are defined in the
|
||||||
|
``/usr/share/libvirt/cpu_map.xml`` file. Check this file to determine which
|
||||||
|
models are supported by your local installation.
|
||||||
|
|
||||||
|
Two Compute configuration options in the ``[libvirt]`` group of ``nova.conf``
|
||||||
|
define which type of CPU model is exposed to the hypervisor when using KVM:
|
||||||
|
``cpu_mode`` and ``cpu_model``.
|
||||||
|
|
||||||
|
The ``cpu_mode`` option can take one of the following values: ``none``,
|
||||||
|
``host-passthrough``, ``host-model``, and ``custom``.
|
||||||
|
|
||||||
|
Host model (default for KVM & QEMU)
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
If your ``nova.conf`` file contains ``cpu_mode=host-model``, libvirt identifies
|
||||||
|
the CPU model in ``/usr/share/libvirt/cpu_map.xml`` file that most closely
|
||||||
|
matches the host, and requests additional CPU flags to complete the match. This
|
||||||
|
configuration provides the maximum functionality and performance and maintains
|
||||||
|
good reliability and compatibility if the guest is migrated to another host
|
||||||
|
with slightly different host CPUs.
|
||||||
|
|
||||||
|
Host pass through
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
If your ``nova.conf`` file contains ``cpu_mode=host-passthrough``, libvirt
|
||||||
|
tells KVM to pass through the host CPU with no modifications. The difference
|
||||||
|
to host-model, instead of just matching feature flags, every last detail of the
|
||||||
|
host CPU is matched. This gives the best performance, and can be important to
|
||||||
|
some apps which check low level CPU details, but it comes at a cost with
|
||||||
|
respect to migration. The guest can only be migrated to a matching host CPU.
|
||||||
|
|
||||||
|
Custom
|
||||||
|
------
|
||||||
|
|
||||||
|
If your ``nova.conf`` file contains ``cpu_mode=custom``, you can explicitly
|
||||||
|
specify one of the supported named models using the cpu_model configuration
|
||||||
|
option. For example, to configure the KVM guests to expose Nehalem CPUs, your
|
||||||
|
``nova.conf`` file should contain:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[libvirt]
|
||||||
|
cpu_mode = custom
|
||||||
|
cpu_model = Nehalem
|
||||||
|
|
||||||
|
None (default for all libvirt-driven hypervisors other than KVM & QEMU)
|
||||||
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
If your ``nova.conf`` file contains ``cpu_mode=none``, libvirt does not specify
|
||||||
|
a CPU model. Instead, the hypervisor chooses the default model.
|
||||||
|
|
||||||
|
Guest agent support
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Use guest agents to enable optional access between compute nodes and guests
|
||||||
|
through a socket, using the QMP protocol.
|
||||||
|
|
||||||
|
To enable this feature, you must set ``hw_qemu_guest_agent=yes`` as a metadata
|
||||||
|
parameter on the image you wish to use to create the guest-agent-capable
|
||||||
|
instances from. You can explicitly disable the feature by setting
|
||||||
|
``hw_qemu_guest_agent=no`` in the image metadata.
|
||||||
|
|
||||||
|
KVM performance tweaks
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The `VHostNet <http://www.linux-kvm.org/page/VhostNet>`_ kernel module improves
|
||||||
|
network performance. To load the kernel module, run the following command as
|
||||||
|
root:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# modprobe vhost_net
|
||||||
|
|
||||||
|
Troubleshoot KVM
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Trying to launch a new virtual machine instance fails with the ``ERROR`` state,
|
||||||
|
and the following error appears in the ``/var/log/nova/nova-compute.log`` file:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
libvirtError: internal error no supported architecture for os type 'hvm'
|
||||||
|
|
||||||
|
This message indicates that the KVM kernel modules were not loaded.
|
||||||
|
|
||||||
|
If you cannot start VMs after installation without rebooting, the permissions
|
||||||
|
might not be set correctly. This can happen if you load the KVM module before
|
||||||
|
you install ``nova-compute``. To check whether the group is set to ``kvm``,
|
||||||
|
run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# ls -l /dev/kvm
|
||||||
|
|
||||||
|
If it is not set to ``kvm``, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# udevadm trigger
|
38
doc/source/admin/configuration/hypervisor-lxc.rst
Normal file
38
doc/source/admin/configuration/hypervisor-lxc.rst
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
======================
|
||||||
|
LXC (Linux containers)
|
||||||
|
======================
|
||||||
|
|
||||||
|
LXC (also known as Linux containers) is a virtualization technology that works
|
||||||
|
at the operating system level. This is different from hardware virtualization,
|
||||||
|
the approach used by other hypervisors such as KVM, Xen, and VMware. LXC (as
|
||||||
|
currently implemented using libvirt in the Compute service) is not a secure
|
||||||
|
virtualization technology for multi-tenant environments (specifically,
|
||||||
|
containers may affect resource quotas for other containers hosted on the same
|
||||||
|
machine). Additional containment technologies, such as AppArmor, may be used to
|
||||||
|
provide better isolation between containers, although this is not the case by
|
||||||
|
default. For all these reasons, the choice of this virtualization technology
|
||||||
|
is not recommended in production.
|
||||||
|
|
||||||
|
If your compute hosts do not have hardware support for virtualization, LXC will
|
||||||
|
likely provide better performance than QEMU. In addition, if your guests must
|
||||||
|
access specialized hardware, such as GPUs, this might be easier to achieve with
|
||||||
|
LXC than other hypervisors.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Some OpenStack Compute features might be missing when running with LXC as
|
||||||
|
the hypervisor. See the `hypervisor support matrix
|
||||||
|
<http://wiki.openstack.org/HypervisorSupportMatrix>`_ for details.
|
||||||
|
|
||||||
|
To enable LXC, ensure the following options are set in ``/etc/nova/nova.conf``
|
||||||
|
on all hosts running the ``nova-compute`` service.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
compute_driver = libvirt.LibvirtDriver
|
||||||
|
|
||||||
|
[libvirt]
|
||||||
|
virt_type = lxc
|
||||||
|
|
||||||
|
On Ubuntu, enable LXC support in OpenStack by installing the
|
||||||
|
``nova-compute-lxc`` package.
|
56
doc/source/admin/configuration/hypervisor-qemu.rst
Normal file
56
doc/source/admin/configuration/hypervisor-qemu.rst
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
.. _compute_qemu:
|
||||||
|
|
||||||
|
====
|
||||||
|
QEMU
|
||||||
|
====
|
||||||
|
|
||||||
|
From the perspective of the Compute service, the QEMU hypervisor is
|
||||||
|
very similar to the KVM hypervisor. Both are controlled through libvirt,
|
||||||
|
both support the same feature set, and all virtual machine images that
|
||||||
|
are compatible with KVM are also compatible with QEMU.
|
||||||
|
The main difference is that QEMU does not support native virtualization.
|
||||||
|
Consequently, QEMU has worse performance than KVM and is a poor choice
|
||||||
|
for a production deployment.
|
||||||
|
|
||||||
|
The typical uses cases for QEMU are
|
||||||
|
|
||||||
|
* Running on older hardware that lacks virtualization support.
|
||||||
|
* Running the Compute service inside of a virtual machine for
|
||||||
|
development or testing purposes, where the hypervisor does not
|
||||||
|
support native virtualization for guests.
|
||||||
|
|
||||||
|
To enable QEMU, add these settings to ``nova.conf``:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
compute_driver = libvirt.LibvirtDriver
|
||||||
|
|
||||||
|
[libvirt]
|
||||||
|
virt_type = qemu
|
||||||
|
|
||||||
|
For some operations you may also have to install the
|
||||||
|
:command:`guestmount` utility:
|
||||||
|
|
||||||
|
On Ubuntu:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# apt-get install guestmount
|
||||||
|
|
||||||
|
On Red Hat Enterprise Linux, Fedora, or CentOS:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# yum install libguestfs-tools
|
||||||
|
|
||||||
|
On openSUSE:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# zypper install guestfs-tools
|
||||||
|
|
||||||
|
The QEMU hypervisor supports the following virtual machine image formats:
|
||||||
|
|
||||||
|
* Raw
|
||||||
|
* QEMU Copy-on-write (qcow2)
|
||||||
|
* VMware virtual machine disk format (vmdk)
|
39
doc/source/admin/configuration/hypervisor-virtuozzo.rst
Normal file
39
doc/source/admin/configuration/hypervisor-virtuozzo.rst
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
=========
|
||||||
|
Virtuozzo
|
||||||
|
=========
|
||||||
|
|
||||||
|
Virtuozzo 7.0.0 (or newer), or its community edition OpenVZ, provides both
|
||||||
|
types of virtualization: Kernel Virtual Machines and OS Containers. The type
|
||||||
|
of instance to span is chosen depending on the ``hw_vm_type`` property of an
|
||||||
|
image.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Some OpenStack Compute features may be missing when running with Virtuozzo
|
||||||
|
as the hypervisor. See :doc:`/user/support-matrix` for details.
|
||||||
|
|
||||||
|
To enable Virtuozzo Containers, set the following options in
|
||||||
|
``/etc/nova/nova.conf`` on all hosts running the ``nova-compute`` service.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
compute_driver = libvirt.LibvirtDriver
|
||||||
|
force_raw_images = False
|
||||||
|
|
||||||
|
[libvirt]
|
||||||
|
virt_type = parallels
|
||||||
|
images_type = ploop
|
||||||
|
connection_uri = parallels:///system
|
||||||
|
inject_partition = -2
|
||||||
|
|
||||||
|
To enable Virtuozzo Virtual Machines, set the following options in
|
||||||
|
``/etc/nova/nova.conf`` on all hosts running the ``nova-compute`` service.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
compute_driver = libvirt.LibvirtDriver
|
||||||
|
|
||||||
|
[libvirt]
|
||||||
|
virt_type = parallels
|
||||||
|
images_type = qcow2
|
||||||
|
connection_uri = parallels:///system
|
1130
doc/source/admin/configuration/hypervisor-vmware.rst
Normal file
1130
doc/source/admin/configuration/hypervisor-vmware.rst
Normal file
File diff suppressed because it is too large
Load Diff
434
doc/source/admin/configuration/hypervisor-xen-api.rst
Normal file
434
doc/source/admin/configuration/hypervisor-xen-api.rst
Normal file
@ -0,0 +1,434 @@
|
|||||||
|
.. _compute_xen_api:
|
||||||
|
|
||||||
|
=============================================
|
||||||
|
XenServer (and other XAPI based Xen variants)
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
This section describes XAPI managed hypervisors, and how to use them with
|
||||||
|
OpenStack.
|
||||||
|
|
||||||
|
Terminology
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
|
Xen
|
||||||
|
---
|
||||||
|
|
||||||
|
A hypervisor that provides the fundamental isolation between virtual machines.
|
||||||
|
Xen is open source (GPLv2) and is managed by `XenProject.org
|
||||||
|
<http://www.xenproject.org>`_, a cross-industry organization and a Linux
|
||||||
|
Foundation Collaborative project.
|
||||||
|
|
||||||
|
Xen is a component of many different products and projects. The hypervisor
|
||||||
|
itself is very similar across all these projects, but the way that it is
|
||||||
|
managed can be different, which can cause confusion if you're not clear which
|
||||||
|
toolstack you are using. Make sure you know what `toolstack
|
||||||
|
<http://wiki.xen.org/wiki/Choice_of_Toolstacks>`_ you want before you get
|
||||||
|
started. If you want to use Xen with libvirt in OpenStack Compute refer to
|
||||||
|
:doc:`hypervisor-xen-libvirt`.
|
||||||
|
|
||||||
|
XAPI
|
||||||
|
----
|
||||||
|
|
||||||
|
XAPI is one of the toolstacks that could control a Xen based hypervisor.
|
||||||
|
XAPI's role is similar to libvirt's in the KVM world. The API provided by XAPI
|
||||||
|
is called XenAPI. To learn more about the provided interface, look at `XenAPI
|
||||||
|
Object Model Overview <http://docs.vmd.citrix.com/XenServer/
|
||||||
|
6.2.0/1.0/en_gb/sdk.html#object_model_overview>`_ for definitions of XAPI
|
||||||
|
specific terms such as SR, VDI, VIF and PIF.
|
||||||
|
|
||||||
|
OpenStack has a compute driver which talks to XAPI, therefore all XAPI managed
|
||||||
|
servers could be used with OpenStack.
|
||||||
|
|
||||||
|
XenAPI
|
||||||
|
------
|
||||||
|
|
||||||
|
XenAPI is the API provided by XAPI. This name is also used by the python
|
||||||
|
library that is a client for XAPI. A set of packages to use XenAPI on existing
|
||||||
|
distributions can be built using the `xenserver/buildroot
|
||||||
|
<https://github.com/xenserver/buildroot>`_ project.
|
||||||
|
|
||||||
|
XenServer
|
||||||
|
---------
|
||||||
|
|
||||||
|
An Open Source virtualization platform that delivers all features needed for
|
||||||
|
any server and datacenter implementation including the Xen hypervisor and XAPI
|
||||||
|
for the management. For more information and product downloads, visit
|
||||||
|
`xenserver.org <http://xenserver.org/>`_.
|
||||||
|
|
||||||
|
XCP
|
||||||
|
---
|
||||||
|
|
||||||
|
XCP is not supported anymore. XCP project recommends all XCP users to upgrade
|
||||||
|
to the latest version of XenServer by visiting `xenserver.org
|
||||||
|
<http://xenserver.org/>`_.
|
||||||
|
|
||||||
|
Privileged and unprivileged domains
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
A Xen host runs a number of virtual machines, VMs, or domains (the terms are
|
||||||
|
synonymous on Xen). One of these is in charge of running the rest of the
|
||||||
|
system, and is known as domain 0, or dom0. It is the first domain to boot after
|
||||||
|
Xen, and owns the storage and networking hardware, the device drivers, and the
|
||||||
|
primary control software. Any other VM is unprivileged, and is known as a domU
|
||||||
|
or guest. All customer VMs are unprivileged, but you should note that on
|
||||||
|
XenServer (and other XenAPI using hypervisors), the OpenStack Compute service
|
||||||
|
(``nova-compute``) also runs in a domU. This gives a level of security
|
||||||
|
isolation between the privileged system software and the OpenStack software
|
||||||
|
(much of which is customer-facing). This architecture is described in more
|
||||||
|
detail later.
|
||||||
|
|
||||||
|
Paravirtualized versus hardware virtualized domains
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
A Xen virtual machine can be paravirtualized (PV) or hardware virtualized
|
||||||
|
(HVM). This refers to the interaction between Xen, domain 0, and the guest VM's
|
||||||
|
kernel. PV guests are aware of the fact that they are virtualized and will
|
||||||
|
co-operate with Xen and domain 0; this gives them better performance
|
||||||
|
characteristics. HVM guests are not aware of their environment, and the
|
||||||
|
hardware has to pretend that they are running on an unvirtualized machine. HVM
|
||||||
|
guests do not need to modify the guest operating system, which is essential
|
||||||
|
when running Windows.
|
||||||
|
|
||||||
|
In OpenStack, customer VMs may run in either PV or HVM mode. However, the
|
||||||
|
OpenStack domU (that's the one running ``nova-compute``) must be running in PV
|
||||||
|
mode.
|
||||||
|
|
||||||
|
XenAPI deployment architecture
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A basic OpenStack deployment on a XAPI-managed server, assuming that the
|
||||||
|
network provider is neutron network, looks like this:
|
||||||
|
|
||||||
|
.. figure:: /figures/xenserver_architecture.png
|
||||||
|
:width: 100%
|
||||||
|
|
||||||
|
Key things to note:
|
||||||
|
|
||||||
|
* The hypervisor: Xen
|
||||||
|
|
||||||
|
* Domain 0: runs XAPI and some small pieces from OpenStack,
|
||||||
|
the XAPI plug-ins.
|
||||||
|
|
||||||
|
* OpenStack VM: The ``Compute`` service runs in a paravirtualized virtual
|
||||||
|
machine, on the host under management. Each host runs a local instance of
|
||||||
|
``Compute``. It is also running neutron plugin-agent
|
||||||
|
(``neutron-openvswitch-agent``) to perform local vSwitch configuration.
|
||||||
|
|
||||||
|
* OpenStack Compute uses the XenAPI Python library to talk to XAPI, and it uses
|
||||||
|
the Management Network to reach from the OpenStack VM to Domain 0.
|
||||||
|
|
||||||
|
Some notes on the networking:
|
||||||
|
|
||||||
|
* The above diagram assumes DHCP networking.
|
||||||
|
|
||||||
|
* There are three main OpenStack networks:
|
||||||
|
|
||||||
|
* Management network: RabbitMQ, MySQL, inter-host communication, and
|
||||||
|
compute-XAPI communication. Please note that the VM images are downloaded
|
||||||
|
by the XenAPI plug-ins, so make sure that the OpenStack Image service is
|
||||||
|
accessible through this network. It usually means binding those services to
|
||||||
|
the management interface.
|
||||||
|
|
||||||
|
* Tenant network: controlled by neutron, this is used for tenant traffic.
|
||||||
|
|
||||||
|
* Public network: floating IPs, public API endpoints.
|
||||||
|
|
||||||
|
* The networks shown here must be connected to the corresponding physical
|
||||||
|
networks within the data center. In the simplest case, three individual
|
||||||
|
physical network cards could be used. It is also possible to use VLANs to
|
||||||
|
separate these networks. Please note, that the selected configuration must be
|
||||||
|
in line with the networking model selected for the cloud. (In case of VLAN
|
||||||
|
networking, the physical channels have to be able to forward the tagged
|
||||||
|
traffic.)
|
||||||
|
|
||||||
|
* With the Networking service, you should enable Linux bridge in ``Dom0`` which
|
||||||
|
is used for Compute service. ``nova-compute`` will create Linux bridges for
|
||||||
|
security group and ``neutron-openvswitch-agent`` in Compute node will apply
|
||||||
|
security group rules on these Linux bridges. To implement this, you need to
|
||||||
|
remove ``/etc/modprobe.d/blacklist-bridge*`` in ``Dom0``.
|
||||||
|
|
||||||
|
Further reading
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Here are some of the resources available to learn more about Xen:
|
||||||
|
|
||||||
|
* `Citrix XenServer official documentation
|
||||||
|
<http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/>`_
|
||||||
|
* `What is Xen? by XenProject.org
|
||||||
|
<http://www.xenproject.org/users/cloud.html>`_
|
||||||
|
* `Xen Hypervisor project
|
||||||
|
<http://www.xenproject.org/developers/teams/hypervisor.html>`_
|
||||||
|
* `Xapi project <http://www.xenproject.org/developers/teams/xapi.html>`_
|
||||||
|
* `Further XenServer and OpenStack information
|
||||||
|
<http://wiki.openstack.org/XenServer>`_
|
||||||
|
|
||||||
|
Install XenServer
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Before you can run OpenStack with XenServer, you must install the hypervisor on
|
||||||
|
`an appropriate server <http://docs.vmd.citrix.com/XenServer/
|
||||||
|
6.2.0/1.0/en_gb/installation.html#sys_requirements>`_.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Xen is a type 1 hypervisor: When your server starts, Xen is the first
|
||||||
|
software that runs. Consequently, you must install XenServer before you
|
||||||
|
install the operating system where you want to run OpenStack code. You then
|
||||||
|
install ``nova-compute`` into a dedicated virtual machine on the host.
|
||||||
|
|
||||||
|
Use the following link to download XenServer's installation media:
|
||||||
|
|
||||||
|
* http://xenserver.org/open-source-virtualization-download.html
|
||||||
|
|
||||||
|
When you install many servers, you might find it easier to perform `PXE boot
|
||||||
|
installations <http://docs.vmd.citrix.com/XenServer/6.2.0/
|
||||||
|
1.0/en_gb/installation.html#pxe_boot_install>`_. You can also package any
|
||||||
|
post-installation changes that you want to make to your XenServer by following
|
||||||
|
the instructions of `creating your own XenServer supplemental pack
|
||||||
|
<http://docs.vmd.citrix.com/
|
||||||
|
XenServer/6.2.0/1.0/en_gb/supplemental_pack_ddk.html>`_.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
Make sure you use the EXT type of storage repository (SR). Features that
|
||||||
|
require access to VHD files (such as copy on write, snapshot and migration)
|
||||||
|
do not work when you use the LVM SR. Storage repository (SR) is a
|
||||||
|
XAPI-specific term relating to the physical storage where virtual disks are
|
||||||
|
stored.
|
||||||
|
|
||||||
|
On the XenServer installation screen, choose the :guilabel:`XenDesktop
|
||||||
|
Optimized` option. If you use an answer file, make sure you use
|
||||||
|
``srtype="ext"`` in the ``installation`` tag of the answer file.
|
||||||
|
|
||||||
|
Post-installation steps
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The following steps need to be completed after the hypervisor's installation:
|
||||||
|
|
||||||
|
#. For resize and migrate functionality, enable password-less SSH
|
||||||
|
authentication and set up the ``/images`` directory on dom0.
|
||||||
|
|
||||||
|
#. Install the XAPI plug-ins.
|
||||||
|
|
||||||
|
#. To support AMI type images, you must set up ``/boot/guest``
|
||||||
|
symlink/directory in dom0.
|
||||||
|
|
||||||
|
#. Create a paravirtualized virtual machine that can run ``nova-compute``.
|
||||||
|
|
||||||
|
#. Install and configure ``nova-compute`` in the above virtual machine.
|
||||||
|
|
||||||
|
Install XAPI plug-ins
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
When you use a XAPI managed hypervisor, you can install a Python script (or any
|
||||||
|
executable) on the host side, and execute that through XenAPI. These scripts
|
||||||
|
are called plug-ins. The OpenStack related XAPI plug-ins live in OpenStack
|
||||||
|
os-xenapi code repository. These plug-ins have to be copied to dom0's
|
||||||
|
filesystem, to the appropriate directory, where XAPI can find them. It is
|
||||||
|
important to ensure that the version of the plug-ins are in line with the
|
||||||
|
OpenStack Compute installation you are using.
|
||||||
|
|
||||||
|
The plugins should typically be copied from the Nova installation running in
|
||||||
|
the Compute's DomU (``pip show os-xenapi`` to find its location), but if you
|
||||||
|
want to download the latest version the following procedure can be used.
|
||||||
|
|
||||||
|
**Manually installing the plug-ins**
|
||||||
|
|
||||||
|
#. Create temporary files/directories:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ OS_XENAPI_TARBALL=$(mktemp)
|
||||||
|
$ OS_XENAPI_SOURCES=$(mktemp -d)
|
||||||
|
|
||||||
|
#. Get the source from the openstack.org archives. The example assumes the
|
||||||
|
latest release is used, and the XenServer host is accessible as xenserver.
|
||||||
|
Match those parameters to your setup.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ OS_XENAPI_URL=https://tarballs.openstack.org/os-xenapi/os-xenapi-0.1.1.tar.gz
|
||||||
|
$ wget -qO "$OS_XENAPI_TARBALL" "$OS_XENAPI_URL"
|
||||||
|
$ tar xvf "$OS_XENAPI_TARBALL" -d "$OS_XENAPI_SOURCES"
|
||||||
|
|
||||||
|
#. Copy the plug-ins to the hypervisor:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ PLUGINPATH=$(find $OS_XENAPI_SOURCES -path '*/xapi.d/plugins' -type d -print)
|
||||||
|
$ tar -czf - -C "$PLUGINPATH" ./ |
|
||||||
|
> ssh root@xenserver tar -xozf - -C /etc/xapi.d/plugins
|
||||||
|
|
||||||
|
#. Remove temporary files/directories:</para>
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ rm "$OS_XENAPI_TARBALL"
|
||||||
|
$ rm -rf "$OS_XENAPI_SOURCES"
|
||||||
|
|
||||||
|
Prepare for AMI type images
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
To support AMI type images in your OpenStack installation, you must create the
|
||||||
|
``/boot/guest`` directory on dom0. One of the OpenStack XAPI plugins will
|
||||||
|
extract the kernel and ramdisk from AKI and ARI images and put them to that
|
||||||
|
directory.
|
||||||
|
|
||||||
|
OpenStack maintains the contents of this directory and its size should not
|
||||||
|
increase during normal operation. However, in case of power failures or
|
||||||
|
accidental shutdowns, some files might be left over. To prevent these files
|
||||||
|
from filling up dom0's filesystem, set up this directory as a symlink that
|
||||||
|
points to a subdirectory of the local SR.
|
||||||
|
|
||||||
|
Run these commands in dom0 to achieve this setup:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# LOCAL_SR=$(xe sr-list name-label="Local storage" --minimal)
|
||||||
|
# LOCALPATH="/var/run/sr-mount/$LOCAL_SR/os-guest-kernels"
|
||||||
|
# mkdir -p "$LOCALPATH"
|
||||||
|
# ln -s "$LOCALPATH" /boot/guest
|
||||||
|
|
||||||
|
Modify dom0 for resize/migration support
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
To resize servers with XenServer you must:
|
||||||
|
|
||||||
|
* Establish a root trust between all hypervisor nodes of your deployment:
|
||||||
|
|
||||||
|
To do so, generate an ssh key-pair with the :command:`ssh-keygen` command.
|
||||||
|
Ensure that each of your dom0's ``authorized_keys`` file (located in
|
||||||
|
``/root/.ssh/authorized_keys``) contains the public key fingerprint (located
|
||||||
|
in ``/root/.ssh/id_rsa.pub``).
|
||||||
|
|
||||||
|
* Provide a ``/images`` mount point to the dom0 for your hypervisor:
|
||||||
|
|
||||||
|
dom0 space is at a premium so creating a directory in dom0 is potentially
|
||||||
|
dangerous and likely to fail especially when you resize large servers. The
|
||||||
|
least you can do is to symlink ``/images`` to your local storage SR. The
|
||||||
|
following instructions work for an English-based installation of XenServer
|
||||||
|
and in the case of ext3-based SR (with which the resize functionality is
|
||||||
|
known to work correctly).
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# LOCAL_SR=$(xe sr-list name-label="Local storage" --minimal)
|
||||||
|
# IMG_DIR="/var/run/sr-mount/$LOCAL_SR/images"
|
||||||
|
# mkdir -p "$IMG_DIR"
|
||||||
|
# ln -s "$IMG_DIR" /images
|
||||||
|
|
||||||
|
XenAPI configuration reference
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The following section discusses some commonly changed options when using the
|
||||||
|
XenAPI driver. The table below provides a complete reference of all
|
||||||
|
configuration options available for configuring XAPI with OpenStack.
|
||||||
|
|
||||||
|
The recommended way to use XAPI with OpenStack is through the XenAPI driver.
|
||||||
|
To enable the XenAPI driver, add the following configuration options to
|
||||||
|
``/etc/nova/nova.conf`` and restart ``OpenStack Compute``:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
compute_driver = xenapi.XenAPIDriver
|
||||||
|
[xenserver]
|
||||||
|
connection_url = http://your_xenapi_management_ip_address
|
||||||
|
connection_username = root
|
||||||
|
connection_password = your_password
|
||||||
|
ovs_integration_bridge = br-int
|
||||||
|
vif_driver = nova.virt.xenapi.vif.XenAPIOpenVswitchDriver
|
||||||
|
|
||||||
|
These connection details are used by OpenStack Compute service to contact your
|
||||||
|
hypervisor and are the same details you use to connect XenCenter, the XenServer
|
||||||
|
management console, to your XenServer node.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The ``connection_url`` is generally the management network IP
|
||||||
|
address of the XenServer.
|
||||||
|
|
||||||
|
Networking configuration
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
The Networking service in the Compute node is running
|
||||||
|
``neutron-openvswitch-agent``, this manages dom0's OVS. You can refer
|
||||||
|
Networking `openvswitch_agent.ini.sample <https://github.com/openstack/
|
||||||
|
openstack-manuals/blob/master/doc/config-reference/source/samples/neutron/
|
||||||
|
openvswitch_agent.ini.sample>`_ for details, however there are several specific
|
||||||
|
items to look out for.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[agent]
|
||||||
|
minimize_polling = False
|
||||||
|
root_helper_daemon = xenapi_root_helper
|
||||||
|
|
||||||
|
[ovs]
|
||||||
|
of_listen_address = management_ip_address
|
||||||
|
ovsdb_connection = tcp:your_xenapi_management_ip_address:6640
|
||||||
|
bridge_mappings = <physical_network>:<physical_bridge>, ...
|
||||||
|
integration_bridge = br-int
|
||||||
|
|
||||||
|
[xenapi]
|
||||||
|
connection_url = http://your_xenapi_management_ip_address
|
||||||
|
connection_username = root
|
||||||
|
connection_password = your_pass_word
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The ``ovsdb_connection`` is the connection string for the native OVSDB
|
||||||
|
backend, you need to enable port 6640 in dom0.
|
||||||
|
|
||||||
|
Agent
|
||||||
|
-----
|
||||||
|
|
||||||
|
The agent is a piece of software that runs on the instances, and communicates
|
||||||
|
with OpenStack. In case of the XenAPI driver, the agent communicates with
|
||||||
|
OpenStack through XenStore (see `the Xen Project Wiki
|
||||||
|
<http://wiki.xenproject.org/wiki/XenStore>`_ for more information on XenStore).
|
||||||
|
|
||||||
|
If you don't have the guest agent on your VMs, it takes a long time for
|
||||||
|
OpenStack Compute to detect that the VM has successfully started. Generally a
|
||||||
|
large timeout is required for Windows instances, but you may want to adjust:
|
||||||
|
``agent_version_timeout`` within the ``[xenserver]`` section.
|
||||||
|
|
||||||
|
VNC proxy address
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Assuming you are talking to XAPI through a management network, and XenServer is
|
||||||
|
on the address: 10.10.1.34 specify the same address for the vnc proxy address:
|
||||||
|
``vncserver_proxyclient_address=10.10.1.34``
|
||||||
|
|
||||||
|
Storage
|
||||||
|
-------
|
||||||
|
|
||||||
|
You can specify which Storage Repository to use with nova by editing the
|
||||||
|
following flag. To use the local-storage setup by the default installer:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
sr_matching_filter = "other-config:i18n-key=local-storage"
|
||||||
|
|
||||||
|
Another alternative is to use the "default" storage (for example if you have
|
||||||
|
attached NFS or any other shared storage):
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
sr_matching_filter = "default-sr:true"
|
||||||
|
|
||||||
|
Image upload in TGZ compressed format
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
To start uploading ``tgz`` compressed raw disk images to the Image service,
|
||||||
|
configure ``xenapi_image_upload_handler`` by replacing ``GlanceStore`` with
|
||||||
|
``VdiThroughDevStore``.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
xenapi_image_upload_handler=nova.virt.xenapi.image.vdi_through_dev.VdiThroughDevStore
|
||||||
|
|
||||||
|
As opposed to:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
xenapi_image_upload_handler=nova.virt.xenapi.image.glance.GlanceStore
|
249
doc/source/admin/configuration/hypervisor-xen-libvirt.rst
Normal file
249
doc/source/admin/configuration/hypervisor-xen-libvirt.rst
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
===============
|
||||||
|
Xen via libvirt
|
||||||
|
===============
|
||||||
|
|
||||||
|
OpenStack Compute supports the Xen Project Hypervisor (or Xen). Xen can be
|
||||||
|
integrated with OpenStack Compute via the `libvirt <http://libvirt.org/>`_
|
||||||
|
`toolstack <http://wiki.xen.org/wiki/Choice_of_Toolstacks>`_ or via the `XAPI
|
||||||
|
<http://xenproject.org/developers/teams/xapi.html>`_ `toolstack
|
||||||
|
<http://wiki.xen.org/wiki/Choice_of_Toolstacks>`_. This section describes how
|
||||||
|
to set up OpenStack Compute with Xen and libvirt. For information on how to
|
||||||
|
set up Xen with XAPI refer to :doc:`hypervisor-xen-api`.
|
||||||
|
|
||||||
|
Installing Xen with libvirt
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
At this stage we recommend using the baseline that we use for the `Xen Project
|
||||||
|
OpenStack CI Loop
|
||||||
|
<http://wiki.xenproject.org/wiki/OpenStack_CI_Loop_for_Xen-Libvirt>`_, which
|
||||||
|
contains the most recent stability fixes to both Xen and libvirt.
|
||||||
|
|
||||||
|
`Xen 4.5.1
|
||||||
|
<http://www.xenproject.org/downloads/xen-archives/xen-45-series/xen-451.html>`_
|
||||||
|
(or newer) and `libvirt 1.2.15 <http://libvirt.org/sources/>`_ (or newer)
|
||||||
|
contain the minimum required OpenStack improvements for Xen. Although libvirt
|
||||||
|
1.2.15 works with Xen, libvirt 1.3.2 or newer is recommended. The necessary
|
||||||
|
Xen changes have also been backported to the Xen 4.4.3 stable branch. Please
|
||||||
|
check with the Linux and FreeBSD distros you are intending to use as `Dom 0
|
||||||
|
<http://wiki.xenproject.org/wiki/Category:Host_Install>`_, whether the relevant
|
||||||
|
version of Xen and libvirt are available as installable packages.
|
||||||
|
|
||||||
|
The latest releases of Xen and libvirt packages that fulfil the above minimum
|
||||||
|
requirements for the various openSUSE distributions can always be found and
|
||||||
|
installed from the `Open Build Service
|
||||||
|
<https://build.opensuse.org/project/show/Virtualization>`_ Virtualization
|
||||||
|
project. To install these latest packages, add the Virtualization repository
|
||||||
|
to your software management stack and get the newest packages from there. More
|
||||||
|
information about the latest Xen and libvirt packages are available `here
|
||||||
|
<https://build.opensuse.org/package/show/Virtualization/xen>`__ and `here
|
||||||
|
<https://build.opensuse.org/package/show/Virtualization/libvirt>`__.
|
||||||
|
|
||||||
|
Alternatively, it is possible to use the Ubuntu LTS 14.04 Xen Package
|
||||||
|
**4.4.1-0ubuntu0.14.04.4** (Xen 4.4.1) and apply the patches outlined `here
|
||||||
|
<http://wiki.xenproject.org/wiki/OpenStack_CI_Loop_for_Xen-Libvirt#Baseline>`__.
|
||||||
|
You can also use the Ubuntu LTS 14.04 libvirt package **1.2.2
|
||||||
|
libvirt_1.2.2-0ubuntu13.1.7** as baseline and update it to libvirt version
|
||||||
|
1.2.15, or 1.2.14 with the patches outlined `here
|
||||||
|
<http://wiki.xenproject.org/wiki/OpenStack_CI_Loop_for_Xen-Libvirt#Baseline>`__
|
||||||
|
applied. Note that this will require rebuilding these packages partly from
|
||||||
|
source.
|
||||||
|
|
||||||
|
For further information and latest developments, you may want to consult the
|
||||||
|
Xen Project's `mailing lists for OpenStack related issues and questions
|
||||||
|
<http://lists.xenproject.org/cgi-bin/mailman/listinfo/wg-openstack>`_.
|
||||||
|
|
||||||
|
Configuring Xen with libvirt
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To enable Xen via libvirt, ensure the following options are set in
|
||||||
|
``/etc/nova/nova.conf`` on all hosts running the ``nova-compute`` service.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
compute_driver = libvirt.LibvirtDriver
|
||||||
|
|
||||||
|
[libvirt]
|
||||||
|
virt_type = xen
|
||||||
|
|
||||||
|
Additional configuration options
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Use the following as a guideline for configuring Xen for use in OpenStack:
|
||||||
|
|
||||||
|
#. **Dom0 memory**: Set it between 1GB and 4GB by adding the following
|
||||||
|
parameter to the Xen Boot Options in the `grub.conf <http://
|
||||||
|
xenbits.xen.org/docs/unstable/misc/xen-command-line.html>`_ file.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
dom0_mem=1024M
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The above memory limits are suggestions and should be based on the
|
||||||
|
available compute host resources. For large hosts that will run many
|
||||||
|
hundreds of instances, the suggested values may need to be higher.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The location of the grub.conf file depends on the host Linux distribution
|
||||||
|
that you are using. Please refer to the distro documentation for more
|
||||||
|
details (see `Dom 0 <http://wiki.xenproject.org
|
||||||
|
/wiki/Category:Host_Install>`_ for more resources).
|
||||||
|
|
||||||
|
#. **Dom0 vcpus**: Set the virtual CPUs to 4 and employ CPU pinning by adding
|
||||||
|
the following parameters to the Xen Boot Options in the `grub.conf
|
||||||
|
<http://xenbits.xen.org/docs/unstable/misc/xen-command-line.html>`_ file.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
dom0_max_vcpus=4 dom0_vcpus_pin
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Note that the above virtual CPU limits are suggestions and should be
|
||||||
|
based on the available compute host resources. For large hosts, that will
|
||||||
|
run many hundred of instances, the suggested values may need to be
|
||||||
|
higher.
|
||||||
|
|
||||||
|
#. **PV vs HVM guests**: A Xen virtual machine can be paravirtualized (PV) or
|
||||||
|
hardware virtualized (HVM). The virtualization mode determines the
|
||||||
|
interaction between Xen, Dom 0, and the guest VM's kernel. PV guests are
|
||||||
|
aware of the fact that they are virtualized and will co-operate with Xen and
|
||||||
|
Dom 0. The choice of virtualization mode determines performance
|
||||||
|
characteristics. For an overview of Xen virtualization modes, see `Xen Guest
|
||||||
|
Types <http://wiki.xen.org/wiki/Xen_Overview#Guest_Types>`_.
|
||||||
|
|
||||||
|
In OpenStack, customer VMs may run in either PV or HVM mode. The mode is a
|
||||||
|
property of the operating system image used by the VM, and is changed by
|
||||||
|
adjusting the image metadata stored in the Image service. The image
|
||||||
|
metadata can be changed using the :command:`openstack` commands.
|
||||||
|
|
||||||
|
To choose one of the HVM modes (HVM, HVM with PV Drivers or PVHVM), use
|
||||||
|
:command:`openstack` to set the ``vm_mode`` property to ``hvm``.
|
||||||
|
|
||||||
|
To choose one of the HVM modes (HVM, HVM with PV Drivers or PVHVM), use one
|
||||||
|
of the following two commands:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack image set --property vm_mode=hvm IMAGE
|
||||||
|
|
||||||
|
To chose PV mode, which is supported by NetBSD, FreeBSD and Linux, use one
|
||||||
|
of the following two commands
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack image set --property vm_mode=xen IMAGE
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The default for virtualization mode in nova is PV mode.
|
||||||
|
|
||||||
|
#. **Image formats**: Xen supports raw, qcow2 and vhd image formats. For more
|
||||||
|
information on image formats, refer to the `OpenStack Virtual Image Guide
|
||||||
|
<https://docs.openstack.org/image-guide/introduction.html>`__ and the
|
||||||
|
`Storage Options Guide on the Xen Project Wiki
|
||||||
|
<http://wiki.xenproject.org/wiki/Storage_options>`_.
|
||||||
|
|
||||||
|
#. **Image metadata**: In addition to the ``vm_mode`` property discussed above,
|
||||||
|
the ``hypervisor_type`` property is another important component of the image
|
||||||
|
metadata, especially if your cloud contains mixed hypervisor compute nodes.
|
||||||
|
Setting the ``hypervisor_type`` property allows the nova scheduler to select
|
||||||
|
a compute node running the specified hypervisor when launching instances of
|
||||||
|
the image. Image metadata such as ``vm_mode``, ``hypervisor_type``,
|
||||||
|
architecture, and others can be set when importing the image to the Image
|
||||||
|
service. The metadata can also be changed using the :command:`openstack`
|
||||||
|
commands:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack image set --property hypervisor_type=xen vm_mode=hvm IMAGE
|
||||||
|
|
||||||
|
For more more information on image metadata, refer to the `OpenStack Virtual
|
||||||
|
Image Guide <https://docs.openstack.org/image-guide/image-metadata.html>`__.
|
||||||
|
|
||||||
|
#. **Libguestfs file injection**: OpenStack compute nodes can use `libguestfs
|
||||||
|
<http://libguestfs.org/>`_ to inject files into an instance's image prior to
|
||||||
|
launching the instance. libguestfs uses libvirt's QEMU driver to start a
|
||||||
|
qemu process, which is then used to inject files into the image. When using
|
||||||
|
libguestfs for file injection, the compute node must have the libvirt qemu
|
||||||
|
driver installed, in addition to the Xen driver. In RPM based distributions,
|
||||||
|
the qemu driver is provided by the ``libvirt-daemon-qemu`` package. In
|
||||||
|
Debian and Ubuntu, the qemu driver is provided by the ``libvirt-bin``
|
||||||
|
package.
|
||||||
|
|
||||||
|
Troubleshoot Xen with libvirt
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
**Important log files**: When an instance fails to start, or when you come
|
||||||
|
across other issues, you should first consult the following log files:
|
||||||
|
|
||||||
|
* ``/var/log/nova/nova-compute.log``
|
||||||
|
|
||||||
|
* ``/var/log/libvirt/libxl/libxl-driver.log``,
|
||||||
|
|
||||||
|
* ``/var/log/xen/qemu-dm-${instancename}.log``,
|
||||||
|
|
||||||
|
* ``/var/log/xen/xen-hotplug.log``,
|
||||||
|
|
||||||
|
* ``/var/log/xen/console/guest-${instancename}`` (to enable see `Enabling Guest
|
||||||
|
Console Logs
|
||||||
|
<http://wiki.xen.org/wiki/Reporting_Bugs_against_Xen#Guest_console_logs>`_)
|
||||||
|
|
||||||
|
* Host Console Logs (read `Enabling and Retrieving Host Console Logs
|
||||||
|
<http://wiki.xen.org/wiki/Reporting_Bugs_against_Xen#Host_console_logs>`_).
|
||||||
|
|
||||||
|
If you need further help you can ask questions on the mailing lists `xen-users@
|
||||||
|
<http://lists.xenproject.org/cgi-bin/mailman/listinfo/ xen-users>`_,
|
||||||
|
`wg-openstack@ <http://lists.xenproject.org/cgi-bin/mailman/
|
||||||
|
listinfo/wg-openstack>`_ or `raise a bug <http://wiki.xen.org/wiki/
|
||||||
|
Reporting_Bugs_against_Xen>`_ against Xen.
|
||||||
|
|
||||||
|
Known issues
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* **Networking**: Xen via libvirt is currently only supported with
|
||||||
|
nova-network. Fixes for a number of bugs are currently being worked on to
|
||||||
|
make sure that Xen via libvirt will also work with OpenStack Networking
|
||||||
|
(neutron).
|
||||||
|
|
||||||
|
.. todo:: Is this still true?
|
||||||
|
|
||||||
|
* **Live migration**: Live migration is supported in the libvirt libxl driver
|
||||||
|
since version 1.2.5. However, there were a number of issues when used with
|
||||||
|
OpenStack, in particular with libvirt migration protocol compatibility. It is
|
||||||
|
worth mentioning that libvirt 1.3.0 addresses most of these issues. We do
|
||||||
|
however recommend using libvirt 1.3.2, which is fully supported and tested as
|
||||||
|
part of the Xen Project CI loop. It addresses live migration monitoring
|
||||||
|
related issues and adds support for peer-to-peer migration mode, which nova
|
||||||
|
relies on.
|
||||||
|
|
||||||
|
* **Live migration monitoring**: On compute nodes running Kilo or later, live
|
||||||
|
migration monitoring relies on libvirt APIs that are only implemented from
|
||||||
|
libvirt version 1.3.1 onwards. When attempting to live migrate, the migration
|
||||||
|
monitoring thread would crash and leave the instance state as "MIGRATING". If
|
||||||
|
you experience such an issue and you are running on a version released before
|
||||||
|
libvirt 1.3.1, make sure you backport libvirt commits ad71665 and b7b4391
|
||||||
|
from upstream.
|
||||||
|
|
||||||
|
Additional information and resources
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The following section contains links to other useful resources.
|
||||||
|
|
||||||
|
* `wiki.xenproject.org/wiki/OpenStack <http://wiki.xenproject.org/wiki/
|
||||||
|
OpenStack>`_ - OpenStack Documentation on the Xen Project wiki
|
||||||
|
|
||||||
|
* `wiki.xenproject.org/wiki/OpenStack_CI_Loop_for_Xen-Libvirt
|
||||||
|
<http://wiki.xenproject.org/wiki/OpenStack_CI_Loop_for_Xen-Libvirt>`_ -
|
||||||
|
Information about the Xen Project OpenStack CI Loop
|
||||||
|
|
||||||
|
* `wiki.xenproject.org/wiki/OpenStack_via_DevStack
|
||||||
|
<http://wiki.xenproject.org/wiki/OpenStack_via_DevStack>`_ - How to set up
|
||||||
|
OpenStack via DevStack
|
||||||
|
|
||||||
|
* `Mailing lists for OpenStack related issues and questions
|
||||||
|
<http://lists.xenproject.org/cgi-bin/mailman/listinfo/wg-openstack>`_ - This
|
||||||
|
list is dedicated to coordinating bug fixes and issues across Xen, libvirt
|
||||||
|
and OpenStack and the CI loop.
|
63
doc/source/admin/configuration/hypervisors.rst
Normal file
63
doc/source/admin/configuration/hypervisors.rst
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
===========
|
||||||
|
Hypervisors
|
||||||
|
===========
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
hypervisor-basics.rst
|
||||||
|
hypervisor-kvm.rst
|
||||||
|
hypervisor-qemu.rst
|
||||||
|
hypervisor-xen-api.rst
|
||||||
|
hypervisor-xen-libvirt.rst
|
||||||
|
hypervisor-lxc.rst
|
||||||
|
hypervisor-vmware.rst
|
||||||
|
hypervisor-hyper-v.rst
|
||||||
|
hypervisor-virtuozzo.rst
|
||||||
|
|
||||||
|
OpenStack Compute supports many hypervisors, which might make it difficult for
|
||||||
|
you to choose one. Most installations use only one hypervisor. However, you
|
||||||
|
can use :ref:`ComputeFilter` and :ref:`ImagePropertiesFilter` to schedule
|
||||||
|
different hypervisors within the same installation. The following links help
|
||||||
|
you choose a hypervisor. See :doc:`/user/support-matrix` for a detailed list
|
||||||
|
of features and support across the hypervisors.
|
||||||
|
|
||||||
|
The following hypervisors are supported:
|
||||||
|
|
||||||
|
* `KVM`_ - Kernel-based Virtual Machine. The virtual disk formats that it
|
||||||
|
supports is inherited from QEMU since it uses a modified QEMU program to
|
||||||
|
launch the virtual machine. The supported formats include raw images, the
|
||||||
|
qcow2, and VMware formats.
|
||||||
|
|
||||||
|
* `LXC`_ - Linux Containers (through libvirt), used to run Linux-based virtual
|
||||||
|
machines.
|
||||||
|
|
||||||
|
* `QEMU`_ - Quick EMUlator, generally only used for development purposes.
|
||||||
|
|
||||||
|
* `VMware vSphere`_ 5.1.0 and newer - Runs VMware-based Linux and Windows
|
||||||
|
images through a connection with a vCenter server.
|
||||||
|
|
||||||
|
* `Xen (using libvirt) <Xen>`_ - Xen Project Hypervisor using libvirt as
|
||||||
|
management interface into ``nova-compute`` to run Linux, Windows, FreeBSD and
|
||||||
|
NetBSD virtual machines.
|
||||||
|
|
||||||
|
* `XenServer`_ - XenServer, Xen Cloud Platform (XCP) and other XAPI based Xen
|
||||||
|
variants runs Linux or Windows virtual machines. You must install the
|
||||||
|
``nova-compute`` service in a para-virtualized VM.
|
||||||
|
|
||||||
|
* `Hyper-V`_ - Server virtualization with Microsoft Hyper-V, use to run
|
||||||
|
Windows, Linux, and FreeBSD virtual machines. Runs ``nova-compute`` natively
|
||||||
|
on the Windows virtualization platform.
|
||||||
|
|
||||||
|
* `Virtuozzo`_ 7.0.0 and newer - OS Containers and Kernel-based Virtual
|
||||||
|
Machines supported via libvirt virt_type=parallels. The supported formats
|
||||||
|
include ploop and qcow2 images.
|
||||||
|
|
||||||
|
.. _KVM: http://www.linux-kvm.org/page/Main_Page
|
||||||
|
.. _LXC: https://linuxcontainers.org/
|
||||||
|
.. _QEMU: http://wiki.qemu.org/Manual
|
||||||
|
.. _VMware vSphere: https://www.vmware.com/support/vsphere-hypervisor
|
||||||
|
.. _Xen: (using libvirt) <http://www.xenproject.org
|
||||||
|
.. _XenServer: <http://xenserver.org
|
||||||
|
.. _Hyper-V: http://www.microsoft.com/en-us/server-cloud/solutions/virtualization.aspx
|
||||||
|
.. _Virtuozzo: https://virtuozzo.com/products/#product-virtuozzo/
|
30
doc/source/admin/configuration/index.rst
Normal file
30
doc/source/admin/configuration/index.rst
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
===============
|
||||||
|
Configuration
|
||||||
|
===============
|
||||||
|
|
||||||
|
To configure your Compute installation, you must define configuration options
|
||||||
|
in these files:
|
||||||
|
|
||||||
|
* ``nova.conf`` contains most of the Compute configuration options and resides
|
||||||
|
in the ``/etc/nova`` directory.
|
||||||
|
|
||||||
|
* ``api-paste.ini`` defines Compute limits and resides in the ``/etc/nova``
|
||||||
|
directory.
|
||||||
|
|
||||||
|
* Configuration files for related services, such as the Image and Identity
|
||||||
|
services.
|
||||||
|
|
||||||
|
A list of config options based on different topics can be found below:
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
/admin/configuration/api.rst
|
||||||
|
/admin/configuration/resize.rst
|
||||||
|
/admin/configuration/fibre-channel.rst
|
||||||
|
/admin/configuration/iscsi-offload.rst
|
||||||
|
/admin/configuration/hypervisors.rst
|
||||||
|
/admin/configuration/schedulers.rst
|
||||||
|
/admin/configuration/cells.rst
|
||||||
|
/admin/configuration/logs.rst
|
||||||
|
/admin/configuration/samples/index.rst
|
73
doc/source/admin/configuration/iscsi-offload.rst
Normal file
73
doc/source/admin/configuration/iscsi-offload.rst
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
===============================================
|
||||||
|
Configuring iSCSI interface and offload support
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
Compute supports open-iscsi iSCSI interfaces for offload cards. Offload
|
||||||
|
hardware must be present and configured on every compute node where offload is
|
||||||
|
desired. Once an open-iscsi interface is configured, the iface name
|
||||||
|
(``iface.iscsi_ifacename``) should be passed to libvirt via the ``iscsi_iface``
|
||||||
|
parameter for use. All iSCSI sessions will be bound to this iSCSI interface.
|
||||||
|
|
||||||
|
Currently supported transports (``iface.transport_name``) are ``be2iscsi``,
|
||||||
|
``bnx2i``, ``cxgb3i``, ``cxgb4i``, ``qla4xxx``, ``ocs``. Configuration changes
|
||||||
|
are required on the compute node only.
|
||||||
|
|
||||||
|
iSER is supported using the separate iSER LibvirtISERVolumeDriver and will be
|
||||||
|
rejected if used via the ``iscsi_iface`` parameter.
|
||||||
|
|
||||||
|
iSCSI iface configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Note the distinction between the transport name (``iface.transport_name``)
|
||||||
|
and iface name (``iface.iscsi_ifacename``). The actual iface name must be
|
||||||
|
specified via the iscsi_iface parameter to libvirt for offload to work.
|
||||||
|
|
||||||
|
* The default name for an iSCSI iface (open-iscsi parameter
|
||||||
|
``iface.iscsi_ifacename``) is in the format transport_name.hwaddress when
|
||||||
|
generated by ``iscsiadm``.
|
||||||
|
|
||||||
|
* ``iscsiadm`` can be used to view and generate current iface configuration.
|
||||||
|
Every network interface that supports an open-iscsi transport can have one or
|
||||||
|
more iscsi ifaces associated with it. If no ifaces have been configured for a
|
||||||
|
network interface supported by an open-iscsi transport, this command will
|
||||||
|
create a default iface configuration for that network interface. For example
|
||||||
|
:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# iscsiadm -m iface
|
||||||
|
default tcp,<empty>,<empty>,<empty>,<empty>
|
||||||
|
iser iser,<empty>,<empty>,<empty>,<empty>
|
||||||
|
bnx2i.00:05:b5:d2:a0:c2 bnx2i,00:05:b5:d2:a0:c2,5.10.10.20,<empty>,<empty>
|
||||||
|
|
||||||
|
The output is in the format::
|
||||||
|
|
||||||
|
iface_name transport_name,hwaddress,ipaddress,net_ifacename,initiatorname
|
||||||
|
|
||||||
|
* Individual iface configuration can be viewed via
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# iscsiadm -m iface -I IFACE_NAME
|
||||||
|
# BEGIN RECORD 2.0-873
|
||||||
|
iface.iscsi_ifacename = cxgb4i.00:07:43:28:b2:58
|
||||||
|
iface.net_ifacename = <empty>
|
||||||
|
iface.ipaddress = 102.50.50.80
|
||||||
|
iface.hwaddress = 00:07:43:28:b2:58
|
||||||
|
iface.transport_name = cxgb4i
|
||||||
|
iface.initiatorname = <empty>
|
||||||
|
# END RECORD
|
||||||
|
|
||||||
|
Configuration can be updated as desired via
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
# iscsiadm -m iface-I IFACE_NAME--op=update -n iface.SETTING -v VALUE
|
||||||
|
|
||||||
|
* All iface configurations need a minimum of ``iface.iface_name``,
|
||||||
|
``iface.transport_name`` and ``iface.hwaddress`` to be correctly configured
|
||||||
|
to work. Some transports may require ``iface.ipaddress`` and
|
||||||
|
``iface.net_ifacename`` as well to bind correctly.
|
||||||
|
|
||||||
|
Detailed configuration instructions can be found at
|
||||||
|
http://www.open-iscsi.org/docs/README.
|
47
doc/source/admin/configuration/logs.rst
Normal file
47
doc/source/admin/configuration/logs.rst
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
=================
|
||||||
|
Compute log files
|
||||||
|
=================
|
||||||
|
|
||||||
|
The corresponding log file of each Compute service is stored in the
|
||||||
|
``/var/log/nova/`` directory of the host on which each service runs.
|
||||||
|
|
||||||
|
.. list-table:: Log files used by Compute services
|
||||||
|
:widths: 35 35 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Log file
|
||||||
|
- Service name (CentOS/Fedora/openSUSE/Red Hat Enterprise
|
||||||
|
Linux/SUSE Linux Enterprise)
|
||||||
|
- Service name (Ubuntu/Debian)
|
||||||
|
* - ``nova-api.log``
|
||||||
|
- ``openstack-nova-api``
|
||||||
|
- ``nova-api``
|
||||||
|
* - ``nova-cert.log`` [#a]_
|
||||||
|
- ``openstack-nova-cert``
|
||||||
|
- ``nova-cert``
|
||||||
|
* - ``nova-compute.log``
|
||||||
|
- ``openstack-nova-compute``
|
||||||
|
- ``nova-compute``
|
||||||
|
* - ``nova-conductor.log``
|
||||||
|
- ``openstack-nova-conductor``
|
||||||
|
- ``nova-conductor``
|
||||||
|
* - ``nova-consoleauth.log``
|
||||||
|
- ``openstack-nova-consoleauth``
|
||||||
|
- ``nova-consoleauth``
|
||||||
|
* - ``nova-network.log`` [#b]_
|
||||||
|
- ``openstack-nova-network``
|
||||||
|
- ``nova-network``
|
||||||
|
* - ``nova-manage.log``
|
||||||
|
- ``nova-manage``
|
||||||
|
- ``nova-manage``
|
||||||
|
* - ``nova-scheduler.log``
|
||||||
|
- ``openstack-nova-scheduler``
|
||||||
|
- ``nova-scheduler``
|
||||||
|
|
||||||
|
.. rubric:: Footnotes
|
||||||
|
|
||||||
|
.. [#a] The X509 certificate service (``openstack-nova-cert``/``nova-cert``)
|
||||||
|
is only required by the EC2 API to the Compute service.
|
||||||
|
.. [#b] The ``nova`` network service (``openstack-nova-network``/
|
||||||
|
``nova-network``) only runs in deployments that are not configured
|
||||||
|
to use the Networking service (``neutron``).
|
26
doc/source/admin/configuration/resize.rst
Normal file
26
doc/source/admin/configuration/resize.rst
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
================
|
||||||
|
Configure resize
|
||||||
|
================
|
||||||
|
|
||||||
|
Resize (or Server resize) is the ability to change the flavor of a server, thus
|
||||||
|
allowing it to upscale or downscale according to user needs. For this feature
|
||||||
|
to work properly, you might need to configure some underlying virt layers.
|
||||||
|
|
||||||
|
KVM
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Resize on KVM is implemented currently by transferring the images between
|
||||||
|
compute nodes over ssh. For KVM you need hostnames to resolve properly and
|
||||||
|
passwordless ssh access between your compute hosts. Direct access from one
|
||||||
|
compute host to another is needed to copy the VM file across.
|
||||||
|
|
||||||
|
Cloud end users can find out how to resize a server by reading the `OpenStack
|
||||||
|
End User Guide <https://docs.openstack.org/user-guide/
|
||||||
|
cli_change_the_size_of_your_server.html>`_.
|
||||||
|
|
||||||
|
XenServer
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
To get resize to work with XenServer (and XCP), you need to establish a root
|
||||||
|
trust between all hypervisor nodes and provide an ``/image`` mount point to
|
||||||
|
your hypervisors dom0.
|
8
doc/source/admin/configuration/samples/api-paste.ini.rst
Normal file
8
doc/source/admin/configuration/samples/api-paste.ini.rst
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
=============
|
||||||
|
api-paste.ini
|
||||||
|
=============
|
||||||
|
|
||||||
|
The Compute service stores its API configuration settings in the
|
||||||
|
``api-paste.ini`` file.
|
||||||
|
|
||||||
|
.. literalinclude:: /../../etc/nova/api-paste.ini
|
12
doc/source/admin/configuration/samples/index.rst
Normal file
12
doc/source/admin/configuration/samples/index.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
==========================================
|
||||||
|
Compute service sample configuration files
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
Files in this section can be found in ``/etc/nova``.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
api-paste.ini.rst
|
||||||
|
policy.yaml.rst
|
||||||
|
rootwrap.conf.rst
|
9
doc/source/admin/configuration/samples/policy.yaml.rst
Normal file
9
doc/source/admin/configuration/samples/policy.yaml.rst
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
===========
|
||||||
|
policy.yaml
|
||||||
|
===========
|
||||||
|
|
||||||
|
The ``policy.yaml`` file defines additional access controls
|
||||||
|
that apply to the Compute service.
|
||||||
|
|
||||||
|
.. literalinclude:: /_static/nova.policy.yaml.sample
|
||||||
|
:language: yaml
|
13
doc/source/admin/configuration/samples/rootwrap.conf.rst
Normal file
13
doc/source/admin/configuration/samples/rootwrap.conf.rst
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
=============
|
||||||
|
rootwrap.conf
|
||||||
|
=============
|
||||||
|
|
||||||
|
The ``rootwrap.conf`` file defines configuration values
|
||||||
|
used by the rootwrap script when the Compute service needs
|
||||||
|
to escalate its privileges to those of the root user.
|
||||||
|
|
||||||
|
It is also possible to disable the root wrapper, and default
|
||||||
|
to sudo only. Configure the ``disable_rootwrap`` option in the
|
||||||
|
``[workaround]`` section of the ``nova.conf`` configuration file.
|
||||||
|
|
||||||
|
.. literalinclude:: /../../etc/nova/rootwrap.conf
|
1198
doc/source/admin/configuration/schedulers.rst
Normal file
1198
doc/source/admin/configuration/schedulers.rst
Normal file
File diff suppressed because it is too large
Load Diff
@ -167,6 +167,10 @@ Reference Material
|
|||||||
|
|
||||||
* **Configuration**:
|
* **Configuration**:
|
||||||
|
|
||||||
|
* :doc:`Configuration Guide </admin/configuration/index>`: detailed
|
||||||
|
configuration guides for various parts of you Nova system. Helpful
|
||||||
|
reference for setting up specific hypervisor backends.
|
||||||
|
|
||||||
* :doc:`Config Reference </configuration/config>`: a complete reference of all
|
* :doc:`Config Reference </configuration/config>`: a complete reference of all
|
||||||
configuration options available in the nova.conf file.
|
configuration options available in the nova.conf file.
|
||||||
|
|
||||||
@ -210,6 +214,7 @@ looking parts of our architecture. These are collected below.
|
|||||||
:hidden:
|
:hidden:
|
||||||
|
|
||||||
admin/index
|
admin/index
|
||||||
|
admin/configuration/index
|
||||||
cli/index
|
cli/index
|
||||||
configuration/config
|
configuration/config
|
||||||
configuration/sample-config
|
configuration/sample-config
|
||||||
|
Loading…
Reference in New Issue
Block a user