Ceph melalui iSCSI - atau bermain ski sambil berdiri di buaian

Adakah di kalangan kita (tsefovodov) yang tidak suka "ekstrem profesional"?

Tidak mungkin - jika tidak, kami tidak akan bermain-main dengan produk yang sangat menarik dan kelakar ini.

Ramai pengguna Ceph telah menemui kes penggunaan yang kurang biasa (atau mungkin sangat jarang berlaku) tetapi kadangkala berguna: menyambungkan Ceph melalui iSCSI atau FC. Mengapa? Contohnya, menayangkan imej Ceph ke pelayan yang belum divirtualisasikan. Windows Atau Solaris. Atau yang divirtualisasikan, tetapi menggunakan hipervisor yang tidak menyokong Ceph—dan, seperti yang kita tahu, terdapat banyak hipervisor seperti itu. Contohnya? Contohnya, HyperV atau ESXi, yang digunakan secara aktif. Dan jika tugas untuk menyampaikan imej Ceph kepada mesin tetamu timbul, ia menjadi cabaran yang sangat menarik.

Jadi, diberikan:

  1. kluster Ceph yang sudah berjalan
  2. imej sedia ada yang mesti disampaikan melalui iSCSI
  3. Nama kolam mypool, nama imej gambaran saya

Mulakan?

Pertama sekali, apabila kita bercakap tentang FC atau iSCSI, kita mempunyai entiti seperti inisiator dan sasaran. Sasaran sebenarnya adalah pelayan, pemula adalah pelanggan. Tugas kami ialah menyerahkan imej Ceph kepada pemula dengan usaha yang minimum. Ini bermakna kita mesti mengembangkan sasaran. Tetapi di mana, pada komputer apa?

Mujurlah, dalam kluster Ceph, kita mempunyai sekurang-kurangnya satu komponen dengan alamat IP tetap dan salah satu komponen Ceph yang paling penting dikonfigurasikan padanya: monitor. Sehubungan itu, kita menyediakan sasaran iSCSI pada monitor (dan pemula, sekurang-kurangnya untuk tujuan pengujian). Saya melakukan ini pada CentOS, tetapi penyelesaiannya juga akan berfungsi untuk mana-mana pengedaran lain—cuma pasang pakej dengan cara yang boleh diterima untuk pengedaran anda.

# yum -y install iscsi-initiator-utils targetcli

Apakah tujuan pakej yang dipasang?

  • targetcli — utiliti untuk mengurus kernel terbina dalam Linux Sasaran SCSI
  • iscsi-inisiator-utils — pakej dengan utiliti yang digunakan untuk pengurusan, sekali lagi terbina dalam kernel Linux Pemula iSCSI

Untuk menyerahkan imej melalui iSCSI kepada pemula, terdapat dua pilihan untuk pembangunan acara - gunakan bahagian belakang ruang pengguna sasaran atau sambungkan imej sebagai peranti blok yang boleh dilihat oleh sistem pengendalian dan eksportnya melalui iSCSI. Kami akan pergi ke cara kedua - bahagian belakang ruang pengguna masih dalam keadaan "percubaan" dan sedikit tidak bersedia untuk kegunaan produktif. Di samping itu, terdapat perangkap dengannya, yang anda boleh bercakap banyak dan (oh seram!) Berhujah.

Jika kita menggunakan sebarang taburan stabil dengan kitaran sokongan yang panjang, maka kernel kita ialah beberapa versi purba-kuno. Contohnya, dalam CentOS7 ialah 3.10.*, dalam CentOS8 ialah 4.19. Tetapi kami berminat dengan kernel 5.3 (dan kemungkinan besar 5.4) atau yang lebih baharu. Mengapa? Kerana secara lalai, imej Ceph mempunyai satu set pilihan yang diaktifkan yang tidak serasi dengan kernel lama. Ini bermakna kami mendayakan repositori dengan kernel baharu untuk pengedaran kami (contohnya, untuk CentOS (Ini elrepo), pasang kernel baharu dan but semula sistem untuk berfungsi dengan kernel baharu:

  • Sambungkan ke monitor yang dipilih untuk percubaan
  • Kami menyambungkan repositori elrepo mengikut arahan - elrepo.org/tiki/tiki-index.php
  • Pasang kernel: yum -y —enablerepo=elrepo-kernel install kernel-ml
  • But semula pelayan dengan monitor (kami mempunyai tiga monitor, bukan?)

Menyambungkan imej sebagai peranti blok

# rbd map mypool/myimage
/dev/rbd0

Yang tinggal hanyalah mengkonfigurasi sasaran. Dalam contoh ini, saya akan mengkonfigurasi sasaran dalam apa yang dipanggil. mod demo - tanpa pengesahan, boleh dilihat dan boleh diakses oleh semua orang. Dalam persekitaran pengeluaran, anda mungkin ingin mengkonfigurasi pengesahan - tetapi itu agak di luar skop untuk latihan hari ini yang hanya untuk berseronok.

Buat bahagian belakang bernama disk1 yang dikaitkan dengan fail /dev/rbd/mypool/myimage. Fail yang ditentukan ialah pautan simbolik yang dicipta secara automatik oleh daemon udev ke /dev/rbd0. Kami menggunakan pautan simbolik kerana nama peranti rbd boleh berubah bergantung pada susunan imej Ceph disambungkan kepada hos.

Buat bahagian belakang:

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

Buat sasaran iSCSI:

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

Kami menyambungkan bahagian belakang sebagai LUN kepada sasaran:

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

Mari konfigurasikan sasaran untuk mod 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

Simpan konfigurasi:

# targetcli saveconfig

Memeriksa kehadiran sasaran:

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

Kami menyambungkan sasaran:

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

Jika anda melakukan semuanya dengan betul, cakera baharu akan muncul pada pelayan, yang kelihatan seperti peranti SCSI, tetapi sebenarnya imej daripada Ceph, diakses melalui sasaran iSCSI. Untuk mengelakkan masalah but, adalah lebih baik untuk mengalih keluar cakera yang disambungkan dan sasaran yang dikesan daripada pemula setempat:

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

Apa yang tinggal adalah untuk mengekalkan konfigurasi supaya imej disambungkan secara automatik dan, selepas sambungan, sasaran berstrata. Melancarkan sasaran terdiri daripada dua langkah - menyambungkan RBD dan sebenarnya melancarkan sasaran.

Mula-mula, mari kita konfigurasikan sambungan automatik imej RBD kepada hos. Ini dilakukan dengan menambah baris berikut pada fail /etc/ceph/rbdmap:

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

Memulihkan konfigurasi sasaran adalah sedikit lebih rumit - kita perlu menulis unit untuk systemd yang akan memulihkan 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

[Perkhidmatan]
Jenis=satu pukulan
RemainAfterExit = ya
MulaLaksana=/bin/konfigurasi pemulihan sasarancli

[Pasang]
WantedBy = multi-user.target

# sistemik daemon-reload
# systemctl membolehkan scsi-target

Ujian terakhir adalah untuk but semula monitor kami (kini sasaran iSCSI). Perlu diingatkan bahawa jika kami tidak mengosongkan pangkalan data pemula dengan arahan iscsiadm -n discoverydb -o padam ... anda boleh berakhir dengan pelayan yang tidak memuatkan atau mengambil masa yang lama untuk dimuatkan.

Apa yang tinggal?

Konfigurasikan pemula pada pelayan di mana kita ingin menghantar sasaran.

Bagaimana untuk memastikan toleransi kesalahan sasaran kita?

Anda boleh mengkonfigurasi sasaran pada monitor lain dan menyediakan berbilang laluan (VMware akan memahami perkara ini dan juga berfungsi, tetapi Hyper-V tidak akan, kerana ia memerlukan kunci SCSI). Memandangkan klien Ceph dalam kernel tidak menggunakan caching, ini boleh dilaksanakan dengan sempurna. Pilihan lain adalah untuk mencipta sumber kluster daripada tiga komponen—komponen khusus alamat IP target dan perkhidmatan rbdmap dan scsi-target, dan uruskan sumber ini melalui alat pengelompokan (siapa kata alat pacu jantung?)

bukannya epilog

Seperti yang jelas, artikel ini adalah sedikit jenaka - tetapi di dalamnya saya cuba "dengan cepat dan dengan contoh" mempertimbangkan beberapa topik yang agak popular pada masa yang sama - sasaran iSCSI, yang mungkin tidak semestinya mengeksport imej Ceph - tetapi sebagai contoh, eksport volum LVM, asas bekerja dengan pemula iSCSI ( cara mengimbas sasaran, cara menyambung ke sasaran, memutuskan sambungan, memadam masukan sasaran daripada pangkalan data), menulis unit anda sendiri untuk systemd dan beberapa yang lain

Saya berharap walaupun anda tidak mengulangi keseluruhan percubaan ini sepenuhnya, sekurang-kurangnya sesuatu daripada artikel ini akan berguna kepada anda.

Sumber: www.habr.com

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster