Instalasi OpenStack dengan Ceph

Gilang Virga Perdana
6 min readOct 8, 2021

Halo, kita kembali lagi ke artikel dokumentasi instalasi OpenStack yaitu kali ini kita akan mengintegrasikan OpenStack dengan Ceph. Disini kita menggunakan OpenStack Ussuri dengan Ceph Octopus dan berjalan diatas Ubuntu 18.04, Namun di Tutorial kali ini saya mempraktikannya pada Virtual Box. Dan perlu diperhatikan bahwa pada dokumentasi kali ini, saya akan langsung to-the-point saja, karena jika secara gamblang (dengan screenshoot) akan memakan banyak waktu dan membuat artikel sangat panjang. Jadi mohon dimaklumi jika artikel kali ini hanya based on command. Tanpa berlama — lama mari kita masuk ke proses instalasi.

Environment :

1. Virtual Box

2. 4 Interface

3. 32 GB RAM

4. 3x Ubuntu 18.04

Topologi Cluster :

A. Persiapan (Sesuaikan dengan environment masing-masing):

Lakukan pada setiap node.

1. Sesuaikan hostname pada masing masing node :

$ hostnamectl set-hostname ctrl1 [PADA NODE CONTROLLER]$ hostnamectl set-hostname comp1 [PADA NODE COMPUTE]$ hostnamectl set-hostname comp2 [PADA NODE COMPUTE]

2. Definisikan setiap alamat IP Node pada /etc/hosts :

$ nano /etc/hosts— -172.16.3.4 ctrl1.ceph192.168.0.41 ctrl1172.16.3.5 comp1.ceph192.168.0.42 comp1172.16.3.6 comp2.ceph192.168.0.43 comp2— -

3. Atur Network (Sesuaikan, tambahkan enp0s10 pada Node Compute):

$ nano /etc/netplan/00-installer-config.yaml
$ sudo netplan apply

4. Generate pubkey:

$ ssh-keygen -t rsa

Lakukan pada Node Controller :

5 Distribusi pubkey ke setiap node :

$ for i in {1..3}; dossh-copy-id -i ~/.ssh/id_rsa.pub root@comp0$i;done$ for i in {1..1}; dossh-copy-id -i ~/.ssh/id_rsa.pub root@ctrl0$i;done

B. Instalasi Ceph

Disini kita akan menggunakan Ceph versi Octopus menggunakan Ceph Ansible.

Eksekusi semua command dibawah hanya pada node Controller (Kolla Deployer).

Install Dependencies :

$ apt-get install python3-pip -y

Persiapkan environment :

$ git clone https://github.com/ceph/ceph-ansible.git$ cd ceph-ansible$ git checkout stable-5.0$ pip3 install -r requirements.txt

Persiapkan .yml yang dibutuhkan :

$ cp site.yml.sample site.yml$ cd group_vars/$ cp all.yml.sample all.yml$ cp mons.yml.sample mons.yml$ cp osds.yml.sample osds.yml$ cp mgrs.yml.sample mgrs.yml

Konfigurasi all.yml (Sesuaikan dengan environment kalian) :

$ nano all.yml

Konfigurasi osd (Sesuaikan nama devices dengan melihat pada $ fdisk -l) :

$ nano osds.yml— -devices:- /dev/sdb- /dev/sdcbluestore_wal_devices:- /dev/sdd- /dev/sdeosd_auto_discovery: false— -

Konfigurasi ansbile.cfg :

$ cd ../$ nano ansible.cfg— -[defaults]inventory=hostsbecome = Truepipelining=Trueinterpreter_python=/usr/bin/python3— -

Konfigurasi hosts:

$ nano hosts— -[mons]ctrl1.ceph[mgrs]ctrl1.ceph[osds]comp1.cephcomp2.ceph[grafana-server]ctrl1.ceph— -

Cek koneksi:

$ ansible -m ping all

Deploy Ceph:

$ ansible-playbook site.yml

Verifikasi OSD :

$ ceph osd tree

Akses Dashboard :

https://172.16.3.4:8443 (Sesuaikan, biasanya ceph dashboard berada pada salah satu Controller yang terdefine sebagai mons dan berada pada public_network yang tadi telah kita define).

Akses Grafana Ceph :

https://172.16.3.4:4000 (Default pada :3000, namun kali ini saya custom untuk keperluan Grafana pada OpenStack nantinya. Adapun lokasi file konfigurasi Port Grafana ceph ada pada node Controller di /etc/grafana/grafana.ini . Silahkan untuk merubah port pada “http_port” agar tidak bentrok dengan Grafana OpenStack nantinya”).

Perhatian :

Untuk kasus kali ini, karena kondisi interface yang kita gunakan sebagai Ceph Operation menggunakan adapter Nat Network, ini artinya kita tidak bisa langsung masuk akses kedalam dashboard (dikarenakan Nat Network). Kalian bisa coba akses dengan menggunakan trik tunneling socks port. Tunelling socks port bisa kalian lakukan dengan :

$ ssh root@ip_node -D 500

Lalu setelah login kedalam vm jangan tutup cmd tersebut lalu setting socks port pada web browser kesayangan kalian sesuai dengan port yang kalian definisikan, di kasus ini adalah 500.

Contoh setting socks port pada Firefox :

Setelah tersetting, silahkan buka dashboard dengna public_network (yang berada didalam Nat Network) di browser kalian.

Jika dashboard sudah bisa diakses, saya asumsikan kita sudah berhasil deploy ceph dengan baik. Sekarang kita akan lanjut untuk persiapan Deploy OpenStack.

C. Persiapan Instalasi OpenStack :

Lakukan hanya pada Node Controller (Kolla Deployer).

Buatlah pool untuk OpenStack :

$ ceph osd pool create volumes$ ceph osd pool create images$ ceph osd pool create backups$ ceph osd pool create vms

Buatlah rbd default OpenStack :

$ rbd pool init volumes$ rbd pool init images$ rbd pool init backups$ rbd pool init vms

Buatlah keyring agar OpenStack dapat berkomunikasi dengan Ceph:

$ 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.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=images' -o /etc/ceph/ceph.client.cinder.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

D. Instalasi OpenStack :

Baik, karena kita sudah membuat storage dengan Ceph. Kini kita akan deploy OpenStack (disini versi Ussuri) dengan Kolla-Ansible.

Lakukan hanya pada Node Controller (Kolla Deployer).

Instalasi beberapa denpendencies :

$ apt-get install python3-dev libffi-dev gcc libssl-dev python3-selinux python3-setuptools -y$ pip3 install kolla-ansible==10.2.0

Siapkan beberapa env :

$ mkdir ~/openstack$ cd ~/openstack$ mkdir -p /etc/kolla$ chown -R $USER:$USER /etc/kolla$ cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla$ cp /usr/local/share/kolla-ansible/ansible/inventory/* .

Konfigurasi ansible.cfg :

$ mkdir /etc/ansible$ nano /etc/ansible/ansible.cfg— -[defaults]host_key_checking=Falsepipelining=Trueforks=100interpreter_python=/usr/bin/python3— -

Konfigurasi alamat pada setiap node yang akan diberi role :

$ nano multinode— -[control]ctrl1[network]ctrl1[compute]comp1comp2[monitoring]ctrl1[storage]ctrl1[deployment]localhost ansible_connection=local— -

Tes Konektifitas antar VM :

$ ansible -i multinode all -m ping

Generate kolla :

$ kolla-genpwd

Konfigurasi globals.yml

$ nano /etc/kolla/globals.yml

Persiapan beberapa kebutuhan :

$ kolla-ansible -i multinode certificates$ 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

Persiapan beberapa konfigurasi dari Ceph :

$ 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/

Deploy OpenStack :

$ kolla-ansible -i ./multinode bootstrap-servers$ kolla-ansible -i ./multinode prechecks$ kolla-ansible -i ./multinode deploy$ kolla-ansible -i ./multinode post-deploy

Tambahkan cert ke admin-openrc.sh :

$ echo “export OS_CACERT=/etc/ssl/certs/ca-certificates.crt” | tee -a /etc/kolla/admin-openrc.sh$ cat /etc/kolla/certificates/ca/root.crt | sudo tee -a /etc/ssl/certs/ca-certificates.crt

Cek OpenStack :

$ apt install python3-openstackclient$ source /etc/kolla/admin-openrc.sh$ openstack service list$ openstack compute service list$ openstack volume service list$ openstack network agent list$ openstack endpoint list

AdminPassword Dashboard OpenStack :

$ cat /etc/kolla/admin-openrc.sh

AdminPassword Dashboard Grafana :

$ cat /etc/kolla/grafana/grafana.ini

Akses Dashboard OpenStack:

https://ip_ens4_controllernode (Dashboard bisa diakses pada kolla_external_vip_address).

Akses Dashboard Grafana:

https://ip_ens4_controllernode:3000

Membuat Visualisasi Data pada Grafana OpenStack :

a. Silahkan login Grafana dengan credentials yang sudah diberikkan (silahkan scroll untuk letak file credentials).

b. Silahkan cari json template pada situs GrafanaLabs atau bisa menggunakan template yang saya gunakan https://grafana.com/grafana/dashboards/9701 .

https://grafana.com/grafana/dashboards/11074 .

c. Sesuaikan endpoint prometheus ke endpoint metrics yang ada.

d. Import json dashboard

e. Happy Monitoring.

Terima kasih, semoga bermanfaat.

--

--