[openstack-dev] [nova] Queens PTG recap - cells
Matt Riedemann
mriedemos at gmail.com
Sat Sep 16 16:37:43 UTC 2017
The full etherpad for cells discussions at the PTG is here [1].
We mostly talked about the limitations with multiple cells identified in
Pike [2] and priorities.
Top priorities for cells in Queens
----------------------------------
* Alternate hosts: with multiple cells in a tiered (super) conductor
mode, we don't have reschedules happening when a server build fails on a
compute. Ed Leafe has already started working on the code to build an
object to pass from the scheduler to the super conductor. We'll then
send that from the super conductor down to the compute service in the
cell and then reschedules can happen within a cell using that provided
list of alternative hosts (and pre-determined allocation requests for
Placement provided by the scheduler). We agreed that we should get this
done early in Queens so that we have ample time to flush out and fix bugs.
* Instance listing across multiple cells: this is going to involve
sorting the instance lists we get back from multiple cells, which today
are filtered/sorted in each cell and then returned out of the API in a
"barber pole" pattern. We are not going to use Searchlight for this, but
instead do it with more efficient cross-cell DB queries. Dan Smith is
going to work on this.
Dealing with up-calls
---------------------
In a multi-cell or tiered (super) conductor mode, the cell conductor and
compute services cannot reach the top-level database or message queue.
This breaks a few existing things today.
* Instance affinity reporting from the computes to the scheduler won't
work without the MQ up-call. There is also a check that happens late in
the build process on the compute which checks to see if server group
affinity/anti-affinity policies are maintained which is an up-call to
the API database. Both of these will be solved long-term when we model
distance in Placement, but we are deferring that from Queens. The late
affinity check in the compute is not an issue if you're running a single
cell (not using a tiered super conductor mode deployment) and if you're
running multiple cells, you can configure the cell conductors to have
access to the API database as a workaround. We wouldn't test with this
workaround in CI, but it's an option for people that need it.
* There is a host aggregate up-call when performing live migration with
the xen driver and you're letting the driver determine if block
migration should be used. We decided to just put a note in the code that
this doesn't work and leave it as a limitation for that driver and
scenario, which xen driver maintainers or users can fix if they want,
but we aren't going to make it a priority.
* There is a host aggregate up-call when doing boot from volume and the
compute service creates the volume, it checks to see if the instance AZ
and volume AZ match when [cinder]/cross_az_attach is False (not the
default). Checking the AZ for the instance involves getting the host
aggregates that the instance is in, and those are in the API database.
We agreed that for now, people running multiple cells and using this
cross_az_attach=False setting can configure the cell conductor to reach
the API database, like the late affinity check described above. Sylvain
Bauza is also looking at reasons why we even do this check if the user
did not request a specific AZ, so there could be other general changes
in the design for this cross_az_check later. That is being discussed
here [3].
Other discussion
----------------
* We have a utility to concurrently run database queries against
multiple cells. We are going to look to see if we can retrofit some
linear paths of the code with this utility to improve performance.
* Making the consoleauth service run per-cell is going to be low
priority until some large cells v2 deployments start showing up and
saying that a global consoleauth service is not scaling and it needs to
be fixed.
* We talked about using the "GET /usages" Placement API for counting
quotas rather than iterating that information from the cells, but there
are quite a few open questions about design and edge cases like move
operations and Ironic with custom resource classes. So while this is
something that should make counting quotas perform better, it's
complicated and not a priority for Queens.
* Finally, we also talked about the future of cells v1 and when we can
officially deprecate and remove it. We've already been putting warnings
in the code, docs and config options for a long time about not using
cells v1 and it being replaced with cells v2. *We agreed that if we can
get efficient multi-cell instance listing fixed in Queens, we'll remove
both cells v1 and nova-network in Rocky.* We've been asking that large
cells v1 deployments start checking out cells v2 and what issues they
run into with the transition, at least since the Boston Pike summit, and
so far we haven't gotten any feedback, so we're hoping this timeline
will spur some movement on that front. Dan Smith also called dibs on the
code removal.
[1] https://etherpad.openstack.org/p/nova-ptg-queens-cells
[2]
https://docs.openstack.org/nova/latest/user/cellsv2_layout.html#caveats-of-a-multi-cell-deployment
[3]
http://lists.openstack.org/pipermail/openstack-operators/2017-September/014200.html
--
Thanks,
Matt
More information about the OpenStack-dev
mailing list