Wie man einen Ceph Storage Cluster unter Ubuntu 16.04 installiert

Ceph ist eine Open-Source-Speicherplattform, die hohe Leistung, Zuverlässigkeit und Skalierbarkeit bietet. Es handelt sich um ein kostenloses verteiltes Speichersystem, das eine Schnittstelle für die Speicherung auf Objekt-, Block- und Dateiebene bietet und ohne einen einzigen Fehlerpunkt betrieben werden kann.

In diesem Tutorial führe ich Sie durch die Installation und den Aufbau eines Ceph-Clusters auf dem Ubuntu 16.04 Server. Ein Ceph-Cluster besteht aus diesen Komponenten:

  • Ceph OSDs (ceph-osd) – Behandelt die Datenspeicherung, Datenreplikation und Wiederherstellung. Ein Ceph-Cluster benötigt mindestens zwei Ceph OSD-Server. Wir werden in diesem Setup drei Ubuntu 16.04 Server verwenden.
  • Ceph Monitor (ceph-mon) – Überwacht den Clusterstatus und führt die OSD-Karte und die CRUSH-Karte aus. Wir werden hier einen Server verwenden.
  • Ceph Meta Data Server (ceph-mds) – dies ist notwendig, wenn Sie Ceph als Dateisystem verwenden möchten.

Voraussetzungen

  • 6 Serverknoten mit installiertem Ubuntu 16.04 Server
  • Root-Privilegien auf allen Knoten

Ich werde den folgenden Hostnamen / IP-Setup verwenden:

hostname IP-Adresse ceph-admin 10.0.15.10 mon1 10.

0.15.11
osd1 10.0.15.21
osd2 10.0.15,22
osd3 10.0.15.23
Kunde 10.0.15.15.15

Schritt 1 – Alle Knoten konfigurieren

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

Erstellen des Ceph-Benutzers

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

useradd -m -s /bin/bash cephuser
passwd cephuser

Nachdem wir den neuen Benutzer erstellt haben, müssen wir Folgendes konfigurieren Cephuserfür passwortlose Sudo-Rechte. Das bedeutet, dass ‚cephuser‘ ausgeführt werden kann und sudo-Rechte erhält, ohne vorher ein Passwort eingeben zu müssen.

Führen Sie die folgenden Befehle aus, um dies zu erreichen.

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 NTP einzustellen. Wir werden die NTP-Server des US-Pools verwenden. Starten Sie dann den NTP-Server und aktivieren Sie ihn zum Startzeitpunkt.

sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp

Open-vm-Tools installieren

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

sudo apt-get install -y open-vm-tools

Python installieren und trennen

In diesem Tutorial benötigen wir Python-Pakete für die Erstellung des ceph-clusters. Python und Python-Rohr installieren.

sudo apt-get install -y python python-pip parted

Konfigurieren der Hosts-Datei

Bearbeiten Sie die hosts-Datei auf allen Knoten mit dem vim-Editor.

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        ceph-osd1
10.0.15.22        ceph-osd2
10.0.15.23        ceph-osd3
10.0.15.15        ceph-client

Speichern Sie die hosts-Datei und verlassen Sie den vim-Editor.

Jetzt können Sie versuchen, zwischen den Hostnamen des Servers zu pingen, um die Netzwerkverbindung zu testen.

ping -c 5 mon1

Ceph Cluster Installation auf Ubuntu 16.04

Schritt 2 – Konfigurieren des SSH-Servers

In diesem Schritt konfigurieren wir den Knoten ceph-admin. Der Admin-Knoten wird für die Konfiguration des Monitor-Knotens und der OSD-Knoten verwendet. Melden Sie sich am Knoten ceph-admin an und greifen Sie auf den „cephuser“ zu.

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

Die Passphrase ist leer/leer.

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

vim ~/.ssh/config

Fügen Sie die untenstehende Konfiguration ein:

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

Host ceph-osd1
Hostname ceph-osd1
User cephuser

Host ceph-osd2
Hostname ceph-osd2
User cephuser

Host ceph-osd3
Hostname ceph-osd3
User cephuser

Host ceph-client
Hostname ceph-client
User cephuser

Speichern Sie die Datei und beenden Sie vim.

Ceph-admin-Konfiguration

Ändere die Berechtigung der Konfigurationsdatei auf 644.

chmod 644 ~/.ssh/config

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

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

Geben Sie bei Bedarf Ihr cephuser-Passwort ein.

Ceph-admin stellt den ssh-Schlüssel auf allen Clusterknoten bereit.

Versuchen Sie nun, vom ceph-admin-Knoten aus auf den osd1-Server zuzugreifen, um zu testen, ob die passwortlose Anmeldung funktioniert.

ssh ceph-osd1

SSH Weniger Passwort vom ceph-admin zu allen Knoten-Cluster

Schritt 3 – Konfigurieren der Ubuntu Firewall

Aus Sicherheitsgründen müssen wir die Firewall auf den Servern einschalten. Am besten verwenden wir Ufw (Uncomplicated Firewall), die standardmäßige Ubuntu-Firewall, um das System zu schützen. In diesem Schritt aktivieren wir ufw auf allen Knoten und öffnen dann die Ports, die von ceph-admin, ceph-mon und ceph-osd benötigt werden.

Melden Sie sich beim Knoten ceph-admin an und installieren Sie die ufw-Pakete.

ssh root@ceph-admin
sudo apt-get install -y ufw

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

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp

Startet und aktiviert ufw, um beim Booten zu starten.

sudo ufw enable

UFW Firewall mit Ceph-Dienst

Melden Sie sich vom ceph-admin-Knoten aus am Monitorknoten ‚mon1‘ an und installieren Sie ufw.

ssh mon1
sudo apt-get install -y ufw

Öffnen Sie die Ports für den ceph-Monitorknoten und starten Sie ufw.

sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable

Schließlich öffnen Sie diese Ports auf jedem OSD-Knoten: ceph-osd1, ceph-osd2 und ceph-osd3 – Port 6800-7300.

Melden Sie sich bei jedem der ceph-osd-Knoten vom ceph-admin an und installieren Sie ufw.

ssh ceph-osd1
sudo apt-get install -y ufw

Öffnen Sie die Ports auf den OSD-Knoten und laden Sie die Firewall neu.

sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable

Die Konfiguration der ufw-Firewall ist damit abgeschlossen.

Schritt 4 – Konfigurieren Sie die Ceph OSD-Knoten.

In diesem Tutorial haben wir 3 OSD-Knoten, jeder dieser Knoten hat zwei Festplattenpartitionen.

  1. /dev/sda für root-Partition
  2. /dev/sdb ist eine leere Partition – 20GB

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 dem XFS-Dateisystem.

ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3

Überprüfen Sie das Partitionsschema mit dem Befehl fdisk.

sudo fdisk -l /dev/sdb

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

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

Als nächstes formatieren Sie die Partition im XFS-Format mit dem Befehl mkfs.

sudo mkfs.xfs -f /dev/sdb

Überprüfen Sie nun die Partition, und Sie sehen eine XFS /dev/sdb-Partition.

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

Formatierung der Partition ceph OSD-Knoten

Schritt 5 – Aufbau des Ceph Clusters

In diesem Schritt werden wir Ceph auf allen Knoten des ceph-admin installieren. Melden Sie sich dazu am ceph-admin-Knoten an.

ssh root@ceph-admin
su - cephuser

ceph-deploy auf dem ceph-admin-Knoten installieren

Im ersten Schritt haben wir bereits Python und Python-Pip auf dem System installiert. Nun müssen wir das Ceph-Bereitstellungstool ‚ceph-deploy‚ aus dem pypi python Repository installieren.

Installieren Sie ceph-deploy auf dem ceph-admin-Knoten mit dem Befehl pip.

sudo pip install ceph-deploy

Hinweis: Stellen Sie sicher, dass alle Knoten aktualisiert sind.

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

Einen neuen Cluster erstellen

Erstellen Sie ein neues Clusterverzeichnis.

mkdir cluster
cd cluster/

Erstellen Sie anschließend einen neuen Cluster mit dem Befehl „ceph-deploy„, indem Sie den Monitorknoten „mon1“ definieren.

ceph-deploy new mon1

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

Neue ceph Cluster-Konfiguration erstellen

Bearbeiten Sie die Datei ceph.conf mit vim.

vim ceph.conf

Fügen Sie unter dem Block [global] die untenstehende Konfiguration ein.

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

Speichern Sie die Datei und verlassen Sie den Editor.

Ceph auf allen Knoten installieren

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

ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1

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

Stellen Sie nun den Monitorknoten auf dem Knoten mon1 bereit.

ceph-deploy mon create-initial

Der Befehl erstellt eine Monitortaste, überprüft die Taste mit diesem ceph-Befehl.

ceph-deploy gatherkeys mon1

Schlüssel ceph bereitstellen

Hinzufügen von OSDS zum Cluster

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

Überprüfen Sie die verfügbare Festplatte /dev/sdb auf allen OSD-Knoten.

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

Festplattenliste der OSD-Knoten

Du wirst /dev/sdb mit dem XFS-Format sehen, das wir zuvor erstellt haben.

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

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

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

Bereiten Sie nun alle OSD-Knoten vor und stellen Sie sicher, dass die Ergebnisse fehlerfrei sind.

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

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

Bereiten Sie die ceph-osd Knoten vor.

Aktivieren Sie die OSD’s mit dem folgenden Befehl:

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

Nun können Sie die sdb-Festplatte auf OSDS-Knoten erneut überprüfen.

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

Ceph osds aktiviert

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

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

Oder Sie überprüfen es direkt auf dem OSD-Knoten.

ssh ceph-osd1
sudo fdisk -l /dev/sdb

Ceph OSD-Knoten wurden erstellt.

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

ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-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 Ubuntu 16.04 wurde erstellt.

Schritt 6 – Test Ceph

In Schritt 4 haben wir einen neuen Ceph-Cluster installiert und erstellt und dem Cluster OSDS-Knoten hinzugefügt. Nun sollten wir den Cluster testen, um sicherzustellen, dass er wie vorgesehen funktioniert.

Melden Sie sich vom ceph-admin-Knoten aus am Ceph-Monitorserver ‚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

Sie können die Ergebnisse unten sehen:

Ceph Cluster Status

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 gibt 3 OSD-Server und alle sind betriebsbereit, und es sollte ein verfügbarer Festplattenspeicher von 45 GB – 3×15 GB Ceph Data OSD-Partition vorhanden sein.

Wir haben einen neuen Ceph Cluster auf Ubuntu 16.04 erfolgreich aufgebaut.

Referenz

Das könnte Dich auch interessieren …