Storage Tiering pada OpenStack menggunakan Ceph

Dalam dunia cloud computing yang terus berkembang, manajemen penyimpanan yang efisien menjadi sangat penting. Salah satu teknik yang efektif untuk mengoptimalkan kinerja dan biaya penyimpanan adalah storage tiering. Pada artikel ini, kita akan membahas bagaimana melakukan storage tiering pada OpenStack menggunakan Ceph, sebuah solusi penyimpanan open-source yang sangat populer.
Apa Itu Storage Tiering?
Storage tiering adalah teknik manajemen data yang melibatkan pengaturan data di berbagai tingkat penyimpanan berdasarkan kinerja, biaya, dan kebutuhan aksesibilitas. Data yang sering diakses (hot data) ditempatkan pada penyimpanan yang cepat dan mahal, sedangkan data yang jarang diakses (cold data) disimpan pada media yang lebih lambat dan murah.
Mengapa Menggunakan Ceph dengan OpenStack?
Ceph adalah sistem penyimpanan terdistribusi yang menawarkan skalabilitas tinggi, kinerja yang handal, dan fleksibilitas yang besar. Ketika diintegrasikan dengan OpenStack, Ceph dapat menyediakan solusi penyimpanan yang efisien dan andal untuk berbagai kebutuhan penyimpanan, termasuk storage tiering.
Berikut adalah langkah-Langkah Melakukan Storage Tiering pada OpenStack Menggunakan Ceph
-
Install Docker
# curl -fsSL https://get.docker.com -o get-docker.sh # sh get-docker.sh
-
Download Installer Cephadm
# CEPH_RELEASE=18.2.2 # curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm # chmod +x cephadm
-
Instal paket
# ./cephadm add-repo --release reef # ./cephadm install
-
Bootstrap cluster baru
# cephadm bootstrap --mon-ip 10.10.10.91 --allow-fqdn-hostname # cephadm install ceph-common
-
Instal ceph-common
# cephadm install ceph-common # ceph health
-
Menambahkan host tambahan ke cluster
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph2 # ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph3 # ceph orch host add ceph2 10.10.10.92 --labels _admin # ceph orch host add ceph3 10.10.10.93 --labels _admin
-
Menambahkan OSD
# ceph orch daemon add osd ceph1:/dev/sdb # ceph orch daemon add osd ceph1:/dev/sdc # ceph orch daemon add osd ceph1:/dev/sdd # ceph orch daemon add osd ceph1:/dev/sde # ceph orch daemon add osd ceph2:/dev/sdb # ceph orch daemon add osd ceph2:/dev/sdc # ceph orch daemon add osd ceph2:/dev/sdd # ceph orch daemon add osd ceph2:/dev/sde # ceph orch daemon add osd ceph3:/dev/sdb # ceph orch daemon add osd ceph3:/dev/sdc # ceph orch daemon add osd ceph3:/dev/sdd # ceph orch daemon add osd ceph3:/dev/sde
-
Periksa OSD
# ceph osd stat # ceph osd tree
-
Setel kelas perangkat OSD
# ceph osd crush set-device-class ssd osd.12
-
Buat ruleset untuk mendefinisikan kelas penyimpanan
# ceph osd crush rule create-replicated ssd-rule default osd ssd # ceph osd crush rule create-replicated hdd-rule default osd hdd
-
Buat RBD Pool
# ceph osd pool create --pool_type=replicated --size=3 --rule=ssd-rule vms # ceph osd pool create --pool_type=replicated --size=3 --rule=ssd-rule volumes-ssd # ceph osd pool create --pool_type=replicated --size=3 --rule=hdd-rule volumes-hdd # ceph osd pool create --pool_type=replicated --size=3 --rule=hdd-rule images # ceph osd pool create --pool_type=replicated --size=3 --rule=hdd-rule backups # for pool_name in volumes-ssd volumes-hdd images backups vms do rbd pool init $pool_name done
-
Buat otentikasi Ceph Keyring
# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes-hdd, allow rwx pool=volumes-ssd, allow rwx pool=images' -o '/etc/ceph/ceph.client.cinder.keyring' # ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images' -o '/etc/ceph/ceph.client.glance.keyring' # ceph auth get-or-create client.nova mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=vms, allow rx pool=images' -o '/etc/ceph/ceph.client.nova.keyring' # ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups' -o '/etc/ceph/ceph.client.cinder-backup.keyring'
- Hapus TAB di ceph.conf
-
Kompres ceph.conf dan semua keyring yang dihasilkan ke dalam zip
# cd /etc/ceph # apt install zip -y # zip -r ceph.zip ceph.conf ceph.client.glance.keyring ceph.client.nova.keyring ceph.client.cinder.keyring ceph.client.cinder-backup.keyring
-
Salin ceph.zip ke Node controller OpenStack
# scp ceph.zip root@controller:/root/
-
Buat direktori konfigurasi Kolla Ansible untuk mengintegrasikan ceph ke beberapa layanan
# mkdir /etc/kolla/config # mkdir /etc/kolla/config/nova # mkdir /etc/kolla/config/glance # mkdir -p /etc/kolla/config/cinder/cinder-volume # mkdir /etc/kolla/config/cinder/cinder-backup
-
Salin ceph.conf dan keyring lainnya ke direktori konfigurasi kolla
# cp /etc/ceph/ceph.conf /etc/kolla/config/cinder/ # cp /etc/ceph/ceph.conf /etc/kolla/config/nova/ # cp /etc/ceph/ceph.conf /etc/kolla/config/glance/ # cp /etc/ceph/ceph.client.glance.keyring /etc/kolla/config/glance/ # cp /etc/ceph/ceph.client.nova.keyring /etc/kolla/config/nova/ # cp /etc/ceph/ceph.client.cinder.keyring /etc/kolla/config/nova/ # cp /etc/ceph/ceph.client.cinder.keyring /etc/kolla/config/cinder/cinder-volume/ # cp /etc/ceph/ceph.client.cinder.keyring /etc/kolla/config/cinder/cinder-backup/ # cp /etc/ceph/ceph.client.cinder-backup.keyring /etc/kolla/config/cinder/cinder-backup/
-
Atur konfigurasi global Kolla Ansible untuk menggunakan Ceph sebagai platform penyimpanan:
**grep -v "#" /etc/kolla/globals.yml | tr -s [:space:]** --- workaround_ansible_issue_8743: yes kolla_base_distro: "ubuntu" openstack_release: "master" kolla_internal_vip_address: "10.10.10.100" kolla_external_vip_address: "10.10.10.101" network_interface: "ens33" kolla_external_vip_interface: "ens33" neutron_external_interface: "ens38" enable_openstack_core: "yes" enable_cinder: "yes" enable_cinder_backup: "yes" enable_fluentd: "no" enable_neutron_provider_networks: "yes" external_ceph_cephx_enabled: "yes" ceph_glance_user: "glance" ceph_glance_keyring: "client.glance.keyring" ceph_glance_pool_name: "images" ceph_cinder_user: "cinder" ceph_cinder_keyring: "client.cinder.keyring" ceph_cinder_pool_name: "volumes-ssd" ceph_cinder_backup_user: "cinder-backup" ceph_cinder_backup_keyring: "client.cinder-backup.keyring" ceph_cinder_backup_pool_name: "backups" ceph_nova_keyring: "client.nova.keyring" ceph_nova_user: "nova" ceph_nova_pool_name: "vms" glance_backend_ceph: "yes" cinder_backend_ceph: "yes" nova_backend_ceph: "yes"
-
Re-deploy OpenStack dengan konfigurasi tambahan
# kolla-ansible -i all-in-one deploy
- Tunggu hingga OpenStack siap digunakan.
- Periksa semua layanan aktif di OpenStack.
-
Atur cinder untuk menambahkan storage pool baru dari Ceph
# nano /etc/kolla/cinder-volumes/cinder.conf [DEFAULT] … enabled_backends = rbd-1,rbd-2 … [rbd-1] volume_driver = cinder.volume.drivers.rbd.RBDDriver volume_backend_name = rbd-1 rbd_pool = volumes-ssd rbd_ceph_conf = /etc/ceph/ceph.conf rados_connect_timeout = 5 rbd_user = cinder rbd_cluster_name = ceph rbd_keyring_conf = /etc/ceph/ceph.client.cinder.keyring rbd_secret_uuid = ee5c01a9-806a-4c4d-afea-6c7b056b66d3 report_discard_supported = True [rbd-2] volume_driver = cinder.volume.drivers.rbd.RBDDriver volume_backend_name = rbd-2 rbd_pool = volumes-hdd rbd_ceph_conf = /etc/ceph/ceph.conf rados_connect_timeout = 5 rbd_user = cinder rbd_cluster_name = ceph rbd_keyring_conf = /etc/ceph/ceph.client.cinder.keyring rbd_secret_uuid = ee5c01a9-806a-4c4d-afea-6c7b056b66d3 report_discard_supported = True
-
Restart layanan cinder dengan merestart kontainer Docker
# docker restart cinder_volume
-
Tambahkan tipe volume baru untuk memisahkan tipe disk
# source /etc/kolla/admin-openrc.sh # openstack volume type create volumes-ssd # openstack volume type create volumes-hdd # openstack volume type set volumes-ssd --property volume_backend_name=rbd-1 # openstack volume type set volumes-hdd --property volume_backend_name=rbd-2
- Sekarang coba buat image, volume, dan VM. Pastikan Anda bisa membuat menggunakan kelas disk volumes-ssd atau volumes-hdd.
Selamat telah berhasil dan sampai jumpa.
Responses