Ceph atravè iSCSI - oswa ski pandan w kanpe nan yon Hammock

Èske gen moun nan mitan nou (tsefovodov) ki pa renmen "pwofesyonèl ekstrèm"?

Li fasil - otreman nou pa ta dwe woule ak pwodwi sa a trè enteresan ak komik.

Anpil nan moun ki te patisipe nan operasyon Ceph yo te rankontre youn pa trè souvan (oswa pito menm trè ra) men pafwa nan ka demann - konekte Ceph atravè iSCSI oswa FC. Pou kisa? Oke, pou egzanp, soumèt yon imaj soti nan Ceph nan yon sèvè Windows oswa Solaris ki poko te virtualize pou kèk rezon. Oswa yon yon sèl virtualize, men lè l sèvi avèk yon hypervisor ki pa ka fè Ceph - epi, kòm nou konnen, gen anpil nan yo. Pa egzanp? Oke, pou egzanp, HyperV oswa ESXi, ki yo aktivman itilize. Men, si travay la rive nan sèvi yon imaj soti nan Ceph nan yon machin envite, sa a vin tounen yon travay trè enteresan.

Se konsa, bay:

  1. yon gwoup Ceph ki deja kouri
  2. yon imaj ki deja egziste ki dwe sèvi atravè iSCSI
  3. Non pisin mypool, non imaj imaj mwen

Kòmanse?

Premye a tout, lè nou pale sou FC oswa iSCSI, nou gen antite tankou inisyatè ak sib. Sib se aktyèlman yon sèvè, inisyatè se yon kliyan. Travay nou se soumèt imaj Ceph la bay inisyatè a ak efò minim. Sa vle di nou dwe elaji sib. Men, ki kote, sou ki òdinatè?

Erezman, nan yon gwoup Ceph nou gen omwen yon eleman ki gen adrès IP fiks ak sou ki youn nan eleman ki pi enpòtan nan Ceph se configuré, ak eleman sa a se monitè kè bebe a. An konsekans, nou enstale yon sib iSCSI sou monitè a (ak yon initator an menm tan an, omwen pou tès yo). Mwen te fè sa sou CentOS, men solisyon an tou apwopriye pou nenpòt lòt distribisyon - ou jis bezwen enstale pakè yo nan fason ki akseptab nan distribisyon ou.

# yum -y install iscsi-initiator-utils targetcli

Ki objektif pakè enstale yo?

  • targetcli — yon sèvis piblik pou jere sib SCSI bati nan nwayo Linux la
  • iscsi-initiator-utils — yon pake ki gen sèvis piblik yo itilize pou jere inisyatè iSCSI ki te bati nan nwayo Linux la

Yo nan lòd yo soumèt yon imaj atravè iSCSI nan inisyatè a, gen de opsyon pou devlopman nan evènman - itilize backend nan espas itilizatè a nan sib la oswa konekte imaj la kòm yon aparèy blòk vizib nan sistèm nan opere epi ekspòte li atravè iSCSI. Nou pral ale nan dezyèm fason an - backend espas itilizatè a toujou nan yon eta "eksperimantal" epi li se yon ti kras pa pare pou itilizasyon pwodiktif. Anplis de sa, gen enkonvenyans ak li, sou ki ou ka pale anpil ak (o laterè!) diskite.

Si nou itilize menm yon distribisyon yon ti jan ki estab ak yon sik sipò long, Lè sa a, nwayo a nou genyen se kèk ansyen, ansyen vèsyon. Pou egzanp, nan CentOS7 li se 3.10.*, nan CentOS8 li se 4.19. Epi nou enterese nan yon nwayo nan omwen 5.3 (oswa pito 5.4) ak pi nouvo. Poukisa? Paske pa default imaj Ceph yo gen yon seri opsyon aktive ki pa konpatib ak pi ansyen nwayo. Sa vle di ke nou konekte yon depo ak yon nouvo nwayo pou distribisyon nou an (pa egzanp, pou CentOS sa a se elrepo), enstale nouvo nwayo a epi rekòmanse sistèm lan pou travay ak nouvo nwayo a:

  • Konekte ak monitè ki te chwazi pou eksperyans lan
  • Nou konekte repozitwa elrepo dapre enstriksyon yo - elrepo.org/tiki/tiki-index.php
  • Enstale kernel la: yum -y —enablerepo=elrepo-kernel install kernel-ml
  • Rdemare sèvè a ak monitè a (nou gen twa monitè, pa vre?)

Konekte imaj la kòm yon aparèy blòk

# rbd map mypool/myimage
/dev/rbd0

Tout sa ki rete se konfigirasyon sib la. Nan egzanp sa a, mwen pral configured sib la nan sa yo rele. mòd Demo - san otantifikasyon, vizib ak aksesib a tout moun. Nan yon anviwònman pwodiksyon, ou pral gen anpil chans vle konfigirasyon otantifikasyon - men sa a yon ti jan andeyò limit pou egzèsis jis-pou-amizan jodi a.

Kreye yon backend ki rele disk1 ki asosye ak fichye /dev/rbd/mypool/myimage. Fichye espesifye a se yon lyen senbolik otomatikman kreye pa demon udev nan /dev/rbd0. Nou itilize yon lyen senbolik paske non aparèy rbd la ka chanje selon lòd imaj Ceph yo konekte ak lame a.

Kreye yon backend:

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

Kreye yon sib iSCSI:

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

Nou konekte backend la kòm yon LUN nan sib la:

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

Ann konfigirasyon sib la pou mòd Demo:

# 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

Sove konfigirasyon an:

# targetcli saveconfig

Tcheke disponiblite sib la:

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

Nou konekte sib la:

# 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.

Si ou te fè tout bagay kòrèkteman, yon nouvo disk ap parèt sou sèvè a, ki sanble ak yon aparèy SCSI, men se aktyèlman yon imaj ki soti nan Ceph, aksè atravè yon sib iSCSI. Pou evite pwoblèm bòt, li pi bon pou retire disk ki konekte ak sib la detekte nan inisyatè lokal la:

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

Tout sa ki rete se pèsiste konfigirasyon an pou imaj la konekte otomatikman epi, apre koneksyon, sib la stratifye. Lanse yon sib konsiste de de etap - konekte RBD a ak aktyèlman lanse sib la.

Premyèman, se pou yo konfigirasyon koneksyon otomatik imaj RBD ak lame a. Sa a se fè lè w ajoute liy sa yo nan /etc/ceph/rbdmap fichye a:

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

Retabli konfigirasyon sib la se yon ti kras pi konplike - nou bezwen ekri yon inite pou systemd ki pral retabli konfigirasyon an:

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

After=network-online.target rbdmap.service
Before=remote-fs-pre.target
Wants=network-online.target remote-fs-pre.target

[Service] Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/targetcli restoreconfig

[Install] WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl enable scsi-target

Tès final la se rdemare monitè nou an ankò (kounye a se yon sib iSCSI). Li ta dwe remake ke si nou pa te otorize baz done inisyatè a ak lòd la iscsiadm -n discoverydb -o delete... ou ta ka fini ak yon sèvè ki pa chaje oswa ki pran anpil tan pou chaje.

Kisa ki rete?

Konfigirasyon inisyatè a sou sèvè a kote nou vle voye sib la.

Ki jan asire tolerans fay nan sib nou an?

Ou ka menm jan an konfigirasyon sib sou lòt monitè ak mete kanpe multipath (vmware pral konprann sa a e menm travay, Hyper-V pa pral konprann - li mande pou SCSI kadna). Depi kliyan Ceph ki soti nan nwayo a pa sèvi ak kachèt, sa a se byen travayabl. Oswa yon lòt opsyon se kreye yon resous gwoup twa konpozan - yon adrès IP sib dedye ak sèvis rbdmap ak scsi-sib, epi jere resous sa a atravè zouti clustering (ki moun ki di pacemaker?)

Olye de sa nan yon afterword

Kòm li klè, atik sa a se yon ti jan nan yon blag - men nan li mwen te eseye "rapidman ak egzanp" konsidere plizyè sijè jistis popilè an menm tan an - sib iSCSI, ki pa nesesèman ekspòte imaj Ceph - men pou egzanp, ekspòtasyon volim LVM, Basics yo nan travay ak yon inisyatè iSCSI (ki jan yo eskane yon sib, ki jan yo konekte ak yon sib, dekonekte, efase yon antre sib nan baz done a), ekri pwòp inite w pou systemd ak kèk lòt.

Mwen espere ke menm si ou pa repete tout eksperyans sa a nan plen, omwen yon bagay nan atik sa a ap itil ou.

Sous: www.habr.com

Add nouvo kòmantè