]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
cephadm: reschedule haproxy from an offline host
authorMichael Fritch <mfritch@suse.com>
Mon, 17 Apr 2023 14:14:07 +0000 (08:14 -0600)
committerAdam King <adking@redhat.com>
Sat, 20 May 2023 16:29:38 +0000 (12:29 -0400)
The ingress service (haproxy+keepalived) should be redeployed from an
offline host to allow for client recovery during failover.

Fixes: https://tracker.ceph.com/issues/59472
Signed-off-by: Michael Fritch <mfritch@suse.com>
(cherry picked from commit 5273a86588b37993a5457fb6a16e3940a53d8a47)

src/pybind/mgr/cephadm/tests/test_scheduling.py
src/pybind/mgr/cephadm/utils.py

index fcdee838bb4c8f5b1797f61706abdbe2415c8838..11beffd158e6d77735dd8dfcac29392e71c7aebe 100644 (file)
@@ -1577,12 +1577,40 @@ class RescheduleFromOfflineTest(NamedTuple):
                                  [[]],
                                  [[]],
                              ),
+                             RescheduleFromOfflineTest(
+                                 'ingress',
+                                 PlacementSpec(count=1),
+                                 'host1 host2'.split(),
+                                 [],
+                                 ['host2'],
+                                 [
+                                     DaemonDescription('haproxy', 'b', 'host2'),
+                                     DaemonDescription('keepalived', 'b', 'host2'),
+                                 ],
+                                 [['host1']],
+                                 [[]],
+                             ),
                          ])
 def test_remove_from_offline(service_type, placement, hosts, maintenance_hosts, offline_hosts, daemons, expected_add, expected_remove):
 
-    spec = ServiceSpec(service_type=service_type,
-                       service_id='test',
-                       placement=placement)
+    if service_type == 'ingress':
+        spec = \
+            IngressSpec(
+                service_type='ingress',
+                service_id='nfs-ha.foo',
+                frontend_port=443,
+                monitor_port=8888,
+                virtual_ip='10.0.0.20/8',
+                backend_service='nfs-ha.foo',
+                placement=placement,
+            )
+    else:
+        spec = \
+            ServiceSpec(
+                service_type=service_type,
+                service_id='test',
+                placement=placement,
+            )
 
     host_specs = [HostSpec(h) for h in hosts]
     for h in host_specs:
index ebceba7ceae9baee2847750fb2877903dc88432c..4ea4cfb1eb01bb79e81caacadf9c8e8369845d44 100644 (file)
@@ -26,7 +26,7 @@ CEPH_TYPES = ['mgr', 'mon', 'crash', 'osd', 'mds', 'rgw',
 GATEWAY_TYPES = ['iscsi', 'nfs']
 MONITORING_STACK_TYPES = ['node-exporter', 'prometheus',
                           'alertmanager', 'grafana', 'loki', 'promtail']
-RESCHEDULE_FROM_OFFLINE_HOSTS_TYPES = ['nfs']
+RESCHEDULE_FROM_OFFLINE_HOSTS_TYPES = ['haproxy', 'nfs']
 
 CEPH_UPGRADE_ORDER = CEPH_TYPES + GATEWAY_TYPES + MONITORING_STACK_TYPES