GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So erstellen Sie einen Ceph-Speichercluster unter Ubuntu 16.04

Ceph ist eine der aufregendsten Open-Source-Speichertechnologien, die in den letzten Jahren herausgekommen sind. Skalierbar auf Exabyte und erweiterbar auf mehrere Rechenzentren, haben die Ceph-Entwickler es Systemadministratoren und Infrastrukturarchitekten leicht gemacht, ihre Software bereitzustellen. Dieser Artikel bietet eine Schritt-für-Schritt-Anleitung zum Erstellen eines einfachen Ceph-Stroage-Clusters. Dies wurde auf Ubuntu 16.04 getestet. Beachten Sie, dass, sofern nicht anders angegeben, alle Befehle als root ausgeführt werden. Beachten Sie auch, dass wenn in diesem Dokument „alle Ceph-Knoten“ erwähnt werden, dies auch den Admin-Knoten einschließt.

Allgemeine Einrichtung

In unserem Beispiel erstellen wir einen einfachen Ceph-Cluster mit drei Knoten, jeder mit zwei OSDs. Wir verwenden die Hostnamenkonvention „Storage-x ", wobei "x" eine Zahl von 1 bis 3 ist, die verwendet wird, um auf bestimmte Knoten zu verweisen. Wir verwenden einen externen Computer (könnte Ihr eigener Computer oder Laptop sein) als ceph Admin-Knoten.

Netzwerkeinrichtung

Jeder Knoten befindet sich im selben privaten Netzwerk mit einem Gateway, über das auf das Internet zugegriffen werden kann.
Der Admin-Knoten sollte sich ebenfalls im selben Netzwerk befinden, muss aber nicht ständig für das Netzwerk verfügbar sein. Folglich kann Ihr Arbeitscomputer der Admin-Knoten sein und ein VPN verwenden, um sich mit dem Netzwerk der Ceph-Knoten zu verbinden.

Ceph verwendet die TCP-Ports 6789 für Ceph Monitor-Knoten und die Ports 6800-7100 für Ceph OSDs zur öffentlichen Zone. Zum Beispiel auf iptables :

sudo iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT

Knoten vorbereiten

Jeder Speicherknoten muss synchronisiert werden, also installieren wir ntp auf ihnen und stellen sicher, dass wir über SSH über das Netzwerk darauf zugreifen können.

sudo apt install ntp ssh

Stellen Sie sicher, dass der Hostname jedes Ceph-Knotens von allen Ceph-Knoten aufgelöst werden kann. Bearbeiten Sie auf jedem Ceph-Knoten die Datei /etc/hosts und fügen Sie Folgendes hinzu:

[Admin Node IP Address] admin-node
[Storage-1 IP Address] Storage-1
[Storage-2 IP Address] Storage-2
[Storage-3 IP Address] Storage-3

Ersetzen Sie die IP-Adresse jedes Knotens entsprechend.
Gehen Sie wie folgt vor, um zu testen, ob die Auflösung funktioniert:

ping admin-node
ping Storage-1
ping Storage-2
ping Storage-3

Stellen Sie sicher, dass der Admin-Knoten Der Hostname wird in die IP-Adresse des externen Netzwerks des Admin-Knotens aufgelöst, nicht in die Loopback-IP-Adresse (127.0.0.1).

Auf jedem Ceph-Knoten (d. h. dem Admin-Knoten und allen Speicherknoten) fügen wir das Ceph Ubuntu-Paket-Repository zu apt hinzu und aktualisieren dann den lokalen Cache mit den Inhalten des neuen Repositorys:

wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -
echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list
apt-get update

Erstellen Sie einen cephadmin Benutzer auf allen Ceph-Knoten. Dieser Benutzer wird verwendet, um Ceph auf dem gesamten Knotencluster zu installieren und zu verwalten, stellen Sie also sicher, dass die Sicherheit für die Anmeldeinformationen für diesen Benutzer maximiert wird.

ssh-keygen -t rsa
useradd cephadmin

Passwortloses SSH einrichten

Die Ceph-Installationsskripte und -Tools aus dem Admin-Knoten müssen passwortlos auf alle Mitglieder des Clusters zugreifen können.
Wechseln Sie auf dem Admin-Knoten zu cephadmin Benutzer und erstellen Sie einen SSH-Schlüssel:

Kopieren Sie den von Ihnen generierten SSH-Schlüssel auf die drei Speicherknoten:

ssh-copy-id Storage-1
ssh-copy-id Storage-2
ssh-copy-id Storage-3

Testen Sie als cephadmin-Benutzer auf Ihrem Admin-Knoten, ob die passwortlose SSH-Verbindung zu den Speicherknoten jetzt ordnungsgemäß funktioniert:

ssh Storage-1
ssh Storage-2
ssh Storage-3

Passwortloses Sudo einrichten

Nachdem der passwortlose Zugriff über SSH eingerichtet ist, konfigurieren Sie passwortloses sudo für den Benutzer cephadmin auf allen Ceph-Knoten:

visudo

Sie sollten Folgendes sehen:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Fügen Sie unten die folgende Zeile hinzu:

cephadmin ALL=(ALL) NOPASSWD: ALL

Dies sollte nun passwortloses sudo für cephadmin ermöglichen Benutzer auf allen Ceph-Knoten.

Installieren Sie ceph-deploy

Ceph-Deploy ist ein Tool, das von den Ceph-Entwicklern entwickelt wurde, um die schnelle Bereitstellung von Ceph-Clustern zu erleichtern, indem die einzelnen Schritte, die zum Bereitstellen eines Knotens erforderlich sind, per Skript erstellt werden. Wir werden dies nutzen, indem wir das Tool auf unserem Admin-Knoten installieren.

apt install ceph-deploy

Wechseln Sie auf dem Admin-Knoten zu cephadmin Benutzer, den wir in Teil 1 des Tutorials erstellt haben, wechseln Sie in das Home-Verzeichnis und erstellen Sie ein Unterverzeichnis, das verwendet wird, um alle Dateien zu enthalten, die für die Bereitstellung und Verwaltung unseres Ceph-Clusters benötigt werden:

su cephadmin
cd
mkdir my-first-ceph-cluster
cd my-first-ceph-cluster

An dieser Stelle dürfen alle auszuführenden Bereitstellungsbefehle nur innerhalb von /home/cephadmin/my-first-ceph-cluster ausgeführt werden . Verwaltungsbefehle müssen ebenfalls aus demselben Verzeichnis ausgeführt werden.

Ceph-Konfiguration

Weisen Sie alle Storage Nodes als Monitor Nodes zu:

ceph-deploy new Storage-1 Storage-2 Storage-3

In Ihrem Arbeitsverzeichnis sollten Sie nun sehen, dass Dateien von ceph-deploy generiert wurden, einschließlich Schlüsselbunddateien und der Ceph-Konfigurationsdatei.

Fügen Sie die folgende Zeile zur ceph.conf hinzu Datei:

osd pool default size = 2

Da wir in unserem Cluster nur zwei OSDs pro Speicherknoten haben, kann Ceph damit zufrieden sein, nur eine einzige zusätzliche Kopie aller Daten zu haben, die wir darin speichern.
Fügen Sie die folgende Zeile zu ceph.conf hinzu auch:

public network = {ip-address}/{netmask}

Wo Sie den Netzwerkteil durch die tatsächlichen Werte ersetzen. Wenn sich Ihre Speicherknoten beispielsweise im Netzwerk 192.168.1.0/24 befinden, sollte dies der Wert sein. Lassen Sie sich nicht verwirren, wenn „öffentliches Netzwerk“ erwähnt wird; es bezieht sich nur auf ein Netzwerk außerhalb des Ceph-Clusters. Interne Replikationsnetzwerke werden in diesem Tutorial nicht behandelt.

Ceph bereitstellen

Die Software und die Konfigurationsdateien werden nun installiert und auf die Ceph Nodes kopiert.

ceph-deploy install admin-node Storage-1 Storage-2 Storage-3

Dadurch werden alle Ceph-Basispakete auf den Knoten installiert.

Installieren und konfigurieren Sie die Ceph Monitor-Software auf den Speicherknoten:

ceph-deploy mon create-initial

Ceph OSDs

Obwohl es möglich ist, Verzeichnisse als OSDs zu verwenden, wird dies in einer Produktionsumgebung nicht empfohlen. Angenommen, die auf jedem Speicherknoten zu verwendenden Ceph OSDs sind /dev/sda und /dev/sdb , wir lassen Ceph die Datenträger für die Verwendung vorbereiten.

WARNUNG: Der folgende Befehl zerstört vorhandene Daten auf den angegebenen OSDs, daher sollte darauf geachtet werden, dass bei der Ausführung des Befehls keine Fehler gemacht werden.

ceph-deploy osd prepare Storage-1:/dev/sda
ceph-deploy osd prepare Storage-1:/dev/sdb
ceph-deploy osd prepare Storage-2:/dev/sda
ceph-deploy osd prepare Storage-2:/dev/sdb
ceph-deploy osd prepare Storage-3:/dev/sda
ceph-deploy osd prepare Storage-3:/dev/sdb

Wenn die vorherigen Befehle fehlerfrei laufen, sind die OSDs bereit und wir können sie jetzt als laufende Ressource im Cluster aktivieren:

ceph-deploy osd activate Storage-1:/dev/sda
ceph-deploy osd activate Storage-1:/dev/sdb
ceph-deploy osd activate Storage-2:/dev/sda
ceph-deploy osd activate Storage-2:/dev/sdb
ceph-deploy osd activate Storage-3:/dev/sda
ceph-deploy osd activate Storage-3:/dev/sdb

Fertigstellung

Kopieren Sie die Admin-Schlüsselbunde auf jeden Ceph-Knoten, damit die Ceph-Administration auf jedem Knoten möglich ist:

ceph-deploy admin admin-node Storage-1 Storage-2 Storage-3

Überprüfen Sie den Status aller OSDs auf allen Speicherknoten:

ceph osd tree

Überprüfen Sie den Gesamtstatus Ihres Ceph-Clusters:

ceph health

Wenn Sie ein

HEALTH_OK

Dies bedeutet, dass der Cluster ordnungsgemäß funktioniert.

Wenn Sie mehr Cluster-Statistiken sehen möchten, sollte der folgende Befehl ausreichen:

ceph status

Schlussfolgerung

Wir haben jetzt einen Ceph-Cluster mit drei Knoten in Betrieb. Bei diesem Setup kann der Cluster einen Knoten verlieren, keinen Datenverlust erleiden und weiterhin Anforderungen bedienen. Hochverfügbare Überwachungsdienste sind ebenfalls auf jedem Speicherknoten verfügbar. Dies ist ein sehr einfaches Setup auf Produktionsebene. Weitere Informationen finden Sie in der offiziellen Ceph-Dokumentation.


Ubuntu
  1. So erstellen Sie Ubuntu Live USB in Windows

  2. So installieren Sie Node.js und NPM unter Ubuntu 18.04 und 20.04

  3. So erstellen Sie einen Sudo-Benutzer unter Ubuntu

  4. So installieren Sie einen MySQL-Cluster unter Ubuntu 16.04

  5. So installieren Sie Node.js unter Ubuntu 16.04

So installieren Sie Node.js unter Ubuntu 14.04

So installieren Sie Node.js unter Ubuntu 16.04

So installieren Sie Node.js unter Ubuntu 18.04 LTS

So installieren Sie Node.js unter Ubuntu 19.04

So installieren Sie Node.js unter Ubuntu 20.04 LTS

So installieren Sie Node.js unter Ubuntu 14.04