Ceph

Benchmark Ceph Cluster Performance¶

Et av de vanligste spørsmålene vi hører er “Hvordan sjekker jeg om klyngen min kjører med maksimal ytelse?”. Wonder no more – i denne veiledningen vil vi gå gjennom noen verktøy du kan bruke til å benchmark Din Ceph cluster.

MERK: ideene i denne artikkelen er basert På Sebastian Han blogginnlegg, TelekomCloud blogginnlegg og innspill Fra ceph utviklere og ingeniører.

Få Baseline Resultatstatistikk¶

benchmarking Handler I Utgangspunktet om sammenligning. Du vil ikke vite om Du Ceph cluster utfører under par med mindre du først identifisere hva maksimal mulig ytelse er. Så, før du begynner å benchmarking klyngen, må du få baseline ytelsesstatistikk for de to hovedkomponentene I Ceph infrastruktur: diskene og nettverket.

Benchmark Diskene Dine¶

den enkleste måten å benchmark disken din er med dd. Bruk følgende kommando til å lese og skrive en fil, husk å legge til oflag-parameteren for å omgå disksidebufferen:
shell> dd if=/dev/zero of=here bs=1G count=1 oflag=direct

Merk den siste statistikken som ble oppgitt, som angir diskytelse I MB / sek. Utfør denne testen for hver disk i klyngen, og noter resultatene.

Benchmark Your Network¶

en annen nøkkelfaktor som påvirker Ceph cluster-ytelsen er nettverksgjennomstrømning. Et godt verktøy for dette er iperf, som bruker en klient-server-tilkobling for å måle TCP og UDP båndbredde.

du kan installere iperf ved hjelp av apt-get install iperf eller yum install iperf.

iperf må installeres på minst to noder i klyngen. Deretter starter iperf-serveren på en av nodene ved hjelp av følgende kommando:

shell> iperf -s

på en annen node, start klienten med følgende kommando, husk å bruke IP-adressen til noden som er vert for iperf-serveren:

shell> iperf -c 192.168.1.1

legg merke til båndbreddestatistikken i Mbits/sek, da dette indikerer maksimal gjennomstrømning som støttes av nettverket.

Nå som du har noen grunnlinjenumre, kan du starte benchmarking Ceph-klyngen for å se om det gir deg lignende ytelse. Benchmarking kan utføres på forskjellige nivåer: du kan utføre lavt nivå benchmarking av lagringsklyngen selv, eller du kan utføre høyere nivå benchmarking av nøkkelgrensesnittene, for eksempel blokkenheter og objektgateways. De følgende avsnittene diskuterer hver av disse tilnærmingene.

MERK: før du kjører noen av referansene i etterfølgende seksjoner, slipp alle cacher ved hjelp av en kommando som dette:
shell> sudo echo 3 | sudo tee /proc/sys/vm/drop_caches && sudo sync

Benchmark a Ceph Storage Cluster¶

Ceph inkluderer rados bench command, designet spesielt for å benchmark EN RADOS storage cluster. For å bruke det, opprett et lagringsbasseng og bruk deretter rados bench for å utføre en skrivestandard, som vist nedenfor.

rados-kommandoen følger med Ceph.

shell> ceph osd pool create scbench 128 128
shell> rados bench -p scbench 10 write --no-cleanup

dette oppretter en ny pool kalt ‘scbench’ og utfører deretter en skrive benchmark i 10 sekunder. Legg merke til — no-cleanup-alternativet, som etterlater noen data. Utgangen gir deg en god indikator på hvor fort klyngen din kan skrive data.
To typer lese benchmarks er tilgjengelige: seq for sekvensiell leser og rand for tilfeldig leser. For å utføre en les benchmark, bruk kommandoene nedenfor:
shell> rados bench -p scbench 10 seq
shell> rados bench -p scbench 10 rand

du kan også legge til-t-parameteren for å øke samtidigheten av leser og skriver (standard 16 tråder), eller-b-parameteren for å endre størrelsen på objektet som skrives (standard 4 MB). Det er også en god ide å kjøre flere kopier av denne referansen mot forskjellige utvalg, for å se hvordan ytelsen endres med flere klienter.
når du har dataene, kan du begynne å sammenligne klyngen lese og skrive statistikk med disk-bare benchmarks utført tidligere, identifisere hvor mye av en ytelse gap finnes (hvis noen), og begynne å lete etter årsaker.
du kan rydde opp referansedataene som er etterlatt av write benchmark med denne kommandoen:

shell> rados -p scbench cleanup

Benchmark en Ceph-Blokkenhet¶

hvis Du er fan Av Ceph-blokkenheter, er det to verktøy du kan bruke til å benchmark deres ytelse. Ceph inkluderer allerede rbd bench-kommandoen, men du kan også bruke det populære i/O benchmarking-verktøyet fio, som nå kommer med innebygd støtte for RADOS-blokkenheter.

rbd-kommandoen følger med Ceph. Rbd-støtte i fio er relativt ny, derfor må du laste den ned fra depotet og deretter kompilere og installere det ved hjelp av_ configure & & make & & make install_. Merk at du må installere librbd-dev-utviklingspakken med apt-get install librbd-dev eller yum install librbd-dev før du kompilerer fio for å aktivere rbd-støtten.

før du bruker et av disse to verktøyene, må du opprette en blokkenhet ved hjelp av kommandoene nedenfor:
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

kommandoen rbd bench-write genererer en serie sekvensielle skriver til bildet og måler skrivegjennomstrømming og ventetid. Her er et eksempel:

shell> rbd bench-write image01 --pool=rbdbench

Eller du kan bruke fio til å benchmark blokk enheten. Et eksempel rbd.fio mal følger med fio kildekoden, som utfører EN 4k tilfeldig skrive test mot EN RADOS blokk enhet via librbd. Merk at du må oppdatere malen med de riktige navnene for bassenget og enheten, som vist nedenfor.

ioengine=rbd
clientname=admin
pool=rbdbench
rbdname=image01
rw=randwrite
bs=4k

iodepth=32

kjør deretter fio som følger:
shell> fio examples/rbd.fio

Benchmark en Ceph Object Gateway¶

når Det gjelder benchmarking Av ceph object gateway, se ikke lenger enn swift-benchmarking verktøyet som følger Med OpenStack Swift. Swift-bench-verktøyet tester Ytelsen Til Ceph-klyngen din ved å simulere client PUT og GET-forespørsler og måle ytelsen.

du kan installere swift-bench ved hjelp av pip install swift & & pip install swift-bench.

for å bruke swift-bench må du først opprette en gateway-bruker og underbruker, som vist nedenfor:
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

deretter oppretter du en konfigurasjonsfil for swift-bench på en klientvert, som nedenfor. Husk å oppdatere autentiseringsadressen for å gjenspeile Den Til Ceph – objektgatewayen din og for å bruke riktig brukernavn og legitimasjon.

auth = http://gateway-node/auth/v1.0
user = benchmark:swift
key = guessme
auth_version = 1.0

Du kan nå kjøre en benchmark som nedenfor. Bruk parameteren-c til å justere antall samtidige tilkoblinger (dette eksemplet bruker 64) og parameteren-s til å justere størrelsen på objektet som skrives (dette eksemplet bruker 4k-objekter). Parametrene-n og-g styrer antall objekter som SKAL SETTES og HENTES henholdsvis.
shell> swift-bench -c 64 -s 4096 -n 1000 -g 100 /tmp/swift.conf

selv om swift-bench måler ytelse i antall objekter / sek, er det enkelt nok å konvertere DETTE TIL MB / sek, ved å multiplisere med størrelsen på hvert objekt. Du bør imidlertid være forsiktig med å sammenligne dette direkte med den opprinnelige diskytelsesstatistikken du oppnådde tidligere, siden en rekke andre faktorer også påvirker denne statistikken, for eksempel:

  • nivået på replikering (og latensoverhead)
  • full data journal skriver (offset i noen situasjoner av journaldata koalescerende)
  • fsync På OSDs for å garantere datasikkerhet
  • metadata overhead for å holde data lagret I RADOS
  • latens overhead (nettverk, ceph, etc) gjør lesehead viktigere

tips: Når det gjelder object gateway ytelse, er det ingen hard og rask regel du kan bruke til å enkelt forbedre ytelsen. I noen tilfeller har Ceph ingeniører vært i stand til å oppnå bedre enn baseline ytelse ved hjelp av smarte caching og coalescing strategier, mens i andre tilfeller har object gateway ytelse vært lavere enn diskytelse på grunn av latens, fsync og metadata overhead.

Konklusjon¶

det finnes en rekke verktøy tilgjengelig for å benchmark en Ceph klynge, på ulike nivåer: disk, nettverk, klynge, enhet og gateway. Du bør nå ha litt innsikt i hvordan du nærmer benchmarking prosessen og begynne å generere ytelsesdata for klyngen. Lykke til!

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.