Serinin ikinci yazısından herkese selamlar 🐸
Bugünkü yazımda öncelikle bir ceph cluster oluşturmak istediğimizde dikkat etmemiz gereken noktaları ele alacağım. Ardından da ceph cluster kurulumu ve konfigürasyonlarına başlayacağız.
Depolama ortamını kullanacağınız amaca bağlı olarak performans odaklı veya maliyet odaklı planlayabiliriz. Buna bağlı olarak da elbette Ceph tasarımı yapılır. Yapılacak seçim kullanılacak mekanizmaları, donanımları (disk tipi, sunucu tipi, işlemci, bellek, v.b.) belirlemede önemli rol oynayacaktır. Performans istiyorsak bir önceki yazımda belirttiğim gibi replicated pool tercih edip clusterın tamamında SSD diskler kullanılabilir. Eğer maliyeti daha düşük bir çözüm istiyorsanız kullanım amacına göre replikated veya EC seçilebileceği gibi SSD disk olmadan mekanik diskler kullanılabilir. Ağ katmanı buna göre daha düşük kapasiteli seçilebilir. Maliyeti düşürmek için replika sayısı düşük tutulabilir. Eğer aynı maliyet ile daha yüksek kapasite ihtiyacınız varsa yüksek sayıda disk takılabilen sunuculardan seçip disk sayısına bağlı ağ katmanının tasarlayıp aynı sunucu sayısı ile daha yüksek kapasiteli bir depolama kümesi elde edebilirsiniz.
Ceph Cluster Kurulumu & Konfigürasyonlar
Ceph kurulumu için tavsiye edilen minimum hardware gereksinimleri aşağıdaki gibi olmalıdır:
-8 GB RAM
-4 CPU
-50 GB hard disk
-1Gbit network interface
Red Hat Ceph 5 kurulumu için en az RHEL 8 versiyonun olması gerek diye biliyorum. İşletim sistemi üzerinde firewall enable, selinux enforcing modda olmalı, NTP ayarları yapılmalıdır. Ayrıca minimal OS kurulumu yeterlidir. Ben kurulum adımlarına eğitimin bana sağladığı lab ortamından devam edeceğim. Benim cluster yapımda 1 admin+mon+mgr node , 3 OSD node olmak üzere toplam 4 node’um bulunuyor. Her OSD node üzerinde /dev/sdb, dev/sdc, dev/sdd şeklinde 3’er ayrı disk mevcut.
- İlk olarak admin sunucu üzerinden diğer sunuculara password kullanmadan erişim için ssh-key metodu kullanılır.
$ ssh-keygen
$ ssh-copy-id nodea.lab.kubikolog.com %admin node
$ ssh-copy-id nodeb.lab.kubikolog.com %bootstrap node
$ ssh-copy-id nodec.lab.kubikolog.com
$ ssh-copy-id noded.lab.kubikolog.com
- Kurulum cephadm-ansible paketini indirmemiz gerekiyor. Bu paketi bootsrap olarak belirlediğimiz sunucuda indireceğiz. Bu arada söylemeyi unuttuğumu farkettim. Ceph kurulum için bootstrape ihtiyaç duyuyor. Ardından bu sunucu da clusterın bir parçası olacak. Bootstrap kurulumu başttığı sunucuda monitor ve manager rolünü kuruyor olacak.
$ yum install cephadm-ansible %bootstrap node'da çalıştırılır. (https://github.com/ceph/cephadm-ansible)
- Clustera eklenecek nodeları inventorye ekleyelim.
$ vi /usr/share/cephadm-ansible/hosts
nodea.lab.kubikolog.com
nodeb.lab.kubikolog.com
nodec.lab.kubikolog.com
noded.lab.kubikolog.com
- Cluster hostlarını hazırlamak için cephadm-preflight.yml’ını çalıştıralım. Burada ceph_origin değeri kuracağınız repoya göre değiklik gösteriyor. Detayları github linkinde belirtilmiş. Ben aşağıdaki şekilde ilerleyeceğim.
$ ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=rhcs"
- install-cluster-config.yaml oluşturarak servisleri yapımıza nodelara atayacağız. Yaml içeriği aşağıdakine benzer şekilde olmalıdır.
$ cat install-cluster-config.yaml
---
service_type: host
addr: 172.10.10.10
hostname: nodea.lab.kubikolog.com
---
service_type: host
addr: 172.10.10.11
hostname: nodeb.lab.kubikolog.com
---
service_type: host
addr: 172.10.10.12
hostname: nodec.lab.kubikolog.com
---
service_type: host
addr: 172.10.10.13
hostname: noded.lab.kubikolog.com
---
service_type: mon
placement:
hosts:
- nodea.lab.kubikolog.com
- nodeb.lab.kubikolog.com
- nodec.lab.kubikolog.com
- noded.lab.kubikolog.com
---
service_type: rgw
service_id: realm.zone
placement:
hosts:
- nodeb.lab.kubikolog.com
- nodec.lab.kubikolog.com
---
service_type: mgr
placement:
hosts:
- nodea.lab.kubikolog.com
- nodeb.lab.kubikolog.com
- nodec.lab.kubikolog.com
- noded.lab.kubikolog.com
---
service_type: osd
service_id: default_drive_group
placement:
hosts:
- nodeb.lab.kubikolog.com
- nodec.lab.kubikolog.com
- noded.lab.kubikolog.com
data_devices:
paths:
- /dev/vdb
- /dev/vdc
- /dev/vdd
- Hazırladığımız config dosyasını aşağıdaki şekilde bootstrap node da çalıştıracağız. Bu sayede nodelar yukarıda belirttiğimiz konfigürayonları almış olacak.
$ cephadm bootstrap --mon-ip=172.10.10.12 --apply-spec initial-cluster-config.yaml --initial-dashboard-user <user> --initial-dashboard-password <password> --dashboard-password-noupdate --allow-fqdn-hostname --registry-url registry.redhat.io --registry-username <redhat username> --registry-password <password> --cluster-network 1.1.1.0/24
- Üstteki adım başarılı şekilde tamamlandıysa artık kontrollerimizi yapmaya başlayabiliriz. Öncelikle aşağıdaki komut ile ceph shell komutlarının çalıştırılabilir olmasını sağlayalım.
$ cephadm shell
- Clusterın sağlık durumunu ve hostların gelip gelmediğini kontrol edelim.
$ ceph -s
$ ceph orch host ls
- Ceph komutlarının mevcut tüm nodelarda çalıştırılabilmesi için ceph.client.admin.keyring dosyasını tüm nodelara aşağıdaki şekilde gönderelim.
$ ansible all -i hosts -m copy -a 'src=/etc/ceph/ceph.client.admin.keyring dest=/etc/ceph/'
- Ayrıca ceph.conf dosyasını da tüm nodelara göndermeliyiz.
$ ansible all -i hosts -m copy -a 'src=/etc/ceph/ceph.conf dest=/etc/ceph/
- Admin node’una label atamak için aşağıdaki komutu kullanabiliriz.
$ ceph orch host label add nodea.lab.kubikolog.com _admin
Şu anda 4 nodelu bir ceph clusterı kurmuş olduk. Öncelikle tebrikler 🙂
Peki yeni bir node gelirse ?
- Clustera yeni bir node eklemek istediğimizde aşağıdaki şekilde aksiyon alabiliriz.
$ ssh-copy-id -f -i /etc/ceph/ceph.pub root@new-node
$ ansible-playbook -i /usr/share/cephadm-ansible/hosts/ /usr/share/cephadm-ansible/cephadm-preflight.yml --limit new-node
$ ceph orch host add new-node --labels=mon,osd,mgr
- OSD olarak kullanılabilcek diskleri listelemek için aşağıdaki komutu çalıştırırız.
$ ceph orch device ls
Mevcut OSD nodelarınıza yeni depolama aygıtları ekleyebilir ve ardından bunları OSD’ler olarak yapılandırabiliriz. Tabi bunun için aşağıdaki koşulların sağlanması gerekmektedir.
• The device must not have any partitions.
• The device must not have any LVM state.
• The device must not be mounted.
• The device must not contain a file system.
• The device must not contain a Ceph BlueStore OSD.
• The device must be larger than 5 GB.
- Osd eklemek için aşağıdaki ilk komut çalıştırılabilir. Alternatif olarak ikinci komutu tercih ederseniz kullanılmayan tüm cihazları osd olarak eklemiş olur.
$ ceph orch daemon add osd new-osd:/dev/vdb
$ ceph orch apply osd --all-available-devices
Şimdilik burada noktalayalım. Gelecek yazıda cluster konfigürasyonlarına devam ederek sık karşılaşabileceğimiz komutlar üzerinde duracağız.
Bu gecenin şarkısı Göksel’den geliyor 🕊️

Birisi “Ceph Storage Notlarım {2/5}” üzerinde düşündü