Ceph liwat iSCSI - utawa ski nalika ngadeg ing hammock

Apa ana ing antarane kita (tsefovodov) sing ora seneng "ekstrem profesional"?

Ora mungkin - yen ora, kita ora bakal tumbling karo produk sing menarik lan lucu iki.

Akeh wong sing melu operasi Ceph wis nemokake siji sing ora kerep banget (utawa malah arang banget) nanging kadhangkala ana ing kasus sing dikarepake - nyambungake Ceph liwat iSCSI utawa FC. Kanggo apa? Contone, ngirim gambar saka Ceph menyang server Windows utawa Solaris sing durung divirtualake kanthi alesan. Utawa siji virtualized, nanging nggunakake hypervisor sing ora bisa nindakake Ceph - lan, kita ngerti, ana akeh. Tuladhane? Contone, HyperV utawa ESXi, sing aktif digunakake. Lan yen tugas muncul kanggo ngawula gambar saka Ceph menyang mesin tamu, iki dadi tugas banget macem.

Dadi diwenehi:

  1. kluster Ceph sing wis mlaku
  2. gambar sing wis ana sing kudu dilayani liwat iSCSI
  3. Jeneng blumbang mypool, jeneng gambar gambarku

miwiti?

Kaping pisanan, nalika kita ngomong babagan FC utawa iSCSI, kita duwe entitas minangka inisiator lan target. Target sejatine server, inisiator minangka klien. Tugas kita yaiku ngirim gambar Ceph menyang inisiator kanthi minimal gaweyan. Iki tegese kita kudu nggedhekake target. Nanging ing ngendi, ing komputer apa?

Begjanipun, ing kluster Ceph kita duwe paling siji komponèn kang alamat IP tetep lan kang siji saka komponen paling penting saka Ceph diatur, lan komponen iku monitor. Patut, kita nginstal target iSCSI ing monitor (lan iniator ing wektu sing padha, paling ora kanggo tes). Aku nindakake iki ing CentOS, nanging solusi kasebut uga cocog kanggo distribusi liyane - sampeyan mung kudu nginstal paket kanthi cara sing bisa ditampa ing distribusi sampeyan.

# yum -y install iscsi-initiator-utils targetcli

Apa tujuan saka paket sing diinstal?

  • targetcli - sarana kanggo ngatur target SCSI sing dibangun ing kernel Linux
  • iscsi-initiator-utils - paket karo keperluan digunakake kanggo ngatur inisiator iSCSI dibangun ing kernel Linux

Kanggo ngirim gambar liwat iSCSI menyang inisiator, ana rong pilihan kanggo pangembangan acara - gunakake backend userspace saka target utawa nyambungake gambar minangka piranti pemblokiran katon kanggo sistem operasi lan ngekspor liwat iSCSI. Kita bakal pindhah cara liya - backend userspace isih ing "eksperimen" negara lan rada ora siap kanggo nggunakake produktif. Kajaba iku, ana pitfalls karo, bab kang sampeyan bisa ngomong kathah lan (oh medeni!) argue.

Yen kita nggunakake malah distribusi Luwih stabil karo siklus support dawa, banjur kernel kita duwe sawetara kuna, versi kuna. Contone, ing CentOS7 iku 3.10.*, ing CentOS8 iku 4.19. Lan kita kasengsem ing kernel paling 5.3 (utawa luwih 5.4) lan luwih anyar. Kenging punapa? Amarga kanthi gawan, gambar Ceph duwe pilihan sing ora kompatibel karo kernel lawas. Iki tegese kita nyambungake repositori karo kernel anyar kanggo distribusi kita (contone, kanggo CentOS iki elrepo), instal kernel anyar lan urip maneh sistem kanggo nggarap kernel anyar:

  • Sambungake menyang monitor sing dipilih kanggo eksperimen
  • Kita nyambungake repositori elrepo miturut instruksi - elrepo.org/tiki/tiki-index.php
  • Instal kernel: yum -y β€”enablerepo=elrepo-kernel install kernel-ml
  • Urip maneh server nganggo monitor (kita duwe telung monitor, ta?)

Nyambungake gambar minangka piranti pamblokiran

# rbd map mypool/myimage
/dev/rbd0

Kabeh sing isih ana yaiku ngatur target. Ing conto iki, aku bakal ngatur target ing supaya disebut-. mode demo - tanpa otentikasi, katon lan bisa diakses kabeh wong. Ing lingkungan produksi, sampeyan bisa uga pengin ngatur otentikasi - nanging iki rada ora bisa digunakake kanggo latihan sing mung kanggo nyenengake saiki.

Nggawe backend jenenge disk1 sing digandhengake karo file /dev/rbd/mypool/myimage. Berkas sing ditemtokake minangka tautan simbolis kanthi otomatis digawe dening daemon udev menyang / dev / rbd0. Kita nggunakake link simbolis amarga jeneng piranti rbd bisa diganti gumantung ing urutan kang gambar Ceph disambungake menyang inang.

Nggawe backend:

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

Nggawe target iSCSI:

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

Kita nyambungake backend minangka LUN menyang target:

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

Ayo konfigurasi target kanggo mode 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

Simpen konfigurasi:

# targetcli saveconfig

Priksa kasedhiyan target:

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

Kita nyambungake target:

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

Yen sampeyan nindakake kabeh kanthi bener, disk anyar bakal katon ing server, sing katon kaya piranti SCSI, nanging sejatine gambar saka Ceph, diakses liwat target iSCSI. Kanggo ngindhari masalah boot, luwih becik mbusak disk sing disambungake lan target sing dideteksi saka inisiator lokal:

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

Kabeh sing isih ana yaiku tetep konfigurasi supaya gambar disambungake kanthi otomatis lan, sawise sambungan, target wis stratified. Ngluncurake target kalebu rong langkah - nyambungake RBD lan bener miwiti target.

Pisanan, ayo ngatur sambungan otomatis gambar RBD menyang host. Iki rampung kanthi nambahake baris ing ngisor iki menyang file /etc/ceph/rbdmap:

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

Mulihake konfigurasi target luwih rumit - kita kudu nulis unit kanggo systemd sing bakal mulihake konfigurasi:

# 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

Tes pungkasan yaiku urip maneh monitor kita (saiki dadi target iSCSI). Sampeyan kudu nyatet yen kita wis ora mbusak database inisiator karo printah iscsiadm -n discoverydb -o mbusak ... sampeyan bisa mungkasi karo server sing ora mbukak utawa njupuk wektu dawa kanggo mbukak.

Apa sing isih ana?

Konfigurasi inisiator ing server sing arep dikirim target.

Kepiye carane njamin toleransi kesalahan saka target kita?

Sampeyan uga bisa ngatur target ing monitor liyane lan nyetel multipath (vmware bakal ngerti iki lan malah bisa, Hyper-V ora bakal ngerti - mbutuhake kunci SCSI). Wiwit klien Ceph saka kernel ora nggunakake caching, iki cukup bisa digunakake. Utawa pilihan liyane yaiku nggawe sumber kluster saka telung komponen - alamat IP target khusus lan layanan rbdmap lan scsi-target, lan ngatur sumber daya iki liwat alat clustering (sapa sing ngomong pacemaker?)

Tinimbang afterword

Kaya sing wis dingerteni, artikel iki rada guyon - nanging ing kana aku nyoba "cepet lan kanthi conto" nimbang sawetara topik sing cukup populer ing wektu sing padha - target iSCSI, sing bisa uga ora ngekspor gambar Ceph - nanging contone. volume ekspor LVM, dhasar nggarap inisiator iSCSI (carane mindhai target, carane nyambung menyang target, medhot sambungan, mbusak entri target saka database), nulis unit sampeyan dhewe kanggo systemd lan sawetara liyane

Muga-muga sanajan sampeyan ora mbaleni kabeh eksperimen iki kanthi lengkap, paling ora ana sing ana ing artikel iki bakal migunani kanggo sampeyan.

Source: www.habr.com

Add a comment