**This is an old revision of the document!**
Ceph-Setup
Host Setup (Stand 2017-10-17)
Vorerst verwenden wir die beiden Intel-Server für CEPH Tests. Beide haben ein RAID1 bestehend aus 2x250GB Harddisk. Auf diesem RAID1 sind 4 Logical Volumes installiert:
- /boot - 2GB
- /rootfs - 10GB
- swap - 2GB
- /var - 2GB
ceph1
cavy@ceph1:~$ sudo ceph-disk list
/dev/dm-0 other, ext4, mounted on /
/dev/dm-1 swap, swap
/dev/dm-2 other, ext4, mounted on /boot
/dev/dm-3 other, ext4, mounted on /var
/dev/md0 other, [[LVM2]]_member
/dev/sda :
/dev/sda1 other, linux_raid_member
/dev/sdb :
/dev/sdb1 ceph data, active, cluster ceph, osd.0
/dev/sdc :
/dev/sdc1 ceph data, active, cluster ceph, osd.1
/dev/sdd :
/dev/sdd1 other, linux_raid_member
/dev/sde :
/dev/sde1 ceph data, active, cluster ceph, osd.4
/dev/sdf other, unknown
/dev/sdg other, unknown
/dev/sdh :
/dev/sdh1 ceph journal
/dev/sdh2 ceph journal
/dev/sdh3 ceph journal
/dev/sdh4 ceph journal
/dev/sdh5 ceph journal
Frontalansicht mit Seriennummern der Devices für ceph1
\|\|HD 250GB 5 0014ee 65921284e *) \|\|HD 1TB \|\|HD 1TB \|\|\|\|Anschlüsse \|\| \|\|HD 250GB 5 0014ee 603cbd93f *) \|\|HD 1TB \|\|HD 1TB 5 0014ee 603ffa30c \|\|SSD 240G 5 5cd2e4 14ddb886f \|\|Hd 1TB 5 0014ee 607768171 \|\|
ceph2
cavy@ceph2:~$ sudo ceph-disk list /dev/dm-0 other, ext4, mounted on / /dev/dm-1 swap, swap /dev/dm-2 other, ext4, mounted on /boot /dev/dm-3 other, ext4, mounted on /var /dev/md0 other, [[LVM2]]_member /dev/sda : /dev/sda1 other, linux_raid_member /dev/sdb : /dev/sdb1 ceph data, active, cluster ceph, osd.2 /dev/sdc : /dev/sdc1 ceph data, active, cluster ceph, osd.3 /dev/sdd : /dev/sdd1 other, linux_raid_member /dev/sde : /dev/sde1 ceph data, active, cluster ceph, osd.5 /dev/sdf other, unknown /dev/sdg other, unknown /dev/sdh : /dev/sdh1 ceph journal /dev/sdh2 ceph journal /dev/sdh3 ceph journal /dev/sdh4 ceph journal /dev/sdh5 ceph journal
Frontalansicht mit Seriennummern der Devices für ceph2
\|\|HD 250GB 5 0014ee 6ae762535 *) \|\|HD 1TB \|\|HD 1TB 5 0014ee 607767c31 \|\|\|\|Anschlüsse \|\| \|\|HD 250GB 5 0014ee 6ae762bc6 *) \|\|HD 1TB \|\|HD 1TB \|\|HD 1TB 5 0014ee 65ccbc69a \|\|SSD 240GB 5 5cd2e4 14ddb6321 \|\|
- ) das sind Vermutungen
Cluster Setup (Stand 04.04.2017)
Monitore:
monmap e3: 3 mons at {ceph1=172.16.16.17:6789/0,ceph2=172.16.16.18:6789/0,ceph3=172.16.16.19:6789/0}
OSD\'s:
. host ceph1 - osd.0`` ``osd.1`` ``osd.4\
. host ceph2 - osd.2`` ``osd.3`` ``osd.5
Wiederkehrende Probleme
Wenn nach einem Reboot die Journale wieder mal nicht automatisch mounten, weil sie nicht die richtige Permissions ceph:ceph haben, dann haben die Partitionen nicht die richtige parttype, dann folgendes machen: zb ceph2:
. sgdisk --typecode=3:45b0969e-9b03-4f30-b4c6-b4b80ceff106 /dev/sdf . sgdisk --typecode=4:45b0969e-9b03-4f30-b4c6-b4b80ceff106 /dev/sdf . sgdisk --typecode=5:45b0969e-9b03-4f30-b4c6-b4b80ceff106 /dev/sdf
Einrichtung
Die Einrichtung eines neuen Ceph-Admin-Nodes folgt der offiziellen Dokumentation von ceph.
Auf allen Nodes:
- User cavy anlegen und den ssh-key vom Admin-Node ins .ssh/authorized_keys File kopieren.
- User cavy sudo-Rechte geben
echo “cavy ALL = (root) NOPASSWD:ALL”
> /etc/sudoers.d/cavy
- Die ceph Sourceslist anlegen
- Den Ceph-Repo-Key installieren
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -
#
## Am Admin-Node:
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add - echo deb http://ceph.com/debian-dumpling/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
sudo apt-get update sudo apt-get install ceph-deploy
Libvirt/KVM
Mehr Info dazu gibt\'s auch auf der Ceph-Seite. Leider geht noch nicht alles sauber mit dem machine-manager. Ich bin mal so vorgegangen:
- E7inen Pool am Ceph-Cluster angelegt
ceph osd pool create images 200 200
- Authentication für libvirt einrichten.
ceph auth get-or-create client.libvirt mon 'allow r' osd 'allow class-read objectprefix rbdchildren, allow rwx pool=images'
- Den Pool am Virtualisierungsserver mit virsh angelegt. Dazu gibt\'s gute Hinweise auf den Seiten von libvirt, https://libvirt.org/storage.html#StorageBackendRBD und http://libvirt.org/formatsecret.html#CephUsageType. Die beiden Files, die ich zum Anlegen des Pools verwendet habe sind diese:
ceph-secret.xml
<secret ephemeral='no' private='yes'>
<description>Secret holding CEPH passphrase</description>
<uuid>dcf50f8c-4374-416f-8718-e33815f2cec0</uuid>
<usage type='ceph'>
<name>libvirt</name>
</usage>
</secret>
pool-define.xml
<pool type='rbd'>
<name>images</name>
<source>
<host name='ceph1.admin.mur.at' port='6789'/>
<host name='ceph2.admin.mur.at' port='6789'/>
<host name='ceph3.admin.mur.at' port='6789'/>
<name>images</name>
<auth username='libvirt' type='ceph'>
<secret uuid='dcf50f8c-4374-416f-8718-e33815f2cec0' />
</auth>
</source>
</pool>
- Damit legt eins (als root!) zuerst ein Secret an:
virsh secret-define ceph-secret.xml
- Dann wird das secret mit dem KEY des client.libvirt verknüpft (der
KEY kann auf ceph1 mit
ceph auth list
gefunden werden:
virsh secret-set-value dcf50f8c-4374-416f-8718-e33815f2cec0 KEY
- Damit ist das Secret irgendwo (ich hab selber keine Ahnung wo) in
der Virtualiseriungsumgebung gespeichert und kann später in den Konfigurationsdateien verwenden werden.
- Nun kann der Pool angelegt (wieder als root!) werden:
virsh pool-define pool-define.xml
Jetzt steht der Pool mal prinzipiell auch im virt-manager zur Verfügung (wo er noch gestartet werden muss). Anlegen von Files für Vserver-Images funktioniert auch schon, nur das Einbinden der Images in einen Vserver erfordert noch einen Zwischenschritt mit virsh. Wir verwenden übrigens das selbe Secret auf allen Virtualisierungsservern, damit die VServer auch mirgriert werden können.
VServer einrichten
Das ist jetzt auf eine eigene WikiSeite gewandert.
Snapshots
Wir verwenden Snapshots als Teil des Backups, das hier dokumentiert ist!
Image Snapshots werden mit dem Tool rbd gemacht. Die Doku für die derzeit verwendete CEPH-Version ist hier zu finden. Um einen Snapshot von einem Image zu erstellen, muss I/O der Maschine gestoppt werden. Die wahrscheinlich beste Lösung ist es, die virtuelle Maschine zu pausieren (virsh suspend Domain). Dann kann ein Snapshot sicher erstellt werden:
--(Auf ceph1 ist jetzt ein Mechanismus zum automatischen erstellen von Snapshots eingerichtet: /home/cavy/cephsnap. Das Skript ist dokumentiert und läuft derzeit für die nelke und wal, einmal pro Tag (Nacht) um 5 Minuten nach 4 Uhr. Testhalber heben wir Snapshots vorerst nur für einen Tag (24 Stunden) auf.)--
Die CEPH-Doku hat eine eigene Seite zum Snapshot-Mechanismus: Snapshots mit CEPH.
Icinga Plugin Howto
Damit Icinga-Pluings am Ceph-Cluster ausgeführt werden können, muss sich der Client authentifizieren. Aus diesem Grund muss am Ceph-Server ein spezieller Keyring für den user Icinga/Nagios angelegt werden. So gehts:
cavy@ceph2:~$ ceph auth get-or-create client.nagios mon 'allow r' > client.nagios.keyring
Beim Ausführen des Plugins mit dem Keyring schauts so aus:
/usr/lib/nagios/plugins/check_ceph_health --id nagios --keyring /usr/lib/nagios/plugins/key/client.nagios.keyring
Das ganze funktioniert via nagios-nrpe-server!
Verschiedenes
Ceph verwendet für einige Dinge die Type Codes von GPT. Diese sind (hier gefunden):
TODO
- --(Snapshots: Einrichtung)--, Tests, Benchmarks
- --(Hot-Migration Testen )--
- Auf Basis der gesammelten Daten Konzept für Cluster erstellen
