Subsections of Cloud

Subsections of Ceph

CRUSHMap händisch anpassen

In manchen Situationen ist es notwendig die CRUSH map von Ceph händisch zu bearbeiten. Ein Beispiel kann die Standard-Regel (replicated_rule) sein, die im Nachhinein angepasst werden soll. Beim Anlegen einer Regel können diverse Parameter gesetzt werden, die nach der Erzeugung mittels CLI nicht mehr angepasst werden können. Um Korrekturen vorzunehmen bietet sich der manuelle Weg an. Die Schritte hierbei sind wie folgt:

  1. CRUSH map in Binär-Datei dumpen
  2. Binärdatei dekompilieren (binär zu Text)
  3. Konfigurationen wie gewünscht anpassen
  4. CRUSH map kompilieren (Text zu binär)
  5. einspielen der CRUSH map

Beispiel

# aktuelles Datum in Variable DATE speichern
DATE=$(date +'%Y-%m-%d')

# CRUSH map in Binärdatei speichern
ceph osd getcrushmap -o crushmap_${DATE}.orig.bin

# Binärdatei dekompilieren (Ausgabe in Textdatei)
crushtool -d crushmap_${DATE}.orig.bin -o crushmap_${DATE}.orig.txt

# Kopie für die Bearbeitung anlegen (Original als Backup zum Vergleichen behalten)
cp crushmap_${DATE}.orig.txt crushmap_${DATE}.new.txt

# Bearbeitung der CRUSH map
vim crushmap_${DATE}.new.txt

# Textdatei kompilieren
crushtool -c crushmap_${DATE}.new.txt -o crushmap_${DATE}.new.bin

# CRUSH map einspielen
ceph osd setcrushmap -i crushmap_${DATE}.new.bin

Subsections of Openstack

Cinder Service löschen

Auflisten der Services / Backends

Mittels Openstack CLI kann ein Cinder Service nicht gelöscht, sondern nur angezeigt / bearbeitet werden:

openstack volume service list
openstack volume service set

Löschen

Hier wird vom Host control2 das nvme-volumes Backend gelöscht.
Vorherige Löschung aus der cinder.conf ist ratsam damit das Backend nicht erneut reported und eingetragen wird.

cinder-manage service list
cinder-manage service remove cinder-volume control2@nvme-volumes

Neutron Router migrieren

Im Fehlerfall und ungeklärten Verhaltensweisen von Openstack Routern kann es gelegentlich helfen diese auf einen neuen Agent umzuziehen.
Dies sorgt dafür, dass die Network Namespaces neu angelegt werden und eventuelle Altlasten abgeräumt werden.

Openstack Client (aktueller Stand)

# Router auflisten (falls ID nicht bekannt ist)
openstack router list

# Agent anzeigen auf dem der Router eingerichtet ist
openstack network agent list --router ${ROUTER_ID}

# Router vom Agent entfernen
openstack network agent remove router --l3 ${OLD_AGENT_ID} ${ROUTER_ID}

# Router auf neuen Agent anlegen
openstack network agent add router --l3 ${NEW_AGENT_ID} ${ROUTER_ID}

Neutron CLI

# Auflisten des Agents auf dem der Router liegt
neutron l3-agent-list-hosting-router ${ROUTER_ID}

# Router vom Agent entfernen
neutron l3-agent-router-remove ${OLD_AGENT_ID} ${ROUTER_ID}

# Router auf neuem Agent anlegen
neutron l3-agent-router-add ${NEW_AGENT_ID} ${ROUTER_ID}