Persiapan

Saya menggunakan tiga node VM untuk proyek lab rumah ini dengan 8 Core, 8GB Memori, dan 20GB untuk root disk. Pada interface ClusterNet menggunakan Jumbo Frame dengan sistem operasi Rocky Linux 8.10.

Hostname Node vCPU Memori RootDisk PublicNet ClusterNet
btnlab01ceph01 8 Core 8GB 20GB 10.78.78.221 10.79.79.221
btnlab01ceph02 8 Core 8GB 20GB 10.78.78.222 10.79.79.222
btnlab01ceph03 8 Core 8GB 20GB 10.78.78.223 10.79.79.223

Kemudian saya menambahkan 4 hard disk masing-masing berkapasitas 50GB yang digunakan untuk OSD.

Semua operasi menggunakan user root, harap berhati-hati saat menjalankan perintah!

Opsional: Setel SElinux ke mode permissive untuk lingkungan pengembangan

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

Instalasi paket dan dependensi

dnf install -y epel-release
dnf install -y bash-completion tmux nano htop iftop iotop podman lvm2

Unduh file binary cephadm dan tambahkan repository ceph reef

CEPH_RELEASE=18.2.0
curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm
mv cephadm /usr/bin; chmod +x /usr/bin/cephadm
cephadm add-repo --release $CEPH_RELEASE

Bootstrapping Cluster Dengan cephadm

Jalankan di node pertama Mapping hostname statis di /etc/hosts

cat <<EOF | tee -a /etc/hosts
10.78.78.221 btnlab01ceph01 btnlab01ceph01.homelab.is-a.dev
10.78.78.222 btnlab01ceph02 btnlab01ceph02.homelab.is-a.dev
10.78.78.223 btnlab01ceph03 btnlab01ceph03.homelab.is-a.dev
EOF
cephadm install
cephadm install ceph-common
cephadm bootstrap --mon-ip=10.78.78.221 \
--skip-mon-network --allow-fqdn-hostname | tee cephadm-bootstrap.log

Pesan sukses bootstrap selesai
ceph_bootsraping

Salin ssh public key ke semua node

for node in btnlab01con0{2..3}; do
  ssh-copy-id -f -i /etc/ceph/ceph.pub root@$node
  sleep 2
done

Setelah bootstrap selesai, tambahkan public network ceph dengan perintah berikut.

ceph config set host public_network 10.79.79.0/24

Tambahkan node lain lalu sesuaikan placement pgs

ceph orch host add btnlab01ceph02 10.78.78.222
ceph orch host add btnlab01ceph03 10.78.78.223
ceph orch apply mgr --placement="3 btnlab01ceph01 btnlab01ceph02 btnlab01ceph03"
ceph orch apply mon --placement="btnlab01ceph01,btnlab01ceph02,btnlab01ceph03"

Label semua node

for node in  btnlab01ceph0{1..3}; do
  ceph orch host label add $node mon
  ceph orch host label add $node mgr
  ceph orch host label add $node osd
done

Tambahkan osd dari semua disk yang tersedia

ceph orch apply osd --all-available-devices --method raw
ceph orch host ls
ceph orch device ls

Sekarang kita bisa memonitor cluster ceph dengan perintah ceph -s
ceph_status

Membuat pool dan ceph keyring untuk beberapa layanan

  • Cinder
  • Cinder Backup
for pool_name in cinder cinder-backup; do
  ceph osd pool create $pool_name
  rbd pool init $pool_name
done

creating_pool

ceph auth get-or-create client.cinder \
      mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder, allow rwx pool=nova' \
      -o /etc/ceph/ceph.client.cinder.keyring
ceph auth get-or-create client.cinder-backup \
      mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-backup' \
      -o /etc/ceph/ceph.client.cinder-backup.keyring

creating_keyring

Keyring ini akan digunakan untuk cluster openstack yang akan kita buat pada postingan Openstack 2024.2 dengan Kolla Ansible.

ceph_dashboard Sekarang kita bisa mengakses dashboard ceph melalui browser https://btnlab01ceph01.homelab.is-a.dev:8443 dengan kredensial yang didapatkan dari proses bootstrap.

Referensi