Skip to content

Commit ca1b970

Browse files
committed
docs: add full cloud shutdown and startup procedure
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
1 parent e7855ec commit ca1b970

3 files changed

Lines changed: 445 additions & 211 deletions

File tree

doc/source/operations/control-plane-operation.rst

Lines changed: 24 additions & 211 deletions
Original file line numberDiff line numberDiff line change
@@ -84,162 +84,53 @@ the monitoring service rather than the host being monitored).
8484
Control Plane Shutdown Procedure
8585
================================
8686

87-
Overview
88-
--------
87+
For a shutdown of the whole cloud, see :doc:`shutdown-and-startup`.
8988

90-
* Verify integrity of clustered components (RabbitMQ, Galera, Keepalived). They
91-
should all report a healthy status.
92-
* Put node into maintenance mode in bifrost to prevent it from automatically
93-
powering back on
94-
* Shutdown down nodes one at a time gracefully using systemctl poweroff
89+
Single-node maintenance
90+
-----------------------
9591

96-
Controllers
97-
-----------
98-
99-
If you are restarting the controllers, it is best to do this one controller at
100-
a time to avoid the clustered components losing quorum.
92+
Before shutting down a compute node, migrate its instances to another node.
93+
See :doc:`migrating-vm`.
10194

102-
Checking Galera state
103-
+++++++++++++++++++++
95+
Before shutting down a controller, repeat the cluster checks from
96+
:ref:`shutdown-pre-flight`. Shut down only one controller at a time.
10497

105-
On each controller perform the following:
98+
For a Bifrost-managed compute, controller, network or monitoring node, run on
99+
the seed VM:
106100

107101
.. code-block:: console
108102
109-
[stack@controller0 ~]$ docker exec -i mariadb mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_local_state_comment'"
110-
Variable_name Value
111-
wsrep_local_state_comment Synced
103+
docker exec bifrost_deploy baremetal --os-cloud bifrost \
104+
node maintenance set --reason maintenance <node>
105+
docker exec bifrost_deploy baremetal --os-cloud bifrost \
106+
node power off --soft <node>
112107
113-
The password can be found using:
108+
Wait for the node to reach ``power off``. To start it again:
114109

115110
.. code-block:: console
116111
117-
ansible-vault view $KAYOBE_CONFIG_PATH/kolla/passwords.yml \
118-
--vault-password-file <Vault password file path> | grep ^database
112+
docker exec bifrost_deploy baremetal --os-cloud bifrost \
113+
node power on <node>
119114
120-
Checking RabbitMQ
121-
+++++++++++++++++
122-
123-
RabbitMQ health is determined using the command ``rabbitmqctl cluster_status``:
115+
After the node is healthy, remove maintenance mode:
124116

125117
.. code-block:: console
126118
127-
[stack@controller0 ~]$ docker exec rabbitmq rabbitmqctl cluster_status
128-
129-
Cluster status of node rabbit@controller0 ...
130-
[{nodes,[{disc,['rabbit@controller0','rabbit@controller1',
131-
'rabbit@controller2']}]},
132-
{running_nodes,['rabbit@controller1','rabbit@controller2',
133-
'rabbit@controller0']},
134-
{cluster_name,<<"rabbit@controller2">>},
135-
{partitions,[]},
136-
{alarms,[{'rabbit@controller1',[]},
137-
{'rabbit@controller2',[]},
138-
{'rabbit@controller0',[]}]}]
139-
140-
Checking Keepalived
141-
+++++++++++++++++++
119+
docker exec bifrost_deploy baremetal --os-cloud bifrost \
120+
node maintenance unset <node>
142121
143-
On (for example) three controllers:
122+
For a seed VM hosted on the seed hypervisor, run on the seed hypervisor to stop
123+
it:
144124

145125
.. code-block:: console
146126
147-
[stack@controller0 ~]$ docker logs keepalived
127+
virsh shutdown <seed VM>
148128
149-
Two instances should show:
129+
To start it again:
150130

151131
.. code-block:: console
152132
153-
VRRP_Instance(kolla_internal_vip_51) Entering BACKUP STATE
154-
155-
and the other:
156-
157-
.. code-block:: console
158-
159-
VRRP_Instance(kolla_internal_vip_51) Entering MASTER STATE
160-
161-
Ansible Control Host
162-
--------------------
163-
164-
The Ansible control host is not enrolled in bifrost. This node may run services
165-
such as the seed virtual machine which will need to be gracefully powered down.
166-
167-
Compute
168-
-------
169-
170-
If you are shutting down a single hypervisor, to avoid down time to tenants it
171-
is advisable to migrate all of the instances to another machine. See
172-
:ref:`evacuating-all-instances`.
173-
174-
Ceph
175-
----
176-
177-
#. Check that the cluster is healthy (i.e. ``ceph -s``). Where possible, solve
178-
or isolate any issues before the shutdown e.g. by marking unhealthy OSDs as
179-
'out' in the cluster.
180-
181-
#. Stop all clients. This includes
182-
183-
* **All** OpenStack VMs (if their storage is RBD-backed).
184-
185-
* CephFS mounts.
186-
187-
* Ceph-backed OpenStack services such as Glance, Cinder, Manila, and RGW/S3/Swift.
188-
189-
#. Set the ``noout`` flag, so that the cluster does not attempt to redistribute
190-
data when OSDs go down. Use the following command on a MON node:
191-
192-
.. code-block:: console
193-
194-
sudo cephadm shell -- ceph osd set noout
195-
196-
#. Shut down all the nodes, with those holding MON services last.
197-
198-
Note that if it is not desired for Ceph services to automatically start later
199-
with the operating system, extra steps need to be taken and are not described
200-
here.
201-
202-
Shutting down the seed VM
203-
-------------------------
204-
205-
.. code-block:: console
206-
207-
virsh shutdown <Seed hostname>
208-
209-
.. _full-shutdown:
210-
211-
Full shutdown
212-
-------------
213-
214-
In case a full shutdown of the system is required, we advise to use the
215-
following order:
216-
217-
* Perform a graceful shutdown of all virtual machine instances
218-
* Shut down compute nodes
219-
* Shut down monitoring node (if separate from controllers)
220-
* Shut down network nodes (if separate from controllers)
221-
* Shut down controllers
222-
* Shut down Ceph nodes (if applicable)
223-
* Shut down seed VM
224-
* Shut down Ansible control host
225-
226-
Full startup
227-
-------------
228-
229-
If the entire control plane is powered down, it is best to bring the nodes up
230-
in the reverse order of shutdown:
231-
232-
* Power on Ansible control host
233-
* Power on seed VM (and other service VMs)
234-
* Power on Ceph nodes (if applicable)
235-
* Where possible, start the nodes running MON services first.
236-
* Make sure that all OSD services are back up and running. At this point
237-
it is safe to unset the ``noout`` cluster flag.
238-
* Power on controllers
239-
* Power on network nodes (if separate from controllers)
240-
* Power on monitoring node (if separate from controllers)
241-
* Power on compute nodes
242-
* Power on virtual machines
133+
virsh start <seed VM>
243134
244135
Rebooting a node
245136
----------------
@@ -251,84 +142,6 @@ Example: Reboot all compute hosts apart from compute0:
251142
252143
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/maintenance/reboot.yml --limit 'compute:!compute0'
253144
254-
References
255-
----------
256-
257-
* https://galeracluster.com/library/training/tutorials/restarting-cluster.html
258-
259-
Control Plane Power on Procedure
260-
================================
261-
262-
Overview
263-
--------
264-
265-
* Remove the node from maintenance mode in bifrost
266-
* Bifrost should automatically power on the node via IPMI
267-
* Check that all docker containers are running
268-
* Check OpenSearch Dashboards for any messages with log level ERROR or equivalent
269-
270-
Controllers
271-
-----------
272-
273-
If all of the servers were shut down at the same time, it is necessary to run a
274-
script to recover the database once they have all started up. This can be done
275-
with the following command:
276-
277-
.. code-block:: console
278-
279-
kayobe overcloud database recover
280-
281-
Ansible Control Host
282-
--------------------
283-
284-
The Ansible control host is not enrolled in Bifrost and will have to be powered
285-
on manually.
286-
287-
Seed VM
288-
-------
289-
290-
The seed VM (and any other service VM) should start automatically when the seed
291-
hypervisor is powered on. If it does not, it can be started with:
292-
293-
.. code-block:: console
294-
295-
virsh start <Seed hostname>
296-
297-
Full power on
298-
-------------
299-
300-
Follow the order in :ref:`full-shutdown`, but in reverse order.
301-
302-
Shutting Down / Restarting Monitoring Services
303-
----------------------------------------------
304-
305-
Shutting down
306-
+++++++++++++
307-
308-
Log into the monitoring host(s):
309-
310-
.. code-block:: console
311-
312-
ssh stack@monitoring0
313-
314-
Stop all Docker containers:
315-
316-
.. code-block:: console
317-
318-
monitoring0# for i in `docker ps -a`; do systemctl stop kolla-$i-container; done
319-
320-
Shut down the node:
321-
322-
.. code-block:: console
323-
324-
monitoring0# sudo shutdown -h
325-
326-
Starting up
327-
+++++++++++
328-
329-
The monitoring services containers will automatically start when the monitoring
330-
node is powered back on.
331-
332145
Software Updates
333146
================
334147

doc/source/operations/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ This guide is for operators of the StackHPC Kayobe configuration project.
99

1010
ceph-management
1111
control-plane-operation
12+
shutdown-and-startup
1213
customising-horizon
1314
database-backups
1415
gpu-in-openstack

0 commit comments

Comments
 (0)