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
  • swift_hash_prefix - der Hash-Präfix des Clusters, einmal gesetzt, sollte er nicht geändert werden
    • Standard ist f9175259-ace0-48bb-af9d-e7ac505b89d2
  • swift_outward_subnet - das routbare CIDR-Subnetz für externe Verbindungen (für Proxy-Knoten)
    • Standard ist 203.0.113.0/24
  • swift_cluster_subnet - das CIDR-Subnetz für die Clusterkommunikation
    • Standard ist 192.0.2.0/24
  • swift_replication_subnet - CIDR-Subnetz für die Replikation (kann dasselbe wie cluster sein)
    • Standard ist 198.51.100.0/24

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
  • swift_cluster_ip - IP im Cluster-Netzwerk

    • Zum Beispiel 192.0.2.11
  • swift_replication_ip - IP im Replikationsnetzwerk

    • Zum Beispiel 198.51.100.11
  • swift_vips - Liste der Proxy-IP-Adressen, 4. Oktett der IP

    • Jeder 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 VIPs 203.0.113.111, 203.0.113.112 und 203.0.113.113 will.

      swift_vips:
        - 111
        - 112
        - 113
      
  • swift_rings_disks - Liste von Dictionnaires, die definieren, welche Festplatten für welchen Ring verwendet werden

    • Die 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 (oder all)
  • 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

Über das Projekt

Define and manage guests and networks on a KVM host with Ansible

Installieren
ansible-galaxy install csmart.swift
GitHub Repository
Lizenz
gpl-3.0
Downloads
99
Besitzer
Just another Linux guy.