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
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.
Ä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.
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.
- /dev/sda für die Root-Partition.
- /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
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.
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
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
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.
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
Das Ergebnis ist, dass /dev/sdb nun zwei Partitionen hat:
- /dev/sdb1 – Ceph-Daten
- /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
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:
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.