Recovery-Cluster mit CEPH - Geschwindigkeitsoptimierung

Sep 16, 2022
11
0
1
Hallo zusammen,

wir haben inzwischen 4 Proxmox VE Cluster produktiv im Einsatz. Dazu noch 4 PBS. Zwei davon beherbergen die Backups aller VMs, sitzen an unterschiedlichen Standorten und Replizieren über eine 10GBit Richtfunkstrecke.

Nun möchte ich aus übrig gebliebener Hardware ein weiteres Cluster aufbauen, sozusagen unsere "Spielwiese".
Hier möchten wir regelmäßig Recovery-Tests durchführen, um die Kollegen in der IT zu schulen usw. Wir möchten also regelmäßig den Worst-Case Proben, falls z. b. Ransomware alles platt machen sollte.

Außerdem soll das 'neue' Cluster jedes unserer anderer Cluster übernehmen können, fall dies durch Feuer/Wasser/wasauchimmer ausfällt. Es muss also genügend RAM und Speicherplatz für zur Verfügung stehen, um unser größtes Cluster zu ersetzen.

Leider habe ich keine 3 identischen Server. Folgende Hardware hab ich:

2x HP-Server je:
40 x Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz (2 Sockets)
256GB Ram
1x Terra Server:
64 x Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz (2 Sockets)
256 GB Ram

Die HDDs/SSDs sind nicht zu gebrauchen. HDDs zu langsam, SSDs zu klein.
Am RAM muss eventuell noch etwas nach gelegt werden.

Wichtig wäre ein schneller Restore vom PBS. Wir haben mehrere File-Server, die zusammen ca. 25TB belegen. Alle anderen VMS (ca. 70) sind zumeist <200GB.
Die Fileserver machen mir Sorgen.

Noch kurz zu den Backup-Servern:
Das sind Server mit
16 x Intel(R) Xeon(R) Silver 4309Y CPU @ 2.80GHz (1 Socket)
128GB RAM
einem ZFS-Pool mit 14 8 TB Samsung SSDs (PM893)
Wenn die Backup-Server mit der Replikation starten, tun die das laut den Diagrammen mit ca. 700 M.

Der primäre-Backup Server und meine Spielwiese stehen im gleichen Serverraum. Alle Server haben eine 10 GBit Anbindung. (PBS Server haben 20GBit über LACP)

Nun zu meinem Spielwiesen-Cluser:
Das Budget ist knapp und es ist kein produktives Cluser, daher teste ich mit einfachen SSDs.
In jedem der 3 Nodes sind je 2 Samsung 870 QVO 8 TB verbaut.
Diese sind direkt ans Mainboard angeschlossen und nicht an dem zusätzlichen Raid-Controller.

Jeder Server hat eine 10 GBit dual-Port Netzwerkkarte. Ein Port für die Anbindung ans Netz, ein Port für CEPH. CEPH hat am gemeinsamen Switch ein eigenes VLAN.
Auf dem Spielwiese-Cluster ist derzeit Proxmox VE 8.0.3 installiert.

Die Ceph-Configuration habe ich nach einer Anleitung aus dem Netz durchgeführt.
[global]
auth_client_required = cephx
auth_cluster_required = cephx
auth_service_required = cephx
cluster_network = 192.168.40.11/24
fsid = 7ed464da-a155-402c-9a6b-c85c51f836b0
mon_allow_pool_delete = true
mon_host = 192.168.40.11 192.168.40.12 192.168.40.13
ms_bind_ipv4 = true
ms_bind_ipv6 = false
osd_pool_default_min_size = 2
osd_pool_default_size = 3
public_network = 192.168.40.11/24
[client]
keyring = /etc/pve/priv/$cluster.$name.keyring
[mds]
keyring = /var/lib/ceph/mds/ceph-$id/keyring
[mds.GHH-PVE04]
host = GHH-PVE04
mds_standby_for_name = pve
[mds.GHH-PVE05]
host = GHH-PVE05
mds_standby_for_name = pve
[mds.GHH-PVE06]
host = GHH-PVE06
mds standby for name = pve
[mon.GHH-PVE04]
public_addr = 192.168.40.11
[mon.GHH-PVE05]
public_addr = 192.168.40.12
[mon.GHH-PVE06]
public_addr = 192.168.40.13

Hier die Crush-Map:

# begin crush map
tunable choose_local_tries 0
tunable choose_local_fallback_tries 0
tunable choose_total_tries 50
tunable chooseleaf_descend_once 1
tunable chooseleaf_vary_r 1
tunable chooseleaf_stable 1
tunable straw_calc_version 1
tunable allowed_bucket_algs 54

# devices
device 0 osd.0 class ssd
device 1 osd.1 class ssd
device 2 osd.2 class ssd
device 3 osd.3 class ssd
device 4 osd.4 class ssd
device 5 osd.5 class ssd

# types
type 0 osd
type 1 host
type 2 chassis
type 3 rack
type 4 row
type 5 pdu
type 6 pod
type 7 room
type 8 datacenter
type 9 zone
type 10 region
type 11 root

# buckets
host GHH-PVE04 {
id -3 # do not change unnecessarily
id -4 class ssd # do not change unnecessarily
# weight 14.55478
alg straw2
hash 0 # rjenkins1
item osd.0 weight 7.27739
item osd.3 weight 7.27739
}
host GHH-PVE05 {
id -5 # do not change unnecessarily
id -6 class ssd # do not change unnecessarily
# weight 14.55478
alg straw2
hash 0 # rjenkins1
item osd.1 weight 7.27739
item osd.4 weight 7.27739
}
host GHH-PVE06 {
id -7 # do not change unnecessarily
id -8 class ssd # do not change unnecessarily
# weight 14.55478
alg straw2
hash 0 # rjenkins1
item osd.2 weight 7.27739
item osd.5 weight 7.27739
}
root default {
id -1 # do not change unnecessarily
id -2 class ssd # do not change unnecessarily
# weight 43.66434
alg straw2
hash 0 # rjenkins1
item GHH-PVE04 weight 14.55478
item GHH-PVE05 weight 14.55478
item GHH-PVE06 weight 14.55478
}

# rules
rule replicated_rule {
id 0
type replicated
step take default
step chooseleaf firstn 0 type host
step emit
}

# end crush map



Da ich CEPH noch nicht so 100%ig verstanden habe, stoße ich nun auf ein paar Probleme. Bzw. auf ein: Die Performance beim Restore!

Ich habe momentan 3 Restores vom Backup-Server auf mein Spielwiese cluster laufen (Je Node 1 Restore). Jeweils ein Fileserver.
Die Anzeige im Ceph sieht so aus:
1705564032626.png

Und das recht konstant.

Ich habe mich auf die Suche nach dem Flaschenhals gemacht.
Da die PBS untereinander mit 700Mb replizieren, dinge ich nicht, dass diese bremsen.
Die Geschwindigkeit riecht nach 1GBit am Netzwerk anstatt 10. Die Anschlüsse bin ich alle durchgegangen, das sieht gut aus.
Zum Test habe ich in die Server noch weitere Festplatten eingeschoben, z B. 4 TB Enterprise SSDs die noch übrig waren. Diese sind einzeln als LVM-thin eingebunden.
Wenn ich zusätzlich noch einen weiteren Restore laufen lasse, sehe ich in der Übersicht am Server, dass netin auf über 200M hoch geht.

1705564356271.png
Das ist also nicht der Flaschenhals.

Bei den OSDs habe ich noch folgende Veränderung vorgenommen.
ceph tell 'osd.*' injectargs '--osd-max-backfills 16'
ceph tell 'osd.*' injectargs '--osd-recovery-max-active 4'
(für alle OSDs)
Ob das für die Geschwindigkeit vom Ceph was bringt weiß ich nicht, bisher hab ich nix gemerkt.

Ist diese Geschwindigkeit für diese Anzahl an OSDs normal?
Muss ich noch irgendwo einen Schalter umlegen?
Bremst vielleicht irgendwo einer der Controller?

Hat jemand mit einem ähnlichen Aufbau erfahrungen?

Vielen Dank schonmal für eure Antworten!

Viele Grüße
Frank
 
In jedem der 3 Nodes sind je 2 Samsung 870 QVO 8 TB verbaut.
Das ist definitiv ein Performancekiller. Auch CEPH sollte nicht mit Consumer Zeug betrieben werden, das kostet einfach Performance ohne Ende.

Dennoch empfinde ich deine Performance als nicht so schlecht, insbesondere für diese SSDs. Ansonsten musst du bedenken, dass deine Daten 3-fach repliziert werden müssen. Denn CEPH versucht natürlich die Integrität direkt sicherzustellen. Aber CEPH ist auch grundsätzlich kein High Performance Storage, der Storage bietet eine solide Grundlage bei hoher Datenintegrität.

Jeder Server hat eine 10 GBit dual-Port Netzwerkkarte. Ein Port für die Anbindung ans Netz, ein Port für CEPH.
Ich würde hier dazu empfehlen ein LACP mit L3+4 Hashing und Jumbo Frames. Ob die Änderungen aber nun eine sichtbare Verbesserung bewirken kann ich nicht abschätzen. In größeren Setups mit mehreren OSDs bringt alleine L3+4 Hashing schon große Vorteile.

Bei den OSDs habe ich noch folgende Veränderung vorgenommen.
Sofern dein Cluster healthy ist, haben diese Einstellungen überhaupt keine Auswirkungen auf irgendwas.
 
Ich schließe mich 100% meinem Vorredner an.
Bei ZFS und Ceph niemals Consumer SSDs, das geht in die Hose. Selbst bei einem Standardsetup mit ext4/LVMThin ist QLC NAND kein Geschenk und nur maximal zum Spielen mit wenigen VMs geeignet.

Ceph braucht auch viel Bandbreite, daher wenigstens LACP über 2x 10G machen, wenn du Restores testen möchtest.
Aber mit den SSDs wird das nix, da kannst du besser HDDs nutzen.
 
Vielen Dank schonmal für die Antworten!

Ich hab noch ein paar 4 TB Enterprise SSDs da, werde das mal testen.
Auch mit den HDDs versuch ichs mal im Ceph.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!