Tutorial Setup Ceph Storage Cluster, Bagian 3 : Block Device

February 25, 2019

Sebelumnya saya sudah membahas Tutorial Setup Ceph Bagian 1 dan Bagian 2. Kali ini saya akan membahas Setup Ceph Storage Cluster bagian 3 : Block Device. Tutorial ini sendiri akan membahas bagaimana cara membuat pool, rados block device, mengoperasikan rbd di cluster, serta implementasi dan integrasi rbd dengan Linux Client dan Proxmox.

Ceph Block Device Overview :
Block Device atau Rados Block Device (RBD) adalah salah satu jenis penyimpanan yang di tawarkan oleh Ceph. Block Device merupakan Image yang bisa digunakan oleh Hypervisor untuk Disk VM nya, atau bisa langsung di Mounting seperti Harddisk biasa di Client Linux. RBD mendukung fitur seperti Snapshot, Thin Provisioned, Resizeable, dan Cloning.

Membuat Block Image
Untuk membuat RBD, kita membutuhkan Ceph Cluster yang kondisinya HEALTH_OK. Cek status dengan menggunakan perintah ceph -s atau ceph health detail di Monitor, OSD, atau Client.

1. Membuat Pool
Membuat Block Device diperlukan sebuah Pool untuk menyimpan objek image dari block device. RBD memungkinkan nya. Membuat pool sangatlah mudah, standarnya kita hanya perlu memperimbangkan nama pool, jumlah placement group (pg_num), dan jumlah placement group per placement (pgp_num).

Perintah membuat Pool :

ceph osd pool create {nama pool} {pg_num} {pgp_num}

Sebagai contoh:
ceph osd pool create block-device-pool 120 120

Note : Untuk saat ini, jumlah placement group per placement (pgp_num) harus sama dan tidak boleh kurang dari jumlah placement group (pg_num). Jadi pgp_num =< pg_num.

Untuk melihat pool yang ada di Cluster bisa gunakan perintah sebagai berikut

ceph osd lspool
ceph osd pool ls
ceph osd utilization

2. Membuat Block Image
Membuat Block image sangatlah mudah, kita hanya perlu memperimbangkan ukuran dan fitur dari Block image yang akan dibuat. Perintah di bawah digunakan untuk membuat Block image dan ukurannya.

rbd create --size {ukuran-block-image} {nama-block-image}

Sebagai contoh:
rbd create --size 32G testing-block-device

Operasi Dasar
Resize Ukuran Block Image
Untuk mengubah ukuran image block image, biasanya perlu adanya akses ke Cluster dengan menggunakan keyring.

1. Melihat Daftar Block Image
Melihat daftar block image yang ada dalam cluster penting, apalagi kalau kita lupa nama block image yang sudah kita buat sebelumnya, tentu ini akan sangat membantu.

rbd list

Sebagai contoh :

2. Melihat Info Block Image
Melihat spesifikasi dari block image sangatlah penting. Disini kita bisa melihat Nama, Ukuran, Format, Fitur, dan Flag sebuah block image.

rbd info {nama-block-image}

Sebagai contoh :
rbd info vm-100-disk-1

3. Menamai Ulang Nama Block Image
Untuk menamai ulang nama dari block image yang ada pada cluster, gunakan perintah dibawah ini.

rbd rename {nama-block-image-lama} {nama-block-image-baru}

Sebagai contoh :
rbd rename vm-100-disk-1 disk-1-punya-vm-100

4. Snapshot Block Image
Snapshot sebuah block image penting kalau kita ingin membuat Backup/Restore Point yang akan tersimpan di dalam image nya. Gunakan perintah dibawah untuk membuat Snapshot.

rbd snap create/add {nama-block-image-}@{nama-snapshot} --pool {nama-pool-nya}

Sebagai contoh :
rbd snap create testing-snapshot@snap-pertamaku --pool rbd

5. Restore Snapshot Block Image

6. Menghapus Snapshot Block Image
Untuk menghapus snapshot dari block image, kita bisa menghapus nya satu per satu atau semuanya. Gunakan sesuai kebutuhan. Perintah dibawah untuk menghapus satu snapshot yang ada di block image.

rbd snap remove/rm {nama-block-image}@{nama-snapshot} --pool {nama-pool-nya}

Sebagai contoh :
rbd snap rm testing-snapshot@snap-pertamaku --pool rbd

Sedangkan untuk menghapus seluruh snapshot yang tersimpan di dalam image sekaligus, gunakan perintah ini.

rbd snap purge {nama-block-image} --pool {nama-pool-nya}

Sebagai contoh :
rbd snap purge testing-snapshot --pool rbd

7. Menghapus Block Image
Menghapus block image dari Pool sangatlah mudah, jalankan perintah dibawah untuk menghapus satu block image dari sebuah pool.

rbd remove {nama-block-image} --pool {nama-pool-nya}

Sebagai contoh :
rbd remove vm-101-disk-1 --pool rbd


Note : Mungkin kamu tidak perlu menambahkan opsi --pool kalau block image yang akan dihapus ada di pool rbd. Nama pool rbd dijadikan sebagai nama default apabila opsi pool tidak digunakan.

Lab



1. Mount Block Device di Linux Client
Ceph Block Device bisa dimount seperti Harddisk biasa. Namun saat ini Ceph Block Device hanya mendukung klien yang menggunakan kernel Linux atau Linux Client saja.

Disini saya akan mempraktekan cara mount Block image di Ubuntu Server 16.04 sehingga bisa menjadi Block Device menggunakan Kernel Linux. Klien yang ingin mount harus terlebih dahulu menginstall ceph dan librbd agar bisa mount block image tersebut. Install ceph dan librbd bisa menggunakan APT.

Setelah syarat sebelumnya sudah terpenuhi selanjutnya klien harus punya Keyring dan file konfigurasi Cluster (ceph.conf). Dapatkan kedua ini dari Monitor dengan menjalankan perintah ini di Node yang menjadi Admin sebuah Cluster.

ceph-deploy config push {klien}

Selanjutnya ambil keyring dengan username admin di Node Monitor. Perintahnya:

ssh {node monitor} sudo scp /etc/ceph/ceph.client.admin.keyring {klien}:/etc/ceph/

Oke, otentikasi untuk menghubungi Cluster sudah selesai, selanjutnya adalah mounting Ceph Block image ke klien.

sudo modprobe ceph
rbd map {nama block image} --pool {nama pool}

Untuk melihat apakah Block Device sudah dimapping di klien, lihat apakah ada file block yang sudah dimapping pada direktori /dev/

Jika sudah, selanjutnya mount ceph block device yand ada di /dev/ menggunakan perintah:

sudo mkdir /mnt/ceph-block-device
sudo mkfs.ext4 /dev/{block device}
sudo mount -a /dev/{block device} /mnt/ceph-block-device

Sebagai contoh:
sudo mkdir /mnt/ceph-block-device
sudo mkfs.ext4 /dev/rbd0
sudo mount -a /dev/rbd0p1 /mnt/ceph-block-device

2. Menggunakan Ceph Block Device di Proxmox
Jika anda sering jalan-jalan atau ngoprek Proxmox, pasti menemukan menu "Ceph" di Proxmox Web GUI, benar bukan? kalau di klik pasti ada error 500, itu karena kita belum mengkonfigurasi Cluster Ceph nya.

Yang akan saya praktekan kali ini beda dengan yang ada di menu "Ceph" pada Proxmox Web GUI. Itu karena konfigurasinya beda dan paket nya juga beda. Di Proxmox yang kita lihat pada Proxmox Web GUI itu paket nya "pveceph", sedangkan yang saya akan praktekan adalah "ceph".

Syarat agar Proxmox dapat terhubung ke Cluster External Ceph sebagai berikut.
 Node Proxmox harus mempunyai Akses Network ke Cluster melalui Public Network. Dan Node Proxmox harus mempunyai keyring client.{nama klien}.keyring agar dapat terotentikasi untuk menghubungi Cluster.

Untuk mendapat kan keyring, klien dapat meminta keyring nya ke Monitor atau Monitor sendiri yang membuat keyring untuk klien. Disini saya akan mempraktekan cara membuat keyring dari Node monitor.

ceph auth get-or-create client.proxmox mon 'allow *' mds 'allow *' osd 'allow *' -o /etc/ceph/ceph.client.proxmox.keyring

Note : Perintah diatas akan membuat (create) atau melihat (get) keyring authentication untuk user "proxmox" sebagai client, pengunaan perintah ini sangat fleksibel apabila ketika kita ingin membuat keyring yang sebenarnya sudah ada dan di list keyring nya kalau sudah ada. Untuk melihat keyring yang sudah dibuat bisa menggunakan perintah ceph auth list.

Setelah keyring dari monitor sudah didapat, selanjutnya copy file ceph.client.proxmox.keyring ke Node Proxmox. Memindahkan nya ke Node Proxmox bisa menggunakan FTP, SCP, atau Rsync. Pindahkan file keyring tersebut ke  /etc/pve/priv/ceph. Jika folder ceph belum dibuat, maka buatlah. Kemudian ubah permissions dari file keyring menjadi 644.

Setelah membuat Keyring untuk mengotentikasi selanjutnya kita bisa langsung ke intinya. Masuk ke Web GUI Proxmox. Lalu masuk ke Datacenter > Storage > Add > RBD (external).


Saat mengklik RBD (external) di Web GUI Proxmox, akan ada pop up yang tampilan nya kurang lebih akan seperti ini.


Sebagai contoh disini saya mempunyai sebuah Cluster dengan nama "Ceph", Monitor Quorum nya :

ceph-admin=192.168.40.147:6789/0
node1=192.168.40.144:6789/0
node2=192.168.40.111:6789/0
node3=192.168.40.112:6789/0

Dan mempunyai Pool yang namanya block-image-pool, saya juga mempunyai file keyring dengan username proxmox sebagai otentikasinya.


Sesuai dari data yang saya punya, saya ubah konfigurasi Add RBD (external) nya. Khusus untuk ID, ini akan dijadikan sebagai nama dari storage yang akan terlihat dari Web GUI Proxmox. Username diisi sesuai dengan username pada file keyring. File keyring nya harus berada pada direktori /etc/pve/priv/ceph/


Note : ID ini haru sama dengan prefix nama file keyring. Contohnya kita ingin membuat ID Storage RBD nya  rbd-storage, maka nama file keyring nya haruslah rbd-storage.keyring.

Untuk mengecek apakah kita sudah terhubung ke cluster atau belum, cek dengan masuk ke Host Proxmox, Klik 2x, Lalu masuk ke Bagian nama storage (disini id nya rbd-storage).


Sip, kalau sudah terlihat summary nya dari Web GUI Proxmox, maka Penyimpanan RBD external untuk Proxmox VM sudah siap digunakan. Selamat mencoba.

3. Mengintegrasikan RBD Dengan OpenStack


 (Coming Soon)

Sip, Cukup sekian dari yang dapat saya sampaikan. Semoga bermanfaat.

Related Posts

0 komentar

Berkomentarlah sesuai dengan topik yang sedang dibahas. Komentar yang berisi Link aktif akan di hapus oleh Admin. Terima Kasih.

    # Back to Top