Ceph Cluster mit Raspberry PIs aufbauen: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
K
KKeine Bearbeitungszusammenfassung
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 21: Zeile 21:


===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">
Zunächst sollte ein Passwort für den Root-Benutzer festgelegt und anschließend zu diesem gewechselt werden:<syntaxhighlight lang="bash">
sudo passwd root
sudo passwd root
su -
su -
</syntaxhighlight>Jetzt muss eine statische IP festgelegt werden:<syntaxhighlight lang="bash">
</syntaxhighlight>
vi /etc/dhcpcd.conf
 
</syntaxhighlight>Das Beispiel entsprechend dem eigenen Netzwerk konfigurieren:<syntaxhighlight lang="bash">
==== 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:
# Example static IP configuration:
interface eth0
interface eth0
Zeile 34: Zeile 63:
static domain_name_servers=192.168.0.1 1.1.1.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>
</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/

Navigationsmenü