Ceph via iSCSI - eller stÄ pÄ ski mens du stÄr i en hengekÞye

Er det de blant oss (tsefovodov) som ikke liker "profesjonelt ekstrem"?

Det er usannsynlig - ellers ville vi ikke tumlet rundt med dette ekstremt interessante og morsomme produktet.

Mange Ceph-brukere har stĂžtt pĂ„ et mindre vanlig (eller kanskje til og med svĂŠrt sjeldent), men noen ganger nyttig brukstilfelle: Ă„ koble til Ceph via iSCSI eller FC. Hvorfor? For eksempel Ă„ servere et Ceph-bilde til en server som ennĂ„ ikke er virtualisert. Windows Eller Solaris. Eller en virtualisert en, men med en hypervisor som ikke stĂžtter Ceph – og som vi vet finnes det mange av dem. For eksempel? Vel, for eksempel HyperV eller ESXi, som brukes aktivt. Og hvis oppgaven med Ă„ servere et Ceph-image til en gjestemaskin oppstĂ„r, blir det en veldig interessant utfordring.

SĂ„ gitt:

  1. en allerede kjĂžrende Ceph-klynge
  2. et allerede eksisterende bilde som mÄ serveres via iSCSI
  3. Bassengnavn mypool, bildenavn mitt bilde

Begynne?

FÞrst av alt, nÄr vi snakker om FC eller iSCSI, har vi slike enheter som initiativtaker og mÄl. Target er faktisk en server, initiativtaker er en klient. VÄr oppgave er Ä sende inn Ceph-bildet til initiativtakeren med minimal innsats. Dette betyr at vi mÄ utvide mÄlet. Men hvor, pÄ hvilken datamaskin?

Heldigvis har vi i en Ceph-klynge minst Ă©n komponent med en fast IP-adresse og en av de viktigste Ceph-komponentene konfigurert pĂ„ den: skjermen. FĂžlgelig satte vi opp et iSCSI-mĂ„l pĂ„ skjermen (og en initiator, i hvert fall for testformĂ„l). Jeg gjorde dette pĂ„ CentOS, men lĂžsningen vil ogsĂ„ fungere for alle andre distribusjoner – bare installer pakker pĂ„ den mĂ„ten som er akseptabel for distribusjonen din.

# yum -y install iscsi-initiator-utils targetcli

Hva er hensikten med de installerte pakkene?

  • targetcli — et verktĂžy for Ă„ administrere den innebygde kjernen Linux SCSI-mĂ„l
  • iscsi-initiator-utils — en pakke med verktĂžy brukt til administrasjon, igjen innebygd i kjernen Linux iSCSI-initiator

For Ă„ sende inn et bilde via iSCSI til initiativtakeren, er det to alternativer for utvikling av hendelser – bruk brukeromrĂ„dets backend av mĂ„let eller koble bildet som en blokkenhet synlig for operativsystemet og eksporter det via iSCSI. Vi vil gĂ„ den andre veien - brukeromrĂ„dets backend er fortsatt i en "eksperimentell" tilstand og er litt ikke klar for produktiv bruk. I tillegg er det fallgruver med det, som du kan snakke mye om og (Ă„ grusomt!) krangle om.

Hvis vi bruker en stabil distribusjon med en laaang stÞttesyklus, sÄ er kjernen vÄr en eller annen gammel-gammel versjon. For eksempel, i CentOS7 er 3.10.*, i CentOS8 er 4.19. Men vi er interessert i kjerne 5.3 (og mest sannsynlig 5.4) eller nyere. Hvorfor? Fordi Ceph-avbildninger som standard har et sett med alternativer aktivert som er inkompatible med eldre kjerner. Dette betyr at vi aktiverer et repository med en ny kjerne for distribusjonen vÄr (for eksempel for CentOS (Dette er elrepo), installer den nye kjernen og start systemet pÄ nytt for Ä fungere med den nye kjernen:

  • Koble til monitoren som er valgt for eksperimentet
  • Vi kobler til elrepo-lagre i henhold til instruksjonene - elrepo.org/tiki/tiki-index.php
  • Installer kjernen: yum -y —enablerepo=elrepo-kernel installer kernel-ml
  • Start serveren pĂ„ nytt med skjermen (vi har tre skjermer, ikke sant?)

Koble til bildet som en blokkenhet

# rbd map mypool/myimage
/dev/rbd0

Alt som gjenstÄr er Ä konfigurere mÄlet. I dette eksemplet vil jeg konfigurere mÄlet i den sÄkalte. demomodus - uten autentisering, synlig og tilgjengelig for alle. I et produksjonsmiljÞ vil du sannsynligvis Þnske Ä konfigurere autentisering - men det er litt utenfor rekkevidden for dagens bare for moro skyld Þvelse.

Lag en backend kalt disk1 assosiert med filen /dev/rbd/mypool/myimage. Den angitte filen er en symbolsk lenke automatisk opprettet av udev-daemonen til /dev/rbd0. Vi bruker en symbolsk lenke fordi navnet pÄ rbd-enheten kan endres avhengig av rekkefÞlgen som Ceph-bildene er koblet til verten.

Lag en backend:

# targetcli /backstores/block create disk1 /dev/rbd/mypool/myimage

Opprett et iSCSI-mÄl:

# targetcli /iscsi create iqn.2020-01.demo.ceph:mypool

Vi kobler backend som en LUN til mÄlet:

# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/luns create /backstores/block/disk1

La oss konfigurere mÄlet for demomodus:

# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute demo_mode_write_protect=0
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute generate_node_acls=1
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute cache_dynamic_acls=1

Lagre konfigurasjonen:

# targetcli saveconfig

Kontrollere tilstedevÊrelsen av mÄlet:

# iscsiadm -m discovery -t st -p 127.0.0.1:3260
127.0.0.1:3260,1 iqn.2020-01.demo.ceph:mypool

Vi kobler mÄlet:

# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (multiple)
Login to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] successful.

Hvis du gjorde alt riktig, vil det dukke opp en ny disk pÄ serveren, som ser ut som en SCSI-enhet, men som faktisk er et bilde fra Ceph, som du fÄr tilgang til via et iSCSI-mÄl. For Ä unngÄ oppstartsproblemer er det bedre Ä fjerne den tilkoblede disken og det oppdagede mÄlet fra den lokale initiatoren:

# iscsiadm -m node --logout
# iscsiadm -m discoverydb -o delete -t st -p 127.0.0.1:3260

Alt som gjenstĂ„r er Ă„ fortsette konfigurasjonen slik at bildet kobles til automatisk, og etter tilkobling blir mĂ„let stratifisert. Å lansere et mĂ„l bestĂ„r av to trinn - Ă„ koble til RBD og faktisk lansere mĂ„let.

La oss fĂžrst konfigurere den automatiske tilkoblingen av RBD-bilder til verten. Dette gjĂžres ved Ă„ legge til fĂžlgende linjer i filen /etc/ceph/rbdmap:

# cat /etc/ceph/rbdmap
# RbdDevice Parameters
mypool/myimage id=admin
# systemctl enable rbdmap

Å gjenopprette mĂ„lkonfigurasjonen er litt mer komplisert - vi mĂ„ skrive en enhet for systemd som vil gjenopprette konfigurasjonen:

# cat /usr/lib/systemd/system/scsi-target.service
[Unit]
Description=Start iSCSI target

Etter=nettverk-pÄlogget.mÄl rbdmap.tjeneste
FÞr=fs-pre.mÄl
Ønsker=nettverk-pÄlogget.mÄl ekstern-fs-pre.mÄl

[Service]
Type=ettbilde
RemainAfterExit = yes
ExecStart=/bin/targetcli gjenopprettingskonfigurasjon

[Installere]
WantedBy = multi-user.target

# systemtatt daemon-reload
# systemctl aktiverer scsi-mÄl

Den siste testen er Ä starte skjermen pÄ nytt (det er nÄ et iSCSI-mÄl). Det skal bemerkes at hvis vi ikke hadde tÞmt initiativtakerens database med kommandoen iscsiadm -n discoverydb -o slette ... du kan ende opp med en server som ikke laster eller tar lang tid Ä laste.

Hva er igjen?

Konfigurer initiatoren pÄ serveren vi Þnsker Ä sende mÄlet til.

Hvordan sikre feiltoleranse for mÄlet vÄrt?

Du kan pĂ„ lignende mĂ„te konfigurere mĂ„l pĂ„ andre skjermer og sette opp flerveisveiing (VMware vil forstĂ„ dette og til og med fungere, men Hyper-V vil ikke, da det krever SCSI-lĂ„ser). Siden Ceph-klienten i kjernen ikke bruker mellomlagring, er dette fullt mulig. Et annet alternativ er Ă„ opprette en klyngeressurs fra tre komponenter – en dedikert IP-adresser target og tjenester rbdmap og scsi-target, og administrere denne ressursen gjennom klyngeverktĂžy (hvem sa pacemaker?)

i stedet for en epilog

Som det er klart, er denne artikkelen litt av en spÞk - men i den prÞvde jeg Ä "raskt og med eksempler" vurdere flere ganske populÊre emner pÄ samme tid - iSCSI-mÄl, som kanskje ikke nÞdvendigvis eksporterer Ceph-bilder - men for eksempel, eksportere LVM-volumer, det grunnleggende om Ä jobbe med en iSCSI-initiator (hvordan skanne et mÄl, hvordan koble til et mÄl, koble fra, slette en mÄloppfÞring fra databasen), skrive din egen enhet for systemd og noen andre

Jeg hÄper at selv om du ikke gjentar hele dette eksperimentet i sin helhet, vil i det minste noe fra denne artikkelen vÊre nyttig for deg.

Kilde: www.habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster