Ceph
Referenční Ceph Clusteru Výkon¶
Jedním z nejčastějších otázek, které jsme slyšeli, je: “Jak mohu zkontrolovat, zda můj clusteru běží na maximální výkon?”. Wonder no more – v této příručce vás provedeme některými nástroji, které můžete použít k benchmarku vašeho clusteru Ceph.
poznámka: nápady v tomto článku jsou založeny na blogu Sebastiana Han, blogu TelekomCloud a vstupech od vývojářů a inženýrů Ceph.
získejte základní statistiky výkonu¶
benchmarking je zásadně o srovnání. Nebudete vědět, zda cluster Ceph provádí pod par, pokud nejprve nezjistíte, jaký je jeho maximální možný výkon. Takže předtím, než začnete benchmarking clusteru, potřebujete získat základní statistiky výkonu pro dvě hlavní součásti vaší infrastruktury Cef: disků a sítě.
Benchmark disků¶
nejjednodušší způsob, jak benchmark disku je s dd. Použijte následující příkaz pro čtení a zápis souborů, protože si vzpomněla přidat oflag parametru bypass disk cache stránky:shell> dd if=/dev/zero of=here bs=1G count=1 oflag=direct
Poznámka: poslední statistika za předpokladu, což naznačuje výkon disku v MB/sec. Tento test proveďte pro každý disk v clusteru, berouce na vědomí výsledky.
Benchmark vaší sítě¶
dalším klíčovým faktorem ovlivňujícím výkon clusteru Ceph je propustnost sítě. Dobrým nástrojem je iperf, který používá připojení klient-server k měření šířky pásma TCP a UDP.
iperf můžete nainstalovat pomocí apt-get install iperf nebo yum install iperf.
iperf musí být nainstalován alespoň na dvou uzlech ve vašem clusteru. Pak, na jednom z uzlů, spustit iperf server pomocí následujícího příkazu:
shell> iperf -s
Na jiném uzlu, spusťte klienta pomocí následujícího příkazu, vzpomínka použít IP adresu uzlu hosting iperf server:
shell> iperf -c 192.168.1.1
Poznámka: šířka pásma statistika v Mbits/sec, jako tento parametr označuje maximální propustnost podporována vaší sítí.
Teď, že máte nějakou základní čísla, můžete začít srovnávání Ceph clusteru, jestli ti to dává podobný výkon. Srovnávání lze provádět na různých úrovních: lze provést low-level benchmarking z úložiště clusteru sám, nebo můžete provést na vyšší úrovni, benchmarking klíčových rozhraní, jako jsou bloková zařízení a objekt brány. Následující části diskutují o každém z těchto přístupů.
Poznámka: Před spuštěním některého z referenčních hodnot v následujících sekcích zrušte všechny mezipaměti pomocí příkazu, jako je tento:shell> sudo echo 3 | sudo tee /proc/sys/vm/drop_caches && sudo sync
Benchmark Ceph Storage Cluster¶
Ceph zahrnuje příkaz Rados bench, navržený speciálně pro benchmark Rados storage cluster. Chcete-li jej použít, vytvořte fond úložiště a poté pomocí Rados bench proveďte měřítko zápisu, jak je uvedeno níže.
příkaz rados je součástí ceph.
shell> ceph osd pool create scbench 128 128
shell> rados bench -p scbench 10 write --no-cleanup
tím se vytvoří nový fond s názvem “scbench” a poté se provede zápis benchmark pro 10 sekundy. Všimněte si volby — no-cleanup, která zanechává některá data. Výstup vám dává dobrý ukazatel toho, jak rychle může váš cluster zapisovat data.
jsou k dispozici dva typy měřítek čtení: seq pro sekvenční čtení a rand pro náhodné čtení. Provést číst měřítko, použijte příkazy níže:shell> rados bench -p scbench 10 seq
shell> rados bench -p scbench 10 rand
můžete také přidat -t parametr zvýšit souběžnost čte a píše (výchozí hodnota je 16 vláken), nebo -b parametr, který chcete změnit velikost objektu je psáno (výchozí hodnota je 4 MB). Je také dobré spustit více kopií tohoto benchmarku proti různým fondům, abyste viděli, jak se výkon mění s více klienty.
Jakmile budete mít data, můžete začít porovnání clusteru číst a psát statistiky s disk-pouze referenční hodnoty provedl dříve, identifikovat, jak velký výkonnostní rozdíl existuje (pokud existuje), a začít hledat důvody.
pomocí tohoto příkazu můžete vyčistit data benchmarku, která zanechala benchmark write:
shell> rados -p scbench cleanup
Referenční Ceph Block Device¶
Pokud jste fanoušek Ceph block zařízení, tam jsou dva nástroje, které můžete použít k benchmarku jejich výkon. Ceph již obsahuje příkaz RBD bench, ale můžete také použít populární nástroj i / O benchmarking Fio, který nyní přichází s vestavěnou podporou blokových zařízení RADOS.
příkaz rbd je součástí ceph. RBD podporu ve fio je relativně nový, a proto budete muset stáhnout z úložiště a pak zkompilovat a nainstalovat to using_ configure && && aby install_. Všimněte si, že musíte nainstalovat librbd-dev vývoj balíčku s apt-get install librbd-dev nebo yum install librbd-dev před kompilací fio, aby se aktivoval jeho RBD podporu.
Před použitím kterékoli z těchto dvou nástrojů, i když, vytvořit blokové zařízení pomocí příkazů níže:shell> ceph osd pool create rbdbench 128 128
shell> rbd create image01 --size 1024 --pool rbdbench
shell> sudo rbd map image01 --pool rbdbench --name client.admin
shell> sudo /sbin/mkfs.ext4 -m0 /dev/rbd/rbdbench/image01
shell> sudo mkdir /mnt/ceph-block-device
shell> sudo mount /dev/rbd/rbdbench/image01 /mnt/ceph-block-device
oblasti povodí bench-napsat příkaz generuje sérii sekvenční zápisy do obrazu a měření psát propustnost a latence. Zde je příklad:
shell> rbd bench-write image01 --pool=rbdbench
nebo můžete použít fio k benchmarku vašeho blokového zařízení. Příklad rbd.šablona fio je součástí zdrojového kódu fio, který provádí test náhodného zápisu 4K proti blokovému zařízení RADOS přes librbd. Všimněte si, že budete muset aktualizovat šablonu se správnými názvy pro váš bazén a zařízení, jak je uvedeno níže.
ioengine=rbd
clientname=admin
pool=rbdbench
rbdname=image01
rw=randwrite
bs=4k
iodepth=32
Potom, spustit fio takto:shell> fio examples/rbd.fio
Referenční Ceph Object Brána¶
Když přijde na porovnávání Ceph object brány, podívej ne dále než swift-lavice, benchmarking nástroj je součástí OpenStack Swift. Nástroj swift-bench testuje výkon vašeho clusteru Ceph simulováním požadavků klienta PUT a GET a měřením jejich výkonu.
swift-bench můžete nainstalovat pomocí pip install swift && pip install swift-bench.
použití swift-lavice, musíte nejprve vytvořit gateway uživatele a subuser, jak je uvedeno níže:shell> sudo radosgw-admin user create --uid="benchmark" --display-name="benchmark"
shell> sudo radosgw-admin subuser create --uid=benchmark --subuser=benchmark:swift
--access=full
shell> sudo radosgw-admin key create --subuser=benchmark:swift --key-type=swift
--secret=guessme
shell> radosgw-admin user modify --uid=benchmark --max-buckets=0
Další, vytvořit konfigurační soubor pro swift-lavice na klienta hostitele, jak je uvedeno níže. Nezapomeňte aktualizovat adresu URL ověřování tak, aby odrážela adresu brány objektu Ceph a používat správné uživatelské jméno a přihlašovací údaje.
auth = http://gateway-node/auth/v1.0
user = benchmark:swift
key = guessme
auth_version = 1.0
nyní můžete spustit benchmark, jak je uvedeno níže. Pomocí parametru-c upravte počet souběžných připojení (tento příklad používá 64) a parametrem-s upravte velikost zapisovaného objektu(tento příklad používá objekty 4K). Parametry-n A-g řídí počet objektů, které mají být vloženy a získány.shell> swift-bench -c 64 -s 4096 -n 1000 -g 100 /tmp/swift.conf
ačkoli swift-bench měří výkon v počtu objektů / s, je to dost snadné převést na MB / s, vynásobením velikosti každého objektu. Nicméně, měli byste být ostražití při porovnávání tohoto přímo s výchozí výkon disku statistik jste získali dříve, protože řada jiných faktorů také vliv těchto statistik, jako je:
- úroveň replikace (a latence režie)
- kompletní údaje journal píše (offset v některých situacích tím, že věstníku dat slučovací)
- fsync na OSDs zaručit bezpečnost dat
- metadata režii pro udržení dat uložených v RADOS
- latence nad hlavou (sítě, ceph, atd.) dělá readahead důležitější
TIP: Pokud jde o výkon brány objektů, neexistuje žádné tvrdé a rychlé pravidlo, které můžete použít ke snadnému zlepšení výkonu. V některých případech, Ceph inženýři byli schopni získat lepší-než-základní výkon pomocí chytré ukládání do mezipaměti a splývání strategií, vzhledem k tomu, že v jiných případech, objekt brány výkon byl nižší, než výkon disku kvůli latenci, fsync a metadata nad hlavou.
Závěr¶
Existuje řada nástrojů, k dispozici referenční Ceph clusteru, na různých úrovních: disk, sítě, klastru, zařízení a bránu. Nyní byste měli mít přehled o tom, jak přistupovat k procesu benchmarkingu a začít generovat údaje o výkonu vašeho clusteru. Hodně štěstí!