Skip to content

Commit b6fe752

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "docs: Follow-ups for cells v2, architecture docs"
2 parents 87dd10d + 136f1de commit b6fe752

File tree

5 files changed

+104
-115
lines changed

5 files changed

+104
-115
lines changed

doc/source/admin/architecture.rst

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,26 @@ reads/writes, optionally sending RPC messages to other Nova services,
1111
and generating responses to the REST calls.
1212
RPC messaging is done via the **oslo.messaging** library,
1313
an abstraction on top of message queues.
14-
Nova uses a messaging-based, ``shared nothing`` architecture and most of the
14+
Nova uses a messaging-based, "shared nothing" architecture and most of the
1515
major nova components can be run on multiple servers, and have a manager that
1616
is listening for RPC messages.
17-
The one major exception is ``nova-compute``, where a single process runs on the
17+
The one major exception is the compute service, where a single process runs on the
1818
hypervisor it is managing (except when using the VMware or Ironic drivers).
1919
The manager also, optionally, has periodic tasks.
20-
For more details on our RPC system, please see: :doc:`/reference/rpc`
20+
For more details on our RPC system, refer to :doc:`/reference/rpc`.
2121

22-
Nova also uses a central database that is (logically) shared between all
23-
components. However, to aid upgrade, the DB is accessed through an object
24-
layer that ensures an upgraded control plane can still communicate with
25-
a ``nova-compute`` running the previous release.
26-
To make this possible ``nova-compute`` proxies DB requests over RPC to a
27-
central manager called ``nova-conductor``.
22+
Nova uses traditional SQL databases to store information.
23+
These are (logically) shared between multiple components.
24+
To aid upgrade, the database is accessed through an object layer that ensures
25+
an upgraded control plane can still communicate with a compute nodes running
26+
the previous release.
27+
To make this possible, services running on the compute node proxy database
28+
requests over RPC to a central manager called the conductor.
2829

2930
To horizontally expand Nova deployments, we have a deployment sharding
30-
concept called cells. For more information please see: :doc:`/admin/cells`
31+
concept called :term:`cells <cell>`.
32+
All deployments contain at least one cell.
33+
For more information, refer to :doc:`/admin/cells`.
3134

3235

3336
Components
@@ -109,11 +112,9 @@ projects on a shared system, and role-based access assignments. Roles control
109112
the actions that a user is allowed to perform.
110113

111114
Projects are isolated resource containers that form the principal
112-
organizational structure within the Nova service. They typically consist of an
113-
individual VLAN, and volumes, instances, images, keys, and users. A user can
114-
specify the project by appending ``project_id`` to their access key. If no
115-
project is specified in the API request, Nova attempts to use a project with
116-
the same ID as the user.
115+
organizational structure within the Nova service. They typically consist of
116+
networks, volumes, instances, images, keys, and users. A user can
117+
specify the project by appending ``project_id`` to their access key.
117118

118119
For projects, you can use quota controls to limit the number of processor cores
119120
and the amount of RAM that can be allocated. Other projects also allow quotas
@@ -142,21 +143,22 @@ consumption across available hardware resources.
142143
Block storage
143144
-------------
144145

145-
OpenStack provides two classes of block storage: ephemeral storage and
146-
persistent volume.
146+
OpenStack provides two classes of block storage: storage that is provisioned by
147+
Nova itself, and storage that is managed by the block storage service, Cinder.
147148

148-
.. rubric:: Ephemeral storage
149+
.. rubric:: Nova-provisioned block storage
149150

150-
Ephemeral storage includes a root ephemeral volume and an additional ephemeral
151-
volume. These are provided by nova itself.
151+
Nova provides the ability to create a root disk and an optional "ephemeral"
152+
volume. The root disk will always be present unless the instance is a
153+
:term:`Boot From Volume` instance.
152154

153155
The root disk is associated with an instance, and exists only for the life of
154156
this very instance. Generally, it is used to store an instance's root file
155157
system, persists across the guest operating system reboots, and is removed on
156158
an instance deletion. The amount of the root ephemeral volume is defined by the
157159
flavor of an instance.
158160

159-
In addition to the ephemeral root volume, flavors can provide an additional
161+
In addition to the root volume, flavors can provide an additional
160162
ephemeral block device. It is represented as a raw block device with no
161163
partition table or file system. A cloud-aware operating system can discover,
162164
format, and mount such a storage device. Nova defines the default file system
@@ -171,17 +173,17 @@ is possible to configure other filesystem types.
171173
mounts it on ``/mnt``. This is a cloud-init feature, and is not an OpenStack
172174
mechanism. OpenStack only provisions the raw storage.
173175

174-
.. rubric:: Persistent volume
176+
.. rubric:: Cinder-provisioned block storage
175177

176-
A persistent volume is represented by a persistent virtualized block device
177-
independent of any particular instance. These are provided by the OpenStack
178-
Block Storage service, cinder.
178+
The OpenStack Block Storage service, Cinder, provides persistent volumes hat
179+
are represented by a persistent virtualized block device independent of any
180+
particular instance.
179181

180182
Persistent volumes can be accessed by a single instance or attached to multiple
181183
instances. This type of configuration requires a traditional network file
182184
system to allow multiple instances accessing the persistent volume. It also
183185
requires a traditional network file system like NFS, CIFS, or a cluster file
184-
system such as GlusterFS. These systems can be built within an OpenStack
186+
system such as Ceph. These systems can be built within an OpenStack
185187
cluster, or provisioned outside of it, but OpenStack software does not provide
186188
these features.
187189

@@ -194,14 +196,6 @@ if the instance is shut down. For more information about this type of
194196
configuration, see :cinder-doc:`Introduction to the Block Storage service
195197
<configuration/block-storage/block-storage-overview.html>`.
196198

197-
.. note::
198-
199-
A persistent volume does not provide concurrent access from multiple
200-
instances. That type of configuration requires a traditional network file
201-
system like NFS, or CIFS, or a cluster file system such as GlusterFS. These
202-
systems can be built within an OpenStack cluster, or provisioned outside of
203-
it, but OpenStack software does not provide these features.
204-
205199

206200
Building blocks
207201
---------------
@@ -245,7 +239,7 @@ The displayed image attributes are:
245239

246240
Virtual hardware templates are called ``flavors``. By default, these are
247241
configurable by admin users, however, that behavior can be changed by redefining
248-
the access controls ``policy.yaml`` on the ``nova-compute`` server. For more
242+
the access controls ``policy.yaml`` on the ``nova-api`` server. For more
249243
information, refer to :doc:`/configuration/policy`.
250244

251245
For a list of flavors that are available on your system:

doc/source/admin/availability-zones.rst

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,22 @@ Availability Zones
99
zones, refer to the :doc:`user guide </user/availability-zones>`.
1010

1111
Availability Zones are an end-user visible logical abstraction for partitioning
12-
a cloud without knowing the physical infrastructure. Availability zones are not
13-
modeled in the database; rather, they are defined by attaching specific
14-
metadata information to an :doc:`aggregate </admin/aggregates>` The addition of
15-
this specific metadata to an aggregate makes the aggregate visible from an
16-
end-user perspective and consequently allows users to schedule instances to a
17-
specific set of hosts, the ones belonging to the aggregate.
18-
19-
However, despite their similarities, there are a few additional differences to
20-
note when comparing availability zones and host aggregates:
12+
a cloud without knowing the physical infrastructure. They can be used to
13+
partition a cloud on arbitrary factors, such as location (country, datacenter,
14+
rack), network layout and/or power source.
15+
16+
.. note::
17+
18+
Availability Zones should not be assumed to map to fault domains and provide
19+
no intrinsic HA benefit by themselves.
20+
21+
Availability zones are not modeled in the database; rather, they are defined by
22+
attaching specific metadata information to an
23+
:doc:`aggregate </admin/aggregates>` The addition of this specific metadata to
24+
an aggregate makes the aggregate visible from an end-user perspective and
25+
consequently allows users to schedule instances to a specific set of hosts, the
26+
ones belonging to the aggregate. There are a few additional differences to note
27+
when comparing availability zones and host aggregates:
2128

2229
- A host can be part of multiple aggregates but it can only be in one
2330
availability zone.

doc/source/admin/cells.rst

Lines changed: 50 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,13 @@ Laski gave at the Austin (Newton) summit which may be worth watching.
2626
Overview
2727
--------
2828

29-
The purpose of the cells functionality in nova is specifically to
30-
allow larger deployments to shard their many compute nodes into cells.
31-
A basic Nova system consists of the following components:
29+
The purpose of the cells functionality in nova is to allow larger deployments
30+
to shard their many compute nodes into cells. All nova deployments are by
31+
definition cells deployments, even if most will only ever have a single cell.
32+
This means a multi-cell deployment will not b radically different from a
33+
"standard" nova deployment.
34+
35+
Consider such a deployment. It will consists of the following components:
3236

3337
- The :program:`nova-api` service which provides the external REST API to
3438
users.
@@ -43,7 +47,7 @@ A basic Nova system consists of the following components:
4347
instances being built but not yet scheduled.
4448

4549
- The :program:`nova-conductor` service which offloads long-running tasks for
46-
the API-level service and insulates compute nodes from direct database access
50+
the API-level services and insulates compute nodes from direct database access
4751

4852
- The :program:`nova-compute` service which manages the virt driver and
4953
hypervisor host.
@@ -60,15 +64,19 @@ A basic Nova system consists of the following components:
6064
- A message queue which allows the services to communicate with each
6165
other via RPC.
6266

63-
All deployments have at least the above components. Smaller deployments
64-
likely have a single message queue that all services share and a
65-
single database server which hosts the API database, a single cell
66-
database, as well as the required cell0 database. This is considered a
67-
"single-cell deployment" because it only has one "real" cell.
68-
However, while there will only ever be one global API database, a larger
69-
deployments can have many cell databases (where the bulk of the instance
70-
information lives), each with a portion of the instances for the entire
71-
deployment within, as well as per-cell message queues.
67+
In smaller deployments, there will typically be a single message queue that all
68+
services share and a single database server which hosts the API database, a
69+
single cell database, as well as the required cell0 database. Because we only
70+
have one "real" cell, we consider this a "single-cell deployment".
71+
72+
In larger deployments, we can opt to shard the deployment using multiple cells.
73+
In this configuration there will still only be one global API database but
74+
there will be a cell database (where the bulk of the instance information
75+
lives) for each cell, each containing a portion of the instances for the entire
76+
deployment within, as well as per-cell message queues and per-cell
77+
:program:`nova-conductor` instances. There will also be an additional
78+
:program:`nova-conductor` instance, known as a *super conductor*, to handle
79+
API-level operations.
7280

7381
In these larger deployments, each of the nova services will use a cell-specific
7482
configuration file, all of which will at a minimum specify a message queue
@@ -98,6 +106,9 @@ other cells in the API database, with records called *cell mappings*.
98106
lower-level services. See the ``nova-manage`` :ref:`man-page-cells-v2`
99107
commands for more information about how to create and examine these records.
100108

109+
The following section goes into more detail about the difference between
110+
single-cell and multi-cell deployments.
111+
101112

102113
Service layout
103114
--------------
@@ -242,70 +253,42 @@ any other API-layer services via RPC, nor do they have access to the
242253
API database for global visibility of resources across the cloud.
243254
This is intentional and provides security and failure domain
244255
isolation benefits, but also has impacts on some things that would
245-
otherwise require this any-to-any communication style. Check the
246-
release notes for the version of Nova you are using for the most
247-
up-to-date information about any caveats that may be present due to
248-
this limitation.
256+
otherwise require this any-to-any communication style. Check :ref:`upcall`
257+
below for the most up-to-date information about any caveats that may be present
258+
due to this limitation.
249259

250260

251261
Database layout
252262
---------------
253263

254264
As mentioned previously, there is a split between global data and data that is
255-
local to a cell.
265+
local to a cell. These databases schema are referred to as the *API* and *main*
266+
database schemas, respectively.
256267

257-
The following is a breakdown of what data can uncontroversially considered
258-
global versus local to a cell. Missing data will be filled in as consensus is
259-
reached on the data that is more difficult to cleanly place. The missing data
260-
is mostly concerned with scheduling and networking.
261-
262-
.. note::
268+
API database
269+
~~~~~~~~~~~~
263270

264-
This list of tables is accurate as of the 15.0.0 (Pike) release. It's
265-
possible that schema changes may have added additional tables since.
271+
The API database is the database used for API-level services, such as
272+
:program:`nova-api` and, in a multi-cell deployment, the superconductor.
273+
The models and migrations related to this database can be found in
274+
``nova.db.api``, and the database can be managed using the
275+
:program:`nova-manage api_db` commands.
266276

267-
Global (API-level) tables
268-
~~~~~~~~~~~~~~~~~~~~~~~~~
277+
Main (cell-level) database
278+
~~~~~~~~~~~~~~~~~~~~~~~~~~
269279

270-
- ``instance_types``
271-
- ``instance_type_projects``
272-
- ``instance_type_extra_specs``
273-
- ``quotas``
274-
- ``project_user_quotas``
275-
- ``quota_classes``
276-
- ``quota_usages``
277-
- ``security_groups``
278-
- ``security_group_rules``
279-
- ``security_group_default_rules``
280-
- ``provider_fw_rules``
281-
- ``key_pairs``
282-
- ``migrations``
283-
- ``networks``
284-
- ``tags``
285-
286-
Cell-level tables
287-
~~~~~~~~~~~~~~~~~
288-
289-
- ``instances``
290-
- ``instance_info_caches``
291-
- ``instance_extra``
292-
- ``instance_metadata``
293-
- ``instance_system_metadata``
294-
- ``instance_faults``
295-
- ``instance_actions``
296-
- ``instance_actions_events``
297-
- ``instance_id_mappings``
298-
- ``pci_devices``
299-
- ``block_device_mapping``
300-
- ``virtual_interfaces``
280+
The main database is the database used for cell-level :program:`nova-conductor`
281+
instances. The models and migrations related to this database can be found in
282+
``nova.db.main``, and the database can be managed using the
283+
:program:`nova-manage db` commands.
301284

302285

303286
Usage
304287
-----
305288

306289
As noted previously, all deployments are in effect now cells v2 deployments. As
307-
a result, setup of a any nova deployment - even those that intend to only have
308-
once cell - will involve some level of cells configuration. These changes are
290+
a result, setup of any nova deployment - even those that intend to only have
291+
one cell - will involve some level of cells configuration. These changes are
309292
configuration-related, both in the main nova configuration file as well as some
310293
extra records in the databases.
311294

@@ -345,11 +328,11 @@ Configuring a new deployment
345328
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
346329

347330
If you are installing Nova for the first time and have no compute hosts in the
348-
database yet then it will be necessary to configure cell0 and at least once
349-
additional "real" cell. To begin, ensure your API database has been created
350-
using the :program:`nova-manage api_db sync` command. Ensure the connection
351-
information for this database is stored in the ``nova.conf`` file using the
352-
:oslo.config:option:`api_database.connection` config option:
331+
database yet then it will be necessary to configure cell0 and at least one
332+
additional "real" cell. To begin, ensure your API database schema has been
333+
populated using the :program:`nova-manage api_db sync` command. Ensure the
334+
connection information for this database is stored in the ``nova.conf`` file
335+
using the :oslo.config:option:`api_database.connection` config option:
353336

354337
.. code-block:: ini
355338
@@ -557,7 +540,6 @@ existing instances to the new cell(s). For example:
557540
have been mapped. An exit code of 1 indicates that there are remaining
558541
instances that need to be mapped.
559542

560-
561543
Template URLs in Cell Mappings
562544
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
563545

@@ -1152,7 +1134,7 @@ real-world users of the feature.
11521134
- `Rocky Summit Video - Moving from CellsV1 to CellsV2 at CERN`__
11531135
- `Stein Summit Video - Scaling Nova with CellsV2: The Nova Developer and the
11541136
CERN Operator perspective`__
1155-
- `Ussuri Summit Video - What's new in Nova Cellsv2?`__
1137+
- `Train Summit Video - What's new in Nova Cellsv2?`__
11561138

11571139
.. __: https://www.openstack.org/videos/austin-2016/nova-cells-v2-whats-going-on
11581140
.. __: https://www.openstack.org/videos/boston-2017/scaling-nova-how-cellsv2-affects-your-deployment

doc/source/admin/index.rst

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,7 @@ the defaults from the :doc:`install guide </install/index>` will be sufficient.
101101

102102
* :doc:`Availablity Zones </admin/availability-zones>`: Availability Zones are
103103
an end-user visible logical abstraction for partitioning a cloud without
104-
knowing the physical infrastructure. They can be used to partition a cloud on
105-
arbitrary factors, such as location (country, datacenter, rack), network
106-
layout and/or power source.
104+
knowing the physical infrastructure.
107105

108106
* :placement-doc:`Placement service <>`: Overview of the placement
109107
service, including how it fits in with the rest of nova.

doc/source/reference/glossary.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ Glossary
2323
has an empty ("") ``image`` parameter in ``GET /servers/{server_id}``
2424
responses.
2525

26+
Cell
27+
A cell is a shard or horizontal partition in a nova deployment.
28+
A cell mostly consists of a database, queue, and set of compute nodes.
29+
All deployments willl have at least one cell (and one "fake" cell).
30+
Larger deployments can have many.
31+
32+
For more information, refer to :doc:`/admin/cells`.
33+
2634
Cross-Cell Resize
2735
A resize (or cold migrate) operation where the source and destination
2836
compute hosts are mapped to different cells. By default, resize and

0 commit comments

Comments
 (0)