Ceph, ES lebt…..

… und das ganz einfach.

Um Ceph auf das System zu bekommen kann man sich die fertigen Pakte von Ceph.com holen. Bei mir die Aktuellen, mittlerweile 0.67.1, Dumpling Packete

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

Damit ist die Paketquelle für Apt bekannt. Ein

apt-get update && apt-get upgrade

bringt das System auf den neuen Stand. Um Ceph zu Installieren kommt jetzt

apt-get install ceph ceph-deploy

Das Paket ceph-deploy ist für das erzeugen des Clusters und damit den Deploy der Maschinen zuständig.

Als nächstes muss man dafür sorgen das die OSD´s, also Festplatten, vorbereitet werden. Dazu müssen die ausgewählten Platten nur eine Normale Partition haben. Diese werden dann später von Ceph beim Deploy entsprechend in die Verzeichnisstruktur von Ceph eingehängt.

Dann geht es an´s erzeugen der Ceph Konfiguration.

[global]
       ; use cephx or none
       auth supported = cephx

       auth cluster required = cephx
       auth service required = cephx
       auth client required = cephx

       keyring = /etc/ceph/keyring.admin

[mon]

[mon.1]
       host = node01
       mon addr = 192.168.3.12:6789

[mon.2]
       host = node02
       mon addr = 192.168.3.13:6789

[mon.3]
       host = node03
       mon addr = 192.168.3.14:6789

[mds]

[mds.1]
       host = node01

[mds.2]
       host = node02

[mds.3]
       host = node03

[osd]
       osd journal = /var/lib/ceph/journal/osd.$id.journal  ;only if you want put journal on a dedicated disk, like ssd
       osd journal size = 100

       ; uncomment the following line if you are mounting with ext4
       ; filestore xattr use omap = true

       ; uncomment if you want journal on tmpfs
       ;journal dio = false
       osd mkfs type = xfs
       osd mkfs options xfs = "-f"
       osd mount options xfs = "rw,noatime,inode64,logbufs=8,logbsize=256k"

[osd.10]
       host = node01
       addr = 192.168.3.12
       devs = /dev/sdb1

[osd.11]
       host = node01
       addr = 192.168.3.12
       devs = /dev/sdc1

[osd.20]
       host = node02
       addr = 192.168.3.13
       devs = /dev/sdb1

[osd.21]
       host = node02
       addr = 192.168.3.13
       devs = /dev/sdc1

[osd.30]
       host = node03
       addr = 192.168.3.14
       devs = /dev/sdb1

[osd.31]
       host = node03
       addr = 192.168.3.14
       devs = /dev/sdc1

Wie man sieht besteht der Ceph Cluster aus drei Nodes, auf jeder Node läuft ein MON, ein MDS und zwei OSD´s mit je 8 GB. Somit sind alle Nodes im Cluster auch gleichzeitig Monitore und Metadaten Speicher. Damit können Theoretisch zwei Nodes weg brechen ohne die Daten zu gefährden.

Um sich die Sache mit den OSD´s einfach zu machen nimmt man die Pfade der Platten direkt mit in die Konfiguration auf, ansonsten müsste man das manuell über die Fstab machen, was gerade bei vielen OSD´s zu fehlern führen kann. Ausserdem hat es den Vorteil das Ceph in dieser Konstellation alle benötigten Verzeichnisse beim Deploy mit anlegt und das Einhängen der Platten automatisch nach dem anlegen des Dateisystems erledigt.

Wie man sieht nutze ich XFS, aber auf den Performanceseiten von Ceph hat BTRFS beim schreiben eigentlich immer die Nase vorn, was bei großen Nodes bzw. Clustern schon einen entscheidenden Unterschied machen kann, zum Testen mit VirtualBox reicht mir aber XFS.

Als nächstes sollte auf jedenfall der NTP laufen damit alle Nodes im Cluster die gleiche Uhrzeit haben, sollte das nicht der Fall sein fängt Ceph an zu meckern und der Cluster bleibt stehen, was den Supergau darstellt. Im ceph.log findet man dann solche Einträge:

....[WRN] message from mon.0 was stamped 0.106686s in the future, clocks not synchronized

Um alle Systeme gleichzeitig nach der Uhrzeit zu fragen kann man diese Schleife auf der Console nutzen:

 for i in node01 node02 node03; do ssh root@$i date; done

Damit sieht man auf einen Schlag alle Uhrzeiten aller Nodes. Wichtig ist das hier mit SSH Schlüsseln gearbeitet wird die Ceph benötigt um die Konfigurationen und passenden Verzeichnisse anzulegen. Hier im Test Cluster hab ich mir die Arbeit einfach gemacht und einfach mit

ssh-keygen -t rsa

einen Schlüssel erzeugt und diesen dann per

scp .ssh/id_rsa.pub node02:.ssh/authorized_keys2
scp .ssh/id_rsa.pub node03:.ssh/authorized_keys2

auf die anderen Nodes verteilt. In einem Produktiv Cluster ist das natürlich ein KO Kriterium, für solche Dinge nimmt man dann einen eigenen User der kein Passwort für den ssh Login hat und eben alles nur über ssh Keys macht.

Um Ceph nun zum Leben zu erwecken nutzt man

mkcephfs -a -c /etc/ceph/ceph.conf -k ceph.keyring

was alle OSD´s auf ALLEN beteiligten Nodes mit XFS Formatiert und auch Automatisch in die Ceph Ordnerstruktur einbindet. Des Weiteren wird auch die ceph.conf kopiert was alles über SSH mit den Pub Keys läuft. Mit den neuen Versionen von Ceph wird mkcephfs aber durch ceph-deploy ersetzt.

 

Dat Kauf ich für´n Euro……. [Monatsbericht 4]

Heute ist Freitag der 03.05.2013. Das ist der vierte Monatsbericht für das Jahr 2013 des neuen Mail Services „Dat kauf ich für´n Euro“.

In diesem Monat Platze fast unser Webserver, na ja Platzen ist vielleicht der falsche Ausdruck dafür. Eher ging ihm die Puste aus, was gerade mit Apache2 auf grösseren Systemen schon mal passiert. Ursache war aber nicht das die Systemressourcen zur neige gegangen sind, schon gar nicht mit 1 TB RAM und einem HP DL 980 als Hardware, sondern das der Apache mit seinen Prozessen am Ende war.

Somit hat nicht mal Nagios gemeckert da der Sysload nicht hochgegangen war. Nur bei den Webseiten check den Nagios macht kamen dann eben mal Reaktionszeiten von Jenseits Gut und Böse zu Stande die Nagios dann doch zum Meckern gebracht haben. Natürlich immer wenn man gerade keine Zeit hat sich solch einem Problem zu Widmen.

Nun gut, wozu hat man einen Laptop und einen Internetflat auf dem Handy?? Genau eben für solche Sachen. Also um das Problem eben auch schnell aus der Welt zu schaffen per SSH auf dem Server Angemeldet und in der Konfiguration das Preforker Modul Hochgedreht, nun stehen dem Apachen VIEL mehr Prozesse zur Verfügung als vorher.

Storage Technisch geht es wie immer NACH OBEN, zwar nur beim Online Speicher aber auch beim Mailstorage ist die Richtung weiter nach OBEN.

Account mäßig geht es auch nach oben, 31.548 neue User haben sich angemeldet. Dafür sind aber 821 Tote Useraccounts gelöscht worden. Auch eine kleine Überarbeitung des Internen WIKI hat erfolge gebracht und somit ein wenig unser Support Team entlastet.

Hardware Technisch läuft alles sehr stabil und ich hab alle Systeme von 1 TB auf 2 TB RAM aufgerüstet, was mich dann auch beim Reboot mit mehr als 10 Minuten Wartezeit bestraft hat. Aber die Server werden ja nicht jeden Tag neugestartet. Storage Technisch hab ich mal wieder aufgerüstet von knapp 200 TB auf jetzt 800 TB. Mal sehen wie lange DAS WIEDER reicht.