Ceph Cluster mit Raspberry PIs aufbauen: Unterschied zwischen den Versionen

Aus RT-Wiki - IT-Notizbuch
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:


==Installation==
==Installation ==
===Hardware===
===Hardware===
'''Minimal'''
'''Minimal'''
Zeile 17: Zeile 17:
#Die heruntergeladene *.zip-Datei kann direkt mit dem [https://downloads.raspberrypi.org/imager/imager_latest.exe Raspberry Pi Imager] auf die SD-Karte oder die SSD geschrieben werden.
#Die heruntergeladene *.zip-Datei kann direkt mit dem [https://downloads.raspberrypi.org/imager/imager_latest.exe Raspberry Pi Imager] auf die SD-Karte oder die SSD geschrieben werden.
''Tipp: In der neusten Version vom Imager kann man vor dem Flashen bereits einige Einstellungen vornehmen (Hostname, SSH, Tastaturlayout, usw.)''
''Tipp: In der neusten Version vom Imager kann man vor dem Flashen bereits einige Einstellungen vornehmen (Hostname, SSH, Tastaturlayout, usw.)''
'''''Hier empfiehlt es sich insbesondere den SSH Zugang zu aktiveren und damit gleichzeitig einen Benutzer anzulegen.'''''


===Systemeinstellungen===
===Systemeinstellungen===


==== Root-Passwort setzen ====
Zunächst sollte ein Passwort für den Root-Benutzer festgelegt und anschließend zu diesem gewechselt werden:<syntaxhighlight lang="bash">
sudo passwd root
su -
</syntaxhighlight>
==== SSH via root erlauben ====
<syntaxhighlight lang="bash">
vi /etc/ssh/sshd_config
</syntaxhighlight><syntaxhighlight lang="bash">
# Den Eintrag finden
#PermitRootLogin prohibit-password
# Aktivieren und auf 'yes' ändern
PermitRootLogin yes
</syntaxhighlight>
====Feste IP einrichten (/etc/dhcpcd.conf)====
Damit sich die Ceph-Nodes nach dem nächsten DHCP-Lease noch verständigen können, setzen wir bei allen eine statische IP.
Dafür editieren wir die Datei <code>/etc/dhcpcd.conf</code>:<syntaxhighlight lang="bash">
sudo vi /etc/dhcpcd.conf
</syntaxhighlight>Dort suchen wir nun nach folgendem Eintrag:<syntaxhighlight lang="bash">
# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
</syntaxhighlight>Nun werden die zur Konfiguration notwendigen Zeilen aktiviert, indem das # entfernt wird und die Adressen entsprechend des eigenen Netzwerkes angepasst.
Am Ende sollte das Ganze in etwa so aussehen:<syntaxhighlight lang="bash">
# Example static IP configuration:
interface eth0
static ip_address=192.168.0.90/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 1.1.1.1
</syntaxhighlight>Damit diese Einstellung wirksam wird, muss der Raspberry neu gestartet werden.
'''Wenn ihr einen Fehler in der Konfiguration gemacht habt, kommt ihr danach nicht mehr per SSH auf euren Raspberry!'''<syntaxhighlight lang="bash">
sudo reboot
</syntaxhighlight>Erledigt!
Jetzt könnt ihr euch per SSH mit der festgelegten IP verbinden.
====Hostnamen setzen (/etc/hostname)====
''Falls im Imager bereits der Hostname gesetzt wurde kann dieser Punkt übersprungen werden.''
Als Erstes setzen wir einen Hostnamen für unseren Proxmox Node. Dafür editieren wir die Datei <code>/etc/hostname</code>.<syntaxhighlight lang="bash">
sudo vi /etc/hostname
</syntaxhighlight>Hier wird nun der gewünschte Hostname eingetragen. In meinem Fall habe ich mich für '''cephpi-a''' entschieden.
Der zweite Raspberry wäre dementsprechend '''cephpi-b''', u.s.w.
====Hosts eintragen (/etc/hosts)====
Nun werden auf '''jedem''' Raspberry die Hostnamen '''aller''' Cluster Nodes eingetragen.
Dazu editieren wir die Datei <code>/etc/hosts</code>.
Am Anfang sieht diese ungefähr so aus:<syntaxhighlight lang="bash">
127.0.0.1      localhost
::1            localhost ip6-localhost ip6-loopback
ff02::1        ip6-allnodes
ff02::2        ip6-allrouters
127.0.1.1      ClusterPi-1
</syntaxhighlight>Die IPv6 Einträge können ruhigen gewissen gelöscht werden.
Am wichtigsten ist es aber den Eintrag '''"127.0.1.1 cephpi-a"''' zu entfernen, da der Cluster mit den absoluten Adressen arbeiten soll.
Danach werden die Hostnamen der Nodes hinzugefügt, so dass es am Ende so aussehen sollte:<syntaxhighlight lang="bash">
127.0.0.1      localhost
192.168.0.90      cephpi-a
192.168.0.91      cephpi-b
192.168.0.92      cephpi-c
</syntaxhighlight>
==== Abhängigkeiten installieren ====
<syntaxhighlight lang="bash">
apt update
apt upgrade
</syntaxhighlight>Die Abhängigkeiten 'lvm2' und 'Docker' installieren:<syntaxhighlight lang="bash">
apt install lvm2
curl -sSL https://get.docker.com | sh
</syntaxhighlight><syntaxhighlight lang="bash">
systemctl enable --now docker
</syntaxhighlight>
===Ceph installieren (1. Node)===
'''Diese Installation ist nur beim ersten Node notwendig!'''
Cephadm herunterladen und ausführbar machen:<syntaxhighlight lang="bash">
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm
chmod +x cephadm
</syntaxhighlight>Jetzt kann mit Cephadm die Installation gestartet werden:<syntaxhighlight lang="bash">
./cephadm bootstrap --mon-ip <Node IP>
</syntaxhighlight>'''Hinweis zum Monitoring:'''
Das Monitoring beinhaltet einen Prometheus & Grafana Server.
Zusammen liefern diese etliche Statistiken zu den OSDs, Pools, Hosts, etc und dienen auch der Generierung von Alarm-Meldungen.
Wer Speicher, CPU oder RAM sparen möchte, kann zum deaktivieren einfach <code>--skip-monitoring-stack</code> ans Ende des Befehls hängen.
Nach der Installation sollte das Ceph Dashboard unter folgender URL erreichbar sein:
https://<Node-IP>:8443/
===Weitere Nodes installieren===
Alle Punkte unter '''Systemeinstellungen''' sollten bereits ausgeführt sein! 
Zuerst muss das Ceph SSH Zertifikat auf die neuen Nodes übertragen werden.
Dazu auf dem 1. Node folgenden Befehl ausführen:
Als Adresse die anderen Nodes auswählen, z.B. cephpi-b<syntaxhighlight lang="bash">
ssh-copy-id -f -i /etc/ceph/ceph.pub root@cephpi-b
</syntaxhighlight>
Als Adresse die anderen Nodes auswählen, z.B. cephpi-b
Danach im Ceph Dashboard unter '''Cluster -> Host''' den neuen Node hinzufügen.
Die weitere Installation geschieht automatisch per SSH und könnte ein paar Minuten dauern.
==Quellen==
==Quellen==
https://docs.ceph.com/en/latest/rados/configuration/ceph-conf/
https://docs.ceph.com/en/latest/rados/configuration/ceph-conf/

Aktuelle Version vom 12. Mai 2023, 12:42 Uhr

Installation

Hardware

Minimal

  • 3x Raspbarry-Pi 4 4GB
  • 3x microSD Karte (Betriebssystem)
  • 3x SSD mit USB3.0 Adapter (OBD Storage)

Empfohlen

  • 3x Raspbarry-Pi 4 8GB
  • 6x SSD mit USB3.0 Adapter (Betriebssystem, OBD Storage)

Optional

  • PoE HAT für Raspberry

Falls kein PoE HAT verwendet wird sollten die Raspberrys unbedingt anderweitig gekühlt werden!

SD Karten vorbereiten

  1. Die neuste Version von Raspberry Pi OS Lite (64 Bit) herunterladen.
  2. Die heruntergeladene *.zip-Datei kann direkt mit dem Raspberry Pi Imager auf die SD-Karte oder die SSD geschrieben werden.

Tipp: In der neusten Version vom Imager kann man vor dem Flashen bereits einige Einstellungen vornehmen (Hostname, SSH, Tastaturlayout, usw.)

Hier empfiehlt es sich insbesondere den SSH Zugang zu aktiveren und damit gleichzeitig einen Benutzer anzulegen.

Systemeinstellungen

Root-Passwort setzen

Zunächst sollte ein Passwort für den Root-Benutzer festgelegt und anschließend zu diesem gewechselt werden:

sudo passwd root
su -

SSH via root erlauben

vi /etc/ssh/sshd_config
# Den Eintrag finden
#PermitRootLogin prohibit-password

# Aktivieren und auf 'yes' ändern
PermitRootLogin yes

Feste IP einrichten (/etc/dhcpcd.conf)

Damit sich die Ceph-Nodes nach dem nächsten DHCP-Lease noch verständigen können, setzen wir bei allen eine statische IP.

Dafür editieren wir die Datei /etc/dhcpcd.conf:

sudo vi /etc/dhcpcd.conf

Dort suchen wir nun nach folgendem Eintrag:

# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

Nun werden die zur Konfiguration notwendigen Zeilen aktiviert, indem das # entfernt wird und die Adressen entsprechend des eigenen Netzwerkes angepasst. Am Ende sollte das Ganze in etwa so aussehen:

# Example static IP configuration:
interface eth0
static ip_address=192.168.0.90/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 1.1.1.1

Damit diese Einstellung wirksam wird, muss der Raspberry neu gestartet werden. Wenn ihr einen Fehler in der Konfiguration gemacht habt, kommt ihr danach nicht mehr per SSH auf euren Raspberry!

sudo reboot

Erledigt!

Jetzt könnt ihr euch per SSH mit der festgelegten IP verbinden.

Hostnamen setzen (/etc/hostname)

Falls im Imager bereits der Hostname gesetzt wurde kann dieser Punkt übersprungen werden.

Als Erstes setzen wir einen Hostnamen für unseren Proxmox Node. Dafür editieren wir die Datei /etc/hostname.

sudo vi /etc/hostname

Hier wird nun der gewünschte Hostname eingetragen. In meinem Fall habe ich mich für cephpi-a entschieden.

Der zweite Raspberry wäre dementsprechend cephpi-b, u.s.w.

Hosts eintragen (/etc/hosts)

Nun werden auf jedem Raspberry die Hostnamen aller Cluster Nodes eingetragen.

Dazu editieren wir die Datei /etc/hosts.

Am Anfang sieht diese ungefähr so aus:

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       ClusterPi-1

Die IPv6 Einträge können ruhigen gewissen gelöscht werden.

Am wichtigsten ist es aber den Eintrag "127.0.1.1 cephpi-a" zu entfernen, da der Cluster mit den absoluten Adressen arbeiten soll.

Danach werden die Hostnamen der Nodes hinzugefügt, so dass es am Ende so aussehen sollte:

127.0.0.1       localhost
192.168.0.90      cephpi-a
192.168.0.91      cephpi-b
192.168.0.92      cephpi-c

Abhängigkeiten installieren

apt update
apt upgrade

Die Abhängigkeiten 'lvm2' und 'Docker' installieren:

apt install lvm2
curl -sSL https://get.docker.com | sh
systemctl enable --now docker

Ceph installieren (1. Node)

Diese Installation ist nur beim ersten Node notwendig!

Cephadm herunterladen und ausführbar machen:

curl --silent --remote-name --location https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm
chmod +x cephadm

Jetzt kann mit Cephadm die Installation gestartet werden:

./cephadm bootstrap --mon-ip <Node IP>

Hinweis zum Monitoring:

Das Monitoring beinhaltet einen Prometheus & Grafana Server.

Zusammen liefern diese etliche Statistiken zu den OSDs, Pools, Hosts, etc und dienen auch der Generierung von Alarm-Meldungen.

Wer Speicher, CPU oder RAM sparen möchte, kann zum deaktivieren einfach --skip-monitoring-stack ans Ende des Befehls hängen.


Nach der Installation sollte das Ceph Dashboard unter folgender URL erreichbar sein:

https://<Node-IP>:8443/

Weitere Nodes installieren

Alle Punkte unter Systemeinstellungen sollten bereits ausgeführt sein!

Zuerst muss das Ceph SSH Zertifikat auf die neuen Nodes übertragen werden.

Dazu auf dem 1. Node folgenden Befehl ausführen:

Als Adresse die anderen Nodes auswählen, z.B. cephpi-b

ssh-copy-id -f -i /etc/ceph/ceph.pub root@cephpi-b

Als Adresse die anderen Nodes auswählen, z.B. cephpi-b


Danach im Ceph Dashboard unter Cluster -> Host den neuen Node hinzufügen.

Die weitere Installation geschieht automatisch per SSH und könnte ein paar Minuten dauern.

Quellen

https://docs.ceph.com/en/latest/rados/configuration/ceph-conf/

https://ceph.io/en/news/blog/2022/install-ceph-in-a-raspberrypi-4-cluster/

https://opensource.com/article/21/1/ceph-raspberry-pi

https://docs.ceph.com/en/latest/cephadm/install/