3 openstack_icin_ceph_2
Mert Gör 🇹🇷 edited this page 2025-06-29 19:18:00 +00:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Ceph Kümesi Hazırlığı: OpenStack Uyumlu Mimari Kurulumu

Bu doküman, OpenStack öncesi Ceph kümesi kurulumunu, veri kullanılabilirliği ve ayrıştırma prensipleriyle birlikte adım adım açıklar. Yapının amacı; OpenStack bileşenleri için ayrı havuzlar ve crush kuralları tanımlamak, daha sonra bu kaynakları Cinder, Glance, Nova ve Cinder Backup servislerinin doğrudan kullanabileceği şekilde yetkilendirmek ve uygulamaya açmaktır.


1. Ceph CRUSH Hiyerarisi Oluşturma

Cephte verinin dağılımı CRUSH haritası üzerinden kontrol edilir. Bu haritada "root", "bucket", "host" ve "osd" seviyeleri bulunur. Aşağıdaki komutlarla iki ayrı root oluşturulup, ortamlar bunların altına taşınır:

ceph osd crush add-bucket prod_nodes_root root
ceph osd crush add-bucket staging_nodes_root root
ceph osd crush add-bucket backup_nodes_root root

# Nodeları(production, staging, backup) yeni bucket-rootlara taşı
ceph osd crush move production root=prod_nodes_root
ceph osd crush move staging root=staging_nodes_root
ceph osd crush move backup root=backup_nodes_root

Yapıyı kontrol etmek için:

ceph osd crush tree

2. CRUSH Kurallarını Tanımlama

Verinin nasıl ve hangi root altında çoğaltılacağını belirlemek için crush kuralları oluşturulur:

ceph osd crush rule create-replicated replicated_prod prod_nodes_root host
ceph osd crush rule create-replicated replicated_staging staging_nodes_root host
ceph osd crush rule create-replicated replicated_backup backup_nodes_root host

Bu kurallar, oluşturulacak havuzlara atanacaktır. Sondaki host parametresiyle verinin farklı hostlara replike edilmesi sağlanır. osd yazılsaydı aynı node içerisinde farklı osd lere replike edecekti ki node un başına bir şey gelmesi ihtimali ile tehlikeye girecekti.


3. OpenStack İçin Ceph Havuzlarının Oluşturulması

Her OpenStack bileşeni için ayrı havuzlar oluşturulur ve ilgili CRUSH kuralı atanır:

# OpenStack bileşen havuzları
ceph osd pool create images 32
ceph osd pool set images crush_rule replicated_prod
ceph osd pool set images crush_rule replicated_staging

ceph osd pool create volumes 32
ceph osd pool set volumes crush_rule replicated_prod
ceph osd pool set volumes crush_rule replicated_staging

ceph osd pool create vms 32
ceph osd pool set vms crush_rule replicated_prod
ceph osd pool set vms crush_rule replicated_staging

# Yedekleme havuzu
ceph osd pool create backups 32
ceph osd pool set backups crush_rule replicated_backup

4. Havuzlara Uygulama Atama

Ceph, OpenStackin kullandığı rbd (RADOS Block Device) ile çalışabilmesi için her havuza uygulama türü atanmalıdır:

ceph osd pool application enable images rbd
ceph osd pool application enable volumes rbd
ceph osd pool application enable vms rbd
ceph osd pool application enable backups rbd

5. OpenStack Bileşenlerine Erişim Yetkilendirmesi

OpenStack servislerinin havuzlara erişebilmesi için gerekli yetkiler ve keyring dosyaları oluşturulur:

# Yetkilendirme
ceph auth add client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'
ceph auth add client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
ceph auth add client.nova mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=vms'
ceph auth add client.cinder_backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups'

# Keyring dosyalarının çıktısı
ceph auth get client.cinder -o /etc/ceph/ceph.client.cinder.keyring
ceph auth get client.glance -o /etc/ceph/ceph.client.glance.keyring
ceph auth get client.nova -o /etc/ceph/ceph.client.nova.keyring
ceph auth get client.cinder_backup -o /etc/ceph/ceph.client.cinder_backup.keyring

Keyring dosyaları /etc/ceph/ dizin yoluna alınmıştır. Sonradan openstack kurulumu sırasında /etc/ceph/ceph.conf dosyası ile birlikte ilgili yere kopyalanacaktır.


6. Durum Kontrolleri

ceph -s
ceph health detail
ceph osd pool ls
ceph osd pool ls detail
ceph osd crush rule list
ceph osd crush tree

7. Hata Çözümü

undersized pool hatası

Havuzların çoğaltma (replica) sayısı yeterli OSD sayısına sahip değilse "undersized" hatası alınabilir. Geçici olarak size=1 verilerek hata giderilebilir.

ceph config set mon mon_allow_pool_size_one true

ceph osd pool set backups size 1 --yes-i-really-mean-it
ceph osd pool set images size 1 --yes-i-really-mean-it
ceph osd pool set volumes size 1 --yes-i-really-mean-it
ceph osd pool set vms size 1 --yes-i-really-mean-it

too many PGs per OSD hatası

Fazla sayıda PG (Placement Group), OSD başına yük bindiriyorsa, replica sayısını düşürmek çözüm olabilir:

ceph config set mon mon_allow_pool_size_one true

ceph osd pool set images size 1 --yes-i-really-mean-it
ceph osd pool set volumes size 1 --yes-i-really-mean-it
ceph osd pool set vms size 1 --yes-i-really-mean-it
ceph osd pool set backups size 1 --yes-i-really-mean-it

ceph config set mon mon_allow_pool_size_one false

Bu sadece geçici bir çözüm olmaldır, daha sonra yeterli OSD eklendikten sonra tekrar size=2 veya size=3 yapılmalıdır.


Özet

Bileşen Havuz Crush Rule Replica Uygulama Client
Glance images replicated_openstack 1 rbd client.glance
Cinder volumes replicated_openstack 1 rbd client.cinder
Nova (Ephemeral) vms replicated_openstack 1 rbd client.nova
Cinder Backup backups replicated_backup 1 rbd client.cinder_backup

İlerleyen aşamada bu yapı üzerine OpenStack bileşenleri entegre edilecek ve bu havuzları kullanacak şekilde yapılandırılacaktır.