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 daripada mereka yang terlibat dalam operasi Ceph telah menemui satu yang tidak terlalu kerap (atau lebih tepatnya sangat jarang) tetapi kadangkala dalam kes permintaan - menghubungkan Ceph melalui iSCSI atau FC. Untuk apa? Baik, sebagai contoh, serahkan imej dari Ceph ke pelayan Windows atau Solaris yang masih belum dimayakan atas sebab tertentu. Atau maya, tetapi menggunakan hipervisor yang tidak boleh melakukan Ceph - dan, seperti yang kita tahu, terdapat banyak daripadanya. Sebagai contoh? Nah, sebagai contoh, HyperV atau ESXi, yang digunakan secara aktif. Dan jika timbul tugas untuk menyampaikan imej dari Ceph kepada mesin tetamu, ini bertukar menjadi tugas yang sangat menarik.
Jadi, diberikan:
kluster Ceph yang sudah berjalan
imej sedia ada yang mesti disampaikan melalui iSCSI
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?
Nasib baik, dalam kluster Ceph kami mempunyai sekurang-kurangnya satu komponen yang alamat IPnya ditetapkan dan yang mana salah satu komponen Ceph yang paling penting dikonfigurasikan, dan komponen itu ialah monitor. Sehubungan itu, kami memasang sasaran iSCSI pada monitor (dan pemula pada masa yang sama, sekurang-kurangnya untuk ujian). Saya melakukan ini pada CentOS, tetapi penyelesaiannya juga sesuai untuk mana-mana pengedaran lain - anda hanya perlu memasang pakej dengan cara yang boleh diterima dalam pengedaran anda.
# yum -y install iscsi-initiator-utils targetcli
Apakah tujuan pakej yang dipasang?
targetcli β utiliti untuk menguruskan sasaran SCSI yang dibina ke dalam kernel Linux
iscsi-inisiator-utils - pakej dengan utiliti yang digunakan untuk mengurus pemula iSCSI yang dibina ke dalam kernel Linux
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 walaupun pengedaran yang agak stabil dengan kitaran sokongan yang panjang, maka kernel yang kita ada adalah versi kuno dan kuno. Sebagai contoh, dalam CentOS7 ia adalah 3.10.*, dalam CentOS8 ia adalah 4.19. Dan kami berminat dengan kernel sekurang-kurangnya 5.3 (atau lebih tepat 5.4) dan lebih baru. kenapa? Kerana secara lalai imej Ceph mempunyai set pilihan yang didayakan yang tidak serasi dengan kernel lama. Ini bermakna kami menyambungkan repositori dengan kernel baharu untuk pengedaran kami (contohnya, untuk CentOS ini adalah elrepo), pasang kernel baharu dan but semula sistem untuk berfungsi dengan kernel baharu:
Sambungkan ke monitor yang dipilih untuk percubaan
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.
# 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:
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:
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 juga boleh mengkonfigurasi sasaran pada monitor lain dan menyediakan berbilang laluan (vmware akan memahami ini dan juga berfungsi, Hyper-V tidak akan faham - ia memerlukan kunci SCSI). Memandangkan klien Ceph dari kernel tidak menggunakan caching, ini agak boleh dilaksanakan. Atau pilihan lain ialah mencipta sumber kluster tiga komponen - alamat IP sasaran khusus dan perkhidmatan rbdmap dan sasaran scsi, dan mengurus sumber ini melalui alat pengelompokan (siapa kata perentak 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.