ProHoster > blog > administrasi > Ceph melalui iSCSI - atau bermain ski sambil berdiri di tempat tidur gantung
Ceph melalui iSCSI - atau bermain ski sambil berdiri di tempat tidur gantung
Apakah ada di antara kita (tsefovodov) yang tidak menyukai “ekstrim profesional”?
Kecil kemungkinannya - jika tidak, kami tidak akan bermain-main dengan produk yang sangat menarik dan lucu ini.
Banyak dari mereka yang terlibat dalam pengoperasian Ceph telah menemukan kasus yang tidak terlalu sering (atau bahkan sangat jarang), tetapi terkadang dalam permintaan - menghubungkan Ceph melalui iSCSI atau FC. Untuk apa? Misalnya, kirimkan gambar dari Ceph ke server Windows atau Solaris yang belum tervirtualisasi karena alasan tertentu. Atau yang tervirtualisasi, tetapi menggunakan hypervisor yang tidak bisa melakukan Ceph - dan, seperti kita tahu, ada banyak sekali. Misalnya? Nah, misalnya HyperV atau ESXi yang aktif digunakan. Dan jika muncul tugas untuk menyajikan gambar dari Ceph ke mesin tamu, ini menjadi tugas yang sangat menarik.
Jadi diberikan:
cluster Ceph yang sudah berjalan
gambar yang sudah ada yang harus disajikan melalui iSCSI
Nama kolam kolam saya, nama gambar gambarku
Mulai?
Pertama-tama, ketika kita berbicara tentang FC atau iSCSI, kita memiliki entitas seperti inisiator dan target. Target sebenarnya adalah server, inisiator adalah klien. Tugas kita adalah mengirimkan gambar Ceph ke pemrakarsa dengan sedikit usaha. Artinya kita harus memperluas target. Tapi di mana, di komputer apa?
Untungnya, dalam cluster Ceph kami memiliki setidaknya satu komponen yang alamat IP-nya tetap dan salah satu komponen terpenting Ceph dikonfigurasi, dan komponen tersebut adalah monitor. Oleh karena itu, kami memasang target iSCSI pada monitor (dan initator pada saat yang sama, setidaknya untuk pengujian). Saya melakukan ini di CentOS, tetapi solusinya juga cocok untuk distribusi lain - Anda hanya perlu menginstal paket dengan cara yang dapat diterima di distribusi Anda.
# yum -y install iscsi-initiator-utils targetcli
Apa tujuan dari paket yang diinstal?
targetcli — sebuah utilitas untuk mengelola target SCSI yang dibangun di dalam kernel Linux
iscsi-inisiator-utils — paket dengan utilitas yang digunakan untuk mengelola inisiator iSCSI yang terpasang di kernel Linux
Untuk mengirimkan gambar melalui iSCSI ke pemrakarsa, ada dua opsi untuk pengembangan peristiwa - gunakan backend ruang pengguna target atau sambungkan gambar sebagai perangkat blok yang terlihat oleh sistem operasi dan ekspor melalui iSCSI. Kami akan memilih cara kedua - backend ruang pengguna masih dalam status "eksperimental" dan sedikit belum siap untuk penggunaan produktif. Selain itu, ada jebakan yang bisa Anda bicarakan banyak dan (oh ngeri!) Berdebat.
Jika kita menggunakan distribusi yang agak stabil dengan siklus dukungan yang panjang, maka kernel yang kita miliki adalah versi yang sangat kuno. Misalnya, di CentOS7 adalah 3.10.*, di CentOS8 adalah 4.19. Dan kami tertarik pada kernel minimal 5.3 (atau lebih tepatnya 5.4) dan yang lebih baru. Mengapa? Karena secara default image Ceph memiliki serangkaian opsi yang diaktifkan yang tidak kompatibel dengan kernel lama. Ini berarti kita menghubungkan repositori dengan kernel baru untuk distribusi kita (misalnya, untuk CentOS ini adalah elrepo), menginstal kernel baru dan me-reboot sistem agar bekerja dengan kernel baru:
Reboot server dengan monitor (kami punya tiga monitor, kan?)
Menghubungkan gambar sebagai perangkat blok
# rbd map mypool/myimage
/dev/rbd0
Yang tersisa hanyalah mengkonfigurasi target. Dalam contoh ini, saya akan mengkonfigurasi target dalam apa yang disebut. mode demo - tanpa otentikasi, terlihat dan dapat diakses oleh semua orang. Dalam lingkungan produksi, Anda mungkin ingin mengonfigurasi autentikasi - namun hal tersebut agak di luar cakupan latihan yang hanya untuk bersenang-senang saat ini.
Buat backend bernama disk1 yang terkait dengan file /dev/rbd/mypool/myimage. File yang ditentukan adalah tautan simbolik yang secara otomatis dibuat oleh daemon udev ke /dev/rbd0. Kami menggunakan tautan simbolik karena nama perangkat rbd dapat berubah tergantung pada urutan koneksi gambar Ceph ke host.
# 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 ketersediaan target:
# iscsiadm -m discovery -t st -p 127.0.0.1:3260
127.0.0.1:3260,1 iqn.2020-01.demo.ceph:mypool
Kami menghubungkan 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.
Jika Anda melakukan semuanya dengan benar, disk baru akan muncul di server, yang terlihat seperti perangkat SCSI, tetapi sebenarnya merupakan gambar dari Ceph, diakses melalui target iSCSI. Untuk menghindari masalah boot, lebih baik menghapus disk yang terhubung dan target yang terdeteksi dari inisiator lokal:
Yang tersisa hanyalah mempertahankan konfigurasi sehingga gambar terhubung secara otomatis dan, setelah koneksi, targetnya bertingkat. Meluncurkan target terdiri dari dua langkah - menghubungkan RBD dan meluncurkan target secara nyata.
Pertama, mari konfigurasikan koneksi otomatis gambar RBD ke host. Hal ini dilakukan dengan menambahkan baris berikut ke file /etc/ceph/rbdmap:
Tes terakhir adalah me-reboot monitor kita lagi (sekarang menjadi target iSCSI). Perlu diperhatikan jika kita belum membersihkan database inisiator dengan perintah iscsiadm -n Discoverydb -o hapus ... Anda mungkin mendapatkan server yang tidak memuat atau membutuhkan waktu lama untuk dimuat.
Apa yang tersisa?
Konfigurasikan inisiator di server tempat kita ingin mengirim target.
Bagaimana cara memastikan toleransi kesalahan target kita?
Anda juga dapat mengkonfigurasi target pada monitor lain dan mengatur multipath (vmware akan memahami hal ini dan bahkan berfungsi, Hyper-V tidak akan mengerti - ini memerlukan kunci SCSI). Karena klien Ceph dari kernel tidak menggunakan caching, ini cukup bisa dilakukan. Atau pilihan lain adalah membuat sumber daya cluster yang terdiri dari tiga komponen - alamat IP target khusus dan layanan rbdmap dan scsi-target, dan mengelola sumber daya ini melalui alat clustering (siapa bilang alat pacu jantung?)
bukan sebuah epilog
Jelasnya, artikel ini sedikit bercanda - tetapi di dalamnya saya mencoba "dengan cepat dan dengan contoh" mempertimbangkan beberapa topik yang cukup populer secara bersamaan - target iSCSI, yang belum tentu mengekspor gambar Ceph - tetapi misalnya, mengekspor volume LVM, dasar-dasar bekerja dengan inisiator iSCSI ( cara memindai target, cara menyambung ke target, memutuskan sambungan, menghapus entri target dari database), menulis unit Anda sendiri untuk systemd dan beberapa lainnya
Saya harap meskipun Anda tidak mengulangi seluruh percobaan ini secara penuh, setidaknya sesuatu dari artikel ini akan bermanfaat bagi Anda.