Belajar CEPH Storage (Storage Cluster) di ubuntu
Apa itu ceph storage
- Object Based Storage
Merupakan salah satu tipe layanan ceph dalam penyediaan media penyimpanan berbasis object. Layanan Object Based Storage tersebut menyediakan akses langsung ke dalam storage cluster agar klien dapat mengirim object yang akan disimpan ke dalam ceph cluster secara langsung.
- Block Based Storage
Layanan ini memungkinkan pengguna untuk membuat sebuah atau beberapa block device dari layanan ceph cluster yang fleksibel dan dapat di akses oleh sistem operasi seolah-olah menjadi salah satu bagian di dalamnya layaknya tambahan media penyimpanan baru seperti harddisk atau media penyimpanan external.
- File System
Hampir sama seperti Block Based Storage, File System juga menyediakan media penyimpanan yang dapat di mounting ke dalam sistem operasi, bedanya Block Storage menggunakan driver RBD (RADOS Block Device), sedangkan File system memanfaatkan FUSE. Umumnya RBD digunakan untuk Virtualisasi seperti Openstack, sedangkan File System digunakan seperti kita menggunakan NFS (Network File System).
Ketiganya memiliki akses antarmuka yang berbeda, tetapi tetap menyimpan di dalam system storage yang sama. Ceph menyimpan data-data didalam pool, dan di setiap pool memiliki mekanisme replikasi, hak akses data seperti kita menyimpan di dalam file system biasanya.
Menggunakan algoritma CRUSH, ceph menyediakan penyimpanan yang Reliable, Scalable, Distributed, Fleksibel dan memiliki High Availibility yang mumpuni.
Ceph Cluster
- Monitor daemon
- Manager daemon
- OSD
- Mengelola penempatan data ke dalam cluster sesuai algoritma CRUSH.
- Mengelola status (kesehatan) setiap node dan services nya di dalam cluster.
- Mengelola peta node pada cluster, peta node ini digunakan untuk koordinasi antar node dalam satu cluster. Node yang berperan sebagai monitor ini minimal harus ada satu di setiap cluster dan disarankan ada 3 node yang berfungsi sebagai Monitor atau lebih.
- Mengelola penggunaan sumberdaya pada masing-masing node
- Mengelola dan memberi layanan antarmuka untuk menampilkan informasi melalui ceph Dashboard dan REST API.
- Node yang berperan sebagai Manager ini minimal harus ada satu di setiap cluster dan disarankan ada 2 node yang berperan sebagai Manager di setiap cluster.
- Mengelola penyimpanan data di dalam ceph cluster.
- Mengelola replikasi data di dalam cluster.
- Menyeimbangkan jumlah data di dalam cluster.
- Setiap node yang akan berperan sebagai OSD ini minimal harus berjumlah 3 buah di setiap clusternya dengan tujuan untuk meningkatkan redundans1 dan ketersediaan data yang disimpan di dalam cluster.
Preconfigration CEPH
- Konfigurasi network di tiap server menggunakan netplan
Server 1 (admin-00) :
root@admin-00:~# nano /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
dhcp4: true
version: 2
network:
ethernets:
ens192:
addresses: [10.10.10.1/27]
gateway4: 10.23.2.128
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
root@admin-00:~# netpan apply
Server 2 (node-00) :
user-node00@node-00:~# nano /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
addresses: [10.10.10.10/27]
gateway4: 10.10.10.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
user@node-01:~# netpan apply
Server 3 (node-01) :
root@node-00:~# nano /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'network: ethernets: ens160: addresses: [10.10.10.11/27] gateway4: 10.10.10.1 nameservers: addresses: [1.1.1.1, 8.8.8.8]
user@node-01:~# netpan apply
Server 4 (node-02) :
root@node-02:~# nano /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'network: ethernets: ens160: addresses: [10.10.10.10/27] gateway4: 10.10.10.1 nameservers: addresses: [1.1.1.1, 8.8.8.8]
user@node-02:~# netpan apply
- Konfigurasi hosts untuk alias dari ip ke host di admin-00
root@admin-00:~# nano /etc/hosts
127.0.0.1 localhost
10.10.10.10 node-00
10.10.10.11 node-01
10.10.10.12 node-02
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
root@admin-00:~# nano /etc/hosts
127.0.0.1 localhost
10.10.10.10 node-00
10.10.10.11 node-01
10.10.10.12 node-02
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
- Remote ssh login tanpa password
Buat sekali saja keygen-nya di komputer admin-00 lalu salin ke seluruh komputer anggota ceph cluster dengan menjalankan perintah:
ssh-keygen
ssh-copy-id user-node00@node-00
ssh-copy-id user-node01@node-01
ssh-copy-id user-node02@node-02
Buat sekali saja keygen-nya di komputer admin-00 lalu salin ke seluruh komputer anggota ceph cluster dengan menjalankan perintah:
ssh-keygen
ssh-copy-id user-node00@node-00
ssh-copy-id user-node01@node-01
ssh-copy-id user-node02@node-02
Selesai menyalin seluruh keygen dari admin-00 ke tiga komputer anggota ceph cluster, sekarang saatnya membuat file config di dalam folder .ssh (yang berisi keygen) untuk memetakan user yang akan ceph gunakan sebagai user untuk remote login ssh ke seluruh komputer cluster. Untuk membuat file config tersebut di komputer admin-00 saya bisa menjalankan perintah:
root@admin-00:~# nano /etc/hosts
127.0.0.1 localhost
10.10.10.10 node-00
10.10.10.11 node-01
10.10.10.12 node-02
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
- Konfigurasi sudo tanpa password (di tiap server, ini salah satu contohnya)
user-node00@node-00:~$ sudo visudo
# User privilege specification
root ALL=(ALL:ALL) ALL
user-node00 ALL=(ALL:ALL) NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
Instalasi ceph
root@admin-00:~# wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - OK
root@admin-00:~# echo deb https://download.ceph.com/debian-nautilus/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list deb https://download.ceph.com/debian-nautilus/ bionic main
root@admin-00:~/sandbox-ceph# mkdir sandbox-ceph && cd sandbox-ceph
setelah itu saya mulai menginstall aplikasi ceph, ada beberapa cara untuk menginstall aplikasi ceph cluster, berikut ini diantaranya:
- cephadmin (untuk versi terbaru seperti versi Octopus)
- ceph-deploy (untuk versi nautilus dan di bawahnya)
- rook (untuk install ceph di Kubernetes)
- ceph-ansible
- juju
- salt
- puppet
- dan install secara manual
root@admin-00:~/sandbox-ceph# ceph-deploy new node-00
perintah di atas digunakan untuk melakukan inisiasi node-00 sebagai monitor dan di dalam folder sandbox-ceph anda akan menemui 3 file yang barusan dibuat yang terdiri dari:
- ceph-deploy-ceph.log
- ceph.conf
- ceph.mon.keyring
Setelah itu saya jalankan perintah:
perintah diatas digunakan untuk menginstall seluruh aplikasi ceph di dalam node-00, node-01, node-02 serta mendaftarkan mereka sebagai anggota ceph cluster.
Lanjut ke step selanjutnya, disini saya menjalankan perintah:
root@admin-00:~/sandbox-ceph# ceph-deploy mon create-initial
perintah di atas digunakan untuk membuat keyring pada monitor server yang nanti akan didistribusikan ke seluruh anggota ceph cluster untuk keperluan monitoring oleh server monitor.
kemudian pada langkah berikutnya saya menjalankan perintah di bawah ini:
root@admin-00:~/sandbox-ceph# ceph-deploy admin node-00 node-01 node-02
Melalui perintah tersebut keyring yang dibuat akan didistribusikan ke seluruh anggota ceph cluster. Keyring tersebut berfungsi untuk mempermudah penggunaan perintah untuk mengoperasional cluster ceph.
Kemudian pada langkah selanjutnya adalah melakukan instalasi manager daemon di node-00 dengan menjalankan perintah:
root@admin-00:~/sandbox-ceph# ceph-deploy mgr create node-00
root@admin-00:~/sandbox-ceph# ceph-deploy osd create --data /dev/sdb1 node-00 && ceph-deploy osd create --data /dev/sdb1 node-01 && ceph-deploy osd create --data /dev/sdb1 node-02
root@admin-00:~/sandbox-ceph# ssh node-00 sudo ceph -s
cluster:
id: 02ab0c39-93bf-4378-912a-ea073497682e
health: HEALTH_WARN
mon is allowing insecure global_id reclaim
services:
mon: 1 daemons, quorum node-00 (age 30m)
mgr: node-00(active, since 27m)
osd: 3 osds: 3 up (since 3m), 3 in (since 3m)
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 27 GiB / 30 GiB avail
pgs:
Konfigurasi Ceph File System pada Ceph Cluster
root@admin-00:~/sandbox-ceph# ceph-deploy mds create node-00
root@admin-00:~/sandbox-ceph# ssh node-00 sudo ceph osd pool create cephfs_data 128 pool 'cephfs_data' created
root@admin-00:~/sandbox-ceph# ssh node-00 sudo ceph osd pool create cephfs_metadata 8
pool 'cephfs_metadata' created
root@admin-00:~/sandbox-ceph# ssh node-00 sudo ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
Untuk melihat hasilnya saya menjalankan perintah:
root@admin-00:~/sandbox-ceph# ssh node-00 sudo ceph -s cluster: id: 02ab0c39-93bf-4378-912a-ea073497682e health: HEALTH_WARN mon is allowing insecure global_id reclaim services: mon: 1 daemons, quorum node-00 (age 46m) mgr: node-00(active, since 42m) mds: cephfs:1 {0=node-00=up:active} osd: 3 osds: 3 up (since 19m), 3 in (since 19m) data: pools: 2 pools, 136 pgs objects: 22 objects, 2.2 KiB usage: 3.0 GiB used, 27 GiB / 30 GiB avail pgs: 136 active+clean
selain itu, anda bisa lihat di bagian pool, terdapat 2 pool yang sudah aktif dari beberapa perintah yang kita jalankan sebelumnya. Total storage yang tersedia adalah 900GB gabungan dari tiga node (200GB, 500GB dan 200GB).
Cara mengakses layanan ceph file system
- ceph.client.admin.keyring
root@admin-00:~/sandbox-ceph# cat ceph.client.admin.keyring
[client.admin]
key = AQAsATxjKjldJRAA/BNXDUiXUzCaXW/kGdj2BA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
Setelah itu pada komputer klien saya perlu menginstall aplikasi pendukungnya, yaitu ceph-common dan ceph-fuse dengan menjalankan perintah:
Tunggu sampai proses instalasi berjalan hingga selesai. Setelah itu saya buat folder baru yang akan saya gunakan untuk menampung layanan ceph file system di komputer klien dengan menjalankan perintah:
root@admin-00:~/sandbox-ceph# mkdir /home/user/cfs
root@admin-00:~/sandbox-ceph# mount -t ceph node-00:6789:/ /home/user/cfs/ -o name=admin,secretfile=/root/sandbox-ceph/admin.secret
jika ceph file system berhasil di akses, perintah di atas tidak akan menghasilkan pesan error apapun, lalu ketika saya menjalankan perintah pengecekan kapasitas komputer dengan perintah:
root@admin-00:~/sandbox-ceph# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 395M 892K 394M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 19G 5.9G 12G 34% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda2 974M 78M 829M 9% /boot
tmpfs 395M 0 395M 0% /run/user/1000
tmpfs 395M 0 395M 0% /run/user/0
10.10.10.10:6789:/ 8.5G 0 8.5G 0% /home/user/cfs
root@admin-00:~/sandbox-ceph# sudo chmod 777 /home/user/cfs
agar folder cfs hasil mounting dari server ceph file system tersebut dapat ditulisi oleh user yang anda pakai atau user lainnya.
Mengaktifkan Ceph Dashboard di Ceph Cluster Nautilus
Pada seri ceph cluster sebelumnya saya mengaktifkan Ceph manager Daemon di komputer node-00, maka ceph dashboard ini hanya bisa diinstall dan diaktifkan di komputer node-00.
user-node00@node-00:~$ sudo apt-get install ceph-mgr-dashboard
Selesai instalasi ceph manager dashboard, saya perlu mengaktifkan modul ceph dashboard tersebut pada ceph cluster dengan menjalankan perintah:
user-node00@node-00:~$ sudo apt-get install ceph-mgr-dashboard
setelah itu saya buat user dengan nama admin dan password 123456789 untuk masuk ke dalam ceph dashboard. Cara membuat user dan password tersebut, saya cukup menjalankan perintah:
Tapi sebelum itu buat dulu file password yang didalamnya adalah password
user-node00@node-00:~$ sudo ceph dashboard ac-user-create admin -i password administrator
{"username": "admin", "lastUpdate": 1664882321, "name": null, "roles": ["administrator"], "password": "$2b$12$54Y6zCbi.qafAB73lQnI4.kSDOrOc6/uQywjBgsHtBG0tYL4w/tZO", "email": null}
user-node00@node-00:~$ sudo ceph dashboard create-self-signed-cert
Self-signed certificate created
oke, dengan begitu ceph dashboard sudah siap digunakan, untuk melihat ada di port berapa layanan ceph dashboard aktif, saya menjalankan perintah:
user-node00@node-00:~$ sudo ceph mgr services{
"dashboard": "https://10.10.10.10:8443/"
}
kemudian ketika saya login dengan user admin tersebut, berikut ini hasilnya:
Komentar
Posting Komentar