So erstellen Sie einen Ceph Distributed Storage Cluster auf CentOS 7

Ceph ist eine weit verbreitete Open-Source-Speicherplattform. Es bietet hohe Leistung, Zuverlässigkeit und Skalierbarkeit. Das Ceph-freie verteilte Speichersystem bietet eine Schnittstelle für die Speicherung auf Objekt-, Block- und Dateiebene. Ceph ist so konzipiert, dass es ein verteiltes Speichersystem ohne Single Point of Failure bereitstellt.

In diesem Tutorial führe ich Sie durch die Installation und den Aufbau eines Ceph-Clusters auf CentOS 7. Ein Ceph-Cluster benötigt diese Ceph-Komponenten:

  • Ceph OSDs (ceph-osd) – Behandelt den Datenspeicher, die Datenreplikation und die Wiederherstellung. Ein Ceph-Cluster benötigt mindestens zwei Ceph OSD-Server. Ich werde hier drei CentOS 7 OSD-Server verwenden.
  • Ceph Monitor (ceph-mon) – Überwacht den Clusterstatus, die OSD-Karte und die CRUSH-Karte. Ich werde einen Server verwenden.
  • Ceph Meta Data Server (ceph-mds) – Dies ist erforderlich, um Ceph als Dateisystem zu verwenden.

Voraussetzungen

  • 6 Serverknoten, alle mit installiertem CentOS 7.
  • Root-Privilegien auf allen Knoten.

Die Server in diesem Tutorial verwenden die folgenden Hostnamen und IP-Adressen.

21
osd2 × × × × × × × × × × 10.0.

Alle OSD-Knoten benötigen zwei Partitionen, eine Root-Partition (/) und eine leere Partition, die später als Ceph-Datenspeicher verwendet wird.

Schritt 1 – Alle Knoten konfigurieren

In diesem Schritt werden wir alle 6 Knoten konfigurieren, um sie für die Installation des Ceph Clusters vorzubereiten. Sie müssen alle untenstehenden Befehle auf allen Knoten befolgen und ausführen. Und stellen Sie sicher, dass der ssh-server auf allen Knoten installiert ist.

Einen Ceph-Benutzer anlegen

Erstellen Sie auf allen Knoten einen neuen Benutzer namens „cephuser„.

useradd -d /home/cephuser -m cephuser
passwd cephuser

Nachdem wir den neuen Benutzer angelegt haben, müssen wir sudo für’cephuser‘ konfigurieren. Er muss in der Lage sein, Befehle als root auszuführen und root-Rechte ohne Passwort zu erhalten.

Führen Sie den folgenden Befehl aus, um eine sudoers-Datei für den Benutzer zu erstellen und bearbeiten Sie die Datei /etc/sudoers mit sed.

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

NTP installieren und konfigurieren

Installieren Sie NTP, um Datum und Uhrzeit auf allen Knoten zu synchronisieren. Führen Sie den Befehl ntpdate aus, um Datum und Uhrzeit über das NTP-Protokoll einzustellen, wir verwenden den us pool NTP-Server. Starten Sie dann den NTP-Server und aktivieren Sie ihn zum Startzeitpunkt.

yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.service

Sie können optional noch den NTP Server setzen, z.B. auf die NTP Pool Server.

Open-vm-Tools installieren

Wenn Sie alle Knoten in VMware ausführen, müssen Sie dieses Virtualisierungsprogramm installieren. Andernfalls überspringen Sie diesen Schritt.

yum install -y open-vm-tools

SELinux deaktivieren

Deaktivieren Sie SELinux auf allen Knoten, indem Sie die SELinux-Konfigurationsdatei mit dem sed stream editor bearbeiten.

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Hosts-Datei konfigurieren

Bearbeiten Sie die Datei /etc/hosts auf allen Knoten mit dem vim-Editor und fügen Sie Zeilen mit der IP-Adresse und den Hostnamen aller Clusterknoten hinzu.

vim /etc/hosts

Fügen Sie die untenstehende Konfiguration ein:

10.0.15.10        ceph-admin
10.0.15.11        mon1
10.0.15.21        osd1
10.0.15.22        osd2
10.0.15.23        osd3
10.0.15.15        client

Speichern Sie die Datei und beenden Sie vim.

Jetzt können Sie versuchen, zwischen den Servern mit ihrem Hostnamen zu pingen, um die Netzwerkverbindung zu testen. Beispiel:

ping -c 5 mon1

Konfigurieren der Ceph-Knoten

Schritt 2 – Konfigurieren des SSH-Servers

In diesem Schritt werde ich den ceph-admin Knoten konfigurieren. Der Admin-Knoten wird für die Konfiguration des Monitor-Knotens und der OSD-Knoten verwendet. Melden Sie sich am ceph-admin-Knoten an und werden Sie zum „cephuser„.

ssh root@ceph-admin
su - cephuser

Der Admin-Knoten wird für die Installation und Konfiguration aller Cluster-Knoten verwendet, so dass der Benutzer auf dem ceph-admin-Knoten über Berechtigungen verfügen muss, um sich ohne Passwort mit allen Knoten zu verbinden. Wir müssen den passwortlosen SSH-Zugang für ‚cephuser‘ auf dem Knoten ‚ceph-admin‘ konfigurieren.

Erzeugen Sie die ssh-Schlüssel für‘cephuser‚.

ssh-keygen

lassen Sie die Passphrase leer/leer.

Als nächstes erstellen Sie die Konfigurationsdatei für die ssh-Konfiguration.

vim ~/.ssh/config

Füge die Konfiguration unten ein:

Host ceph-admin
        Hostname ceph-admin
        User cephuser
Host mon1
        Hostname mon1
        User cephuser

Host osd1
        Hostname osd1
        User cephuser

Host osd2
        Hostname osd2
        User cephuser

Host osd3
        Hostname osd3
        User cephuser

Host client
        Hostname client
        User cephuser

Speichern Sie die Datei.

SSH-Schlüssel generieren

Ändert die Berechtigung der Konfigurationsdatei.

chmod 644 ~/.ssh/config

Füge nun den SSH-Schlüssel zu allen Knoten mit dem Befehl ssh-copy-id hinzu.

ssh-keyscan osd1 osd2 osd3 mon1 client >> ~/.ssh/known_hosts
ssh-copy-id osd1
ssh-copy-id osd2
ssh-copy-id osd3
ssh-copy-id mon1
ssh-copy-id client

Geben Sie bei Bedarf Ihr „cephuser“-Passwort ein.

SSH-Schlüssel auf alle Knoten kopieren

Wenn Sie fertig sind, versuchen Sie, über den ceph-admin-Knoten auf den osd1-Server zuzugreifen.

ssh osd1

Schritt 3 – Firewalldaten konfigurieren

Wir werden Firewalld verwenden, um das System zu schützen. In diesem Schritt werden wir Firewald auf allen Knoten aktivieren und dann die Ports öffnen, die von ceph-admon, ceph-mon und ceph-osd benötigt werden.

Melden Sie sich beim ceph-admin Knoten an und starten Sie die Firewall.

ssh root@ceph-admin
systemctl start firewalld
systemctl enable firewalld

Öffnen Sie die Ports 80, 2003 und 4505-4506 und laden Sie dann die Firewall neu.

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2003/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent
sudo firewall-cmd --reload

Melden Sie sich vom ceph-admin-Knoten aus am Monitorknoten ‚mon1‘ an und starten Sie die Firewall.

ssh mon1
sudo systemctl start firewalld
sudo systemctl enable firewalld

Öffnen Sie den neuen Port auf dem Ceph-Monitorknoten und laden Sie die Firewall neu.

sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
sudo firewall-cmd --reload

Schließlich öffnen Sie den Port 6800-7300 auf jedem der osd Knoten – osd1, osd2 und os3.

Melden Sie sich bei jedem OSD-Knoten vom ceph-admin-Knoten an.

ssh osd1
sudo systemctl start firewalld
sudo systemctl enable firewalld

Öffnen Sie die Ports und laden Sie die Firewall neu.

sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
sudo firewall-cmd --reload

Die Firewalld-Konfiguration ist abgeschlossen.

Schritt 4 – Konfigurieren Sie die Ceph OSD-Knoten.

In diesem Tutorial haben wir 3 OSD-Knoten und jeder Knoten hat zwei Partitionen.

  1. /dev/sda für die Root-Partition.
  2. /dev/sdb ist eine leere Partition – in meinem Fall 30GB.

Wir werden /dev/sdb für die Ceph-Diskette verwenden. Melden Sie sich vom ceph-admin-Knoten aus bei allen OSD-Knoten an und formatieren Sie die Partition /dev/sdb mit XFS.

ssh osd1
ssh osd2
ssh osd3

Überprüfen Sie die Partition mit dem Befehl fdisk.

sudo fdisk -l /dev/sdb

Formatieren Sie die /dev/sdb-Partition mit dem XFS-Dateisystem und mit einer GPT-Partitionstabelle mit dem Befehl parted.

sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs /dev/sdb -f

Überprüfen Sie nun die Partition, und Sie erhalten die xfs /dev/sdb Partition.

sudo blkid -o value -s TYPE /dev/sdb

Formatieren Sie /dev/sdb auf allen Knoten mit XFS.

Schritt 5 – Aufbau des Ceph Clusters

In diesem Schritt werden wir Ceph auf allen Knoten des ceph-admin-Knotens installieren.

Melden Sie sich beim Knoten ceph-admin an.

ssh root@ceph-admin
su - cephuser

ceph-deploy auf dem ceph-admin-Knoten installieren

Fügen Sie das Ceph-Repository hinzu und installieren Sie das Ceph-Bereitstellungstool „ceph-deploy“ mit dem Befehl yum.

sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
sudo yum update -y && sudo yum install ceph-deploy -y

Stellen Sie sicher, dass alle Knoten aktualisiert werden.

Nachdem das ceph-deploy-Tool installiert wurde, erstellen Sie ein neues Verzeichnis für die ceph cluster-Konfiguration.

Neue Cluster-Konfiguration erstellen

Erstellen Sie das neue Clusterverzeichnis.

mkdir cluster
cd cluster/

Erstellen Sie anschließend eine neue Clusterkonfiguration mit dem Befehl „ceph-deploy„, definieren Sie den Monitorknoten als „mon1„.

ceph-deploy new mon1

Der Befehl erzeugt die Ceph-Cluster-Konfigurationsdatei ‚ceph.conf‘ im Clusterverzeichnis.

Erste Ceph Cluster-Konfiguration

Bearbeiten Sie die Datei ceph.conf mit vim.

vim ceph.conf

Unter[globaler] Block, fügen Sie die Konfiguration unten ein.

# Your network address
public network = 10.0.15.0/24
osd pool default size = 2

Speichern Sie die Datei und beenden Sie vim.

Ceph auf allen Knoten installieren

Installieren Sie nun Ceph auf allen anderen Knoten des ceph-admin-Knotens. Dies kann mit einem einzigen Befehl erfolgen.

ceph-deploy install ceph-admin mon1 osd1 osd2 osd3

Der Befehl installiert Ceph automatisch auf allen Knoten: mon1, osd1-3 und ceph-admin – Die Installation dauert einige Zeit.

Stellen Sie nun den ceph-mon auf dem Knoten mon1 bereit.

ceph-deploy mon create-initial

Der Befehl erstellt die Monitortaste, überprüft und holt die Schlüssel mit dem Befehl „ceph“.

ceph-deploy gatherkeys mon1

Sammeln von Schlüsseln auf dem Monitorknoten

Hinzufügen von OSDS zum Cluster

Wenn Ceph auf allen Knoten installiert ist, können wir die OSD-Daemonen zum Cluster hinzufügen. OSD Daemons erstellt ihre Daten- und Journalpartition auf der Festplatte /dev/sdb.

Überprüfen Sie, ob die Partition /dev/sdb auf allen OSD-Knoten verfügbar ist.

ceph-deploy disk list osd1 osd2 osd3

Bereitstellen von Festplatten

Sie sehen die /dev/sdb Festplatte im XFS-Format.

Löschen Sie anschließend die Partitionstabellen /dev/sdb auf allen Knoten mit der Option zap.

ceph-deploy disk zap osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb

Der Befehl löscht alle Daten auf /dev/sdb auf den Ceph OSD-Knoten.

Bereiten Sie nun alle OSDS-Knoten vor. Stellen Sie sicher, dass die Ergebnisse fehlerfrei sind.

ceph-deploy osd prepare osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb

Wenn Sie sehen, dass der osd1-3 für das Ergebnis der OSD-Verwendung bereit ist, dann war die Bereitstellung erfolgreich.

Alle OSD-Knoten vorbereiten

Aktivieren Sie die OSDs mit dem folgenden Befehl:

ceph-deploy osd activate osd1:/dev/sdb1 osd2:/dev/sdb1 osd3:/dev/sdb1

Überprüfen Sie die Ausgabe auf Fehler, bevor Sie fortfahren. Nun können Sie die sdb-Platte auf OSD-Knoten mit dem Befehl list überprüfen.

ceph-deploy disk list osd1 osd2 osd3

OSD-Knoten erfolgreich zum Cluster hinzugefügt

Das Ergebnis ist, dass /dev/sdb nun zwei Partitionen hat:

  1. /dev/sdb1 – Ceph-Daten
  2. /dev/sdb2 – Ceph Journal

Oder Sie können das direkt auf dem OSD-Knoten mit fdisk überprüfen.

ssh osd1
sudo fdisk -l /dev/sdb

Das Partitionslayout von /dev/sdb

Als nächstes verteilen Sie den Verwaltungsschlüssel auf alle zugehörigen Knoten.

ceph-deploy admin ceph-admin mon1 osd1 osd2 osd3

Ändern Sie die Berechtigung der Schlüsseldatei, indem Sie den folgenden Befehl auf allen Knoten ausführen.

sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

Der Ceph Cluster auf CentOS 7 wurde geschaffen.

Schritt 6 – Testen des Ceph-Setups

In Schritt 4 haben wir unseren neuen Ceph-Cluster installiert und erstellt, dann haben wir dem Cluster OSDS-Knoten hinzugefügt. Jetzt können wir den Cluster testen und sicherstellen, dass es keine Fehler im Cluster-Setup gibt.

Melden Sie sich vom ceph-admin-Knoten aus am ceph-Monitor-Server ‚mon1‚ an.

ssh mon1

Führen Sie den folgenden Befehl aus, um den Zustand des Clusters zu überprüfen.

sudo ceph health

Überprüfen Sie nun den Clusterstatus.

sudo ceph -s

Und du solltest die Ergebnisse unten sehen:

Ceph Cluster Help

Vergewissern Sie sich, dass der Ceph-Zustand in Ordnung ist und es gibt einen Monitorknoten‘mon1‚ mit der IP-Adresse‘10.0.15.11‚. Es sollte 3 OSD-Server geben und alles sollte in Betrieb sein, und es sollte eine verfügbare Festplatte von ca. 75GB – 3x25GB Ceph Data Partition vorhanden sein.

Herzlichen Glückwunsch, du hast erfolgreich einen neuen Ceph Cluster gebaut.

Im nächsten Teil des Ceph-Tutorials werde ich Ihnen zeigen, wie Sie Ceph als Block Device verwenden oder als FileSystem mounten können.

Referenz

Das könnte dich auch interessieren …