csmart.swift
Swift
Dies ist eine Rolle zum Einrichten und Verwalten von OpenStack Swift-Clustern. Derzeit unterstützt es PACO-Knoten, die alle Swift-Dienste ausführen: Proxy, Account, Container und Object.
Es wird:
- Swift-Knoten vorbereiten, einschließlich der Konfiguration von SELinux und Sicherstellung des SSH-Zugangs
- Repositories hinzufügen und Pakete installieren
- Abhängige Dienste konfigurieren, wie Logging, rsyncd und memcached
- Keepalived für den Failover von Proxy-IPs konfigurieren
- Swift PACO-Dienste konfigurieren
- Anfangskonten-, Container- und Objektringe erstellen
- Festplatten an jedem Knoten vorbereiten, formatieren und gemäß den Ringen einbinden
- Ringe erstellen und verteilen
- Streuung konfigurieren
- Einfache betriebliche Aufgaben wie:
- Ringe aktualisieren und verteilen
- PACO-Dienste neu konfigurieren
- Berichte zur Streuung und Replikation erstellen
Anforderungen
Ein Inventar von bereits existierenden CentOS 8 Stream-Knoten mit konfiguriertem Netzwerk. Der Cluster benötigt einen Admin-Computer (im swift_admin
-Gruppen enthalten), von dem aus alle Swift-Knoten verwaltet werden. Dies kann einer Ihrer Swift-Knoten sein, wenn Sie keinen separaten Admin-Host haben.
Wenn Sie einen virtuellen Swift-Cluster aufbauen, ziehen Sie die Verwendung der Ansible-Rolle csmart.virt_infra
in Betracht auf https://github.com/csmart/ansible-role-virt-infra.
Beispielinventar und Playbooks finden Sie unter https://github.com/csmart/virt-infra-swift für sowohl csmart.virt_infra
als auch csmart.swift
.
Rollenvariablen
Diese Rolle hat eine Reihe von Standardvariablen, die in einzelnen Dateien unter defaults/main/
aufgeteilt sind. Dazu gehören allgemeine Einstellungen für einen Swift-Cluster sowie Vorgaben für bestimmte Swift-Dienste.
- account-rings.yml
- account.yml
- container-rings.yml
- container.yml
- dispersion.yml
- hash.yml
- networks.yml
- object-rings.yml
- object.yml
- packages.yml
- proxy.yml
- swift.yml
- tempauth.yml
Erforderliche globale Variablen, die der Benutzer definieren muss, umfassen:
swift_hash_suffix
- der Hash-Suffix des Clusters, einmal gesetzt, sollte er nicht geändert werden- Standard ist
07b4ef9c-2e01-4ea2-a109-5ffc5273225f
- Standard ist
swift_hash_prefix
- der Hash-Präfix des Clusters, einmal gesetzt, sollte er nicht geändert werden- Standard ist
f9175259-ace0-48bb-af9d-e7ac505b89d2
- Standard ist
swift_outward_subnet
- das routbare CIDR-Subnetz für externe Verbindungen (für Proxy-Knoten)- Standard ist
203.0.113.0/24
- Standard ist
swift_cluster_subnet
- das CIDR-Subnetz für die Clusterkommunikation- Standard ist
192.0.2.0/24
- Standard ist
swift_replication_subnet
- CIDR-Subnetz für die Replikation (kann dasselbe wie cluster sein)- Standard ist
198.51.100.0/24
- Standard ist
Erforderliche spezifische Knotenvariablen, die der Benutzer definieren muss, umfassen:
swift_outward_ip
- IP im nach außen gerichteten Netzwerk- Zum Beispiel
203.0.113.11
- Zum Beispiel
swift_cluster_ip
- IP im Cluster-Netzwerk- Zum Beispiel
192.0.2.11
- Zum Beispiel
swift_replication_ip
- IP im Replikationsnetzwerk- Zum Beispiel
198.51.100.11
- Zum Beispiel
swift_vips
- Liste der Proxy-IP-Adressen, 4. Oktett der IPJeder Proxy-Knoten sollte das 4. Oktett der VIP-IP in der Reihenfolge der Präferenz angeben. Zum Beispiel, basierend auf dem Standard-Subnetz von
203.0.113.0/24
, hier ein Knoten, der VIPs203.0.113.111
,203.0.113.112
und203.0.113.113
will.swift_vips: - 111 - 112 - 113
swift_rings_disks
- Liste von Dictionnaires, die definieren, welche Festplatten für welchen Ring verwendet werdenDie Festplatten jedes Knotens sollten den Pfad und das Gewicht für einen Ring enthalten. Zum Beispiel, hier ist eine SCSI-Festplatte, die für Objekte verwendet wird und eine NVMe, die sowohl für das Konto als auch für den Container verwendet wird.
swift_rings_disks: - disk: device: sdb rings: - name: account weight: 0 - name: container weight: 0 - name: object weight: 100 - disk: device: nvme0n1 rings: - name: account weight: 100 - name: container weight: 100 - name: object weight: 0
Abhängigkeiten
Keine.
Beispiel-Playbook
Das Repository virt-infra-swift
auf https://github.com/csmart/virt-infra-swift bietet eine Reihe von Beispiel-Playbooks und Musterinventar.
Ihr Inventar sollte die folgenden Gruppen enthalten:
swift
(oderall
)swift_admin
swift_proxy
swift_account
swift_container
swift_object
Hier ist ein Beispielinventar für einen dreiknotigen PACO-Swift-Cluster mit erforderlichen Gruppen.
swift:
hosts:
swift-admin:
swift-[01:03]:
children:
swift_admin:
hosts:
swift-admin:
swift_proxy:
hosts:
swift-[01:03]:
swift_account:
hosts:
swift-[01:03]:
swift_container:
hosts:
swift-[01:03]:
swift_object:
hosts:
swift-[01:03]:
Sobald Sie ein grundlegendes Inventar haben, sollte das Erstellen eines einfachen Playbooks einfach sein.
---
- hosts: swift
tasks:
- include_role:
name: csmart.swift
Das Ausführen des Playbooks führt die gesamte Rolle und die Standardaufgaben in der richtigen Reihenfolge aus.
ansible-playbook -i inventory/ site.yml
Die Rolle umfasst auch Tags für jeden Aufgabentyp, sodass Sie ein oder mehrere Playbooks für alle oder spezifische Tags erstellen können.
---
- hosts: swift
tasks:
- include_role:
name: csmart.swift
tags:
- account
- common
- config
- container
- disks
- dispersion
- hosts
- keepalived
- logging
- memcached
- object
- packages
- prep
- proxy
- rings
- rsyncd
- selinux
- services
- system
- update
Führen Sie dann das Playbook für spezifische Tags aus, um nur die Kontodienste neu zu konfigurieren.
ansible-playbook -i inventory/ site.yml --tags account
Lizenz
GPLv3+
Autoreninformation
Chris Smart https://blog.christophersmart.com
Define and manage guests and networks on a KVM host with Ansible
ansible-galaxy install csmart.swift