@@ -26,9 +26,13 @@ Laski gave at the Austin (Newton) summit which may be worth watching.
26
26
Overview
27
27
--------
28
28
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:
32
36
33
37
- The :program: `nova-api ` service which provides the external REST API to
34
38
users.
@@ -43,7 +47,7 @@ A basic Nova system consists of the following components:
43
47
instances being built but not yet scheduled.
44
48
45
49
- 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
47
51
48
52
- The :program: `nova-compute ` service which manages the virt driver and
49
53
hypervisor host.
@@ -60,15 +64,19 @@ A basic Nova system consists of the following components:
60
64
- A message queue which allows the services to communicate with each
61
65
other via RPC.
62
66
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.
72
80
73
81
In these larger deployments, each of the nova services will use a cell-specific
74
82
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*.
98
106
lower-level services. See the ``nova-manage `` :ref: `man-page-cells-v2 `
99
107
commands for more information about how to create and examine these records.
100
108
109
+ The following section goes into more detail about the difference between
110
+ single-cell and multi-cell deployments.
111
+
101
112
102
113
Service layout
103
114
--------------
@@ -242,70 +253,42 @@ any other API-layer services via RPC, nor do they have access to the
242
253
API database for global visibility of resources across the cloud.
243
254
This is intentional and provides security and failure domain
244
255
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.
249
259
250
260
251
261
Database layout
252
262
---------------
253
263
254
264
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.
256
267
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
+ ~~~~~~~~~~~~
263
270
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.
266
276
267
- Global (API -level) tables
268
- ~~~~~~~~~~~~~~~~~~~~~~~~~
277
+ Main (cell -level) database
278
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
269
279
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.
301
284
302
285
303
286
Usage
304
287
-----
305
288
306
289
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
309
292
configuration-related, both in the main nova configuration file as well as some
310
293
extra records in the databases.
311
294
@@ -345,11 +328,11 @@ Configuring a new deployment
345
328
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
346
329
347
330
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:
353
336
354
337
.. code-block :: ini
355
338
@@ -557,7 +540,6 @@ existing instances to the new cell(s). For example:
557
540
have been mapped. An exit code of 1 indicates that there are remaining
558
541
instances that need to be mapped.
559
542
560
-
561
543
Template URLs in Cell Mappings
562
544
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
563
545
@@ -1152,7 +1134,7 @@ real-world users of the feature.
1152
1134
- `Rocky Summit Video - Moving from CellsV1 to CellsV2 at CERN `__
1153
1135
- `Stein Summit Video - Scaling Nova with CellsV2: The Nova Developer and the
1154
1136
CERN Operator perspective `__
1155
- - `Ussuri Summit Video - What's new in Nova Cellsv2? `__
1137
+ - `Train Summit Video - What's new in Nova Cellsv2? `__
1156
1138
1157
1139
.. __ : https://www.openstack.org/videos/austin-2016/nova-cells-v2-whats-going-on
1158
1140
.. __ : https://www.openstack.org/videos/boston-2017/scaling-nova-how-cellsv2-affects-your-deployment
0 commit comments