OpenStack Ceph Entegrasyonu

İlk Bakışta Ceph

1015767Dünyada her geçen gün daha popüler hale gelen açık kaynak kodlu dağıtık depolama sistemlerinden olan Ceph; nesne tabanlı depolama, blok tabanlı depolama ve dosya sistemi olmak üzere üç farklı depolama mimarisini aynı ortamdan sunabilmektedir. Özellikle performans, güvenilirlik ve ölçeklenebilirlik konusunda öne çıkan Ceph, bir metadata sunucusu gerektirmemesi ile diğer dağıtık depolama sistemlerinden bir adım öne çıkmaktadır. Metadata sunucuları verinin hangi konuma yazıldığını tutan sunucular olup bu sunuculara erişim konusunda yaşanan bir problem tüm depolama servislerini etkilemektedir. Bundan farklı olarak Ceph, metadata sunucusu yerine yazacağı verinin yerini belirleyen bir algoritma (CRUSH) kullanır. her istemci bu algoritmayı kullanarak yazacağı konumu belirler. Veri okunacağı zaman yine aynı algoritma sayesinde verinin okunacağı konum belirlenir. Ceph üzerinde verinin dağıtık olarak birden fazla kopyası tutulur. Okuma veya yazma yapılabilmesi için sadece depolama düğümlerinin erişilebilir olup olmadığı bilgisini tutan monitör sunucuları kullanılır.

OpenStack Ceph Entegrasyonu

OpenStack bir çok ticari depolama çözümünün entegrasyonuna izin vermekle birlikte, son zamanlarda Ceph; gelişmiş özellikleri, açık kaynak kodlu olması ve kolay entegrasyonu ile OpenStack için ilk akla gelen depolama çözümü olmaya başlamıştır. Halen bir çok konuda gelişmekte olan Ceph, OpenStack altyapısında Nova, Glance ve Cinder ile birlikte kullanılabilmektedir.

Ceph’in blok cihaz mekanizması RBD (Rados Block Device), OpenStack’in 3 farklı bileşeni ile entegre olabilmektedir:

İmajlar: İşletim sistemi imajları Glance tarafından yönetilir. Değişmeyen içeriğe sahiptirler. OpenStack imajları binary blob olarak saklar.

İşletim Sistemi Diskleri: Açılan sanal sunuculara ait işletim sisteminin bulunduğu disklerdir. Genelde /var/lib/nova/instances/<uuid>/ altında tutulur.  Nova ile yönetilir.

Depolama Diskleri: İşletim sistemine eklenen blok cihazlardır. OpenStack ayrıca depolama diski üzerinden sanal sunucu boot etmeyi desteklemektedir.  Depolama diskleri Cinder tarafından yönetilir.

Ceph, sanal sunucu diski yapmak üzere QCOW2 imaj formatını desteklemez. Bu nedenle OpenStack ile sanal sunucuyu depolama diskinden boot etmek için Glance üzerindeki imaj formatının RAW olması gerekir.

Ceph Tarafının Hazırlanması

Cinder, glance ve nova ile kullanılmak üzere disk havuzları oluşturulmalıdır.

Ardından OpenStack Ceph istemcileri yapılandırılmalıdır. Glance-api, cinder-volume, nova-compute ve cinder-backup çalıştıran her sunucuya ceph.conf kopyalanmalıdır.

Glance-api sunucusuna python-rbd kurulmalıdır.

Nova-compute, cinder-backup ve cinder-volume servislerini çalıştıran sunuculara ceph-common kurulmalıdır.

Nova, cinder ve glance yetkilendirmesi için yeni kullanıcılar açılmalıdır.

client.cinder, client.glance ve client.cinder-backup için keyring eklenmeli ve dosyanın sahipleri değiştirilmelidir.

nova-compute çalıştıran tüm sunuculara nova-compute için keyring eklenmelidir.

Bu sunucular aynı zamanda libvirt ile kullanmak üzere client.cinder kullanıcısının şifresine ihtiyaç duymaktadır. Cinder üzerinden blok cihaz ekleneceği zaman libvirt,  kümeye erişmek üzere kullanacaktır. Bunun için her birinde geçici olarak gizli anahtar kopyalanmalıdır.

Ardından compute sunucular üzerinde gizli anahtar libvirt’e eklenir ve anahtarın geçici kopyası silinir.

Daha sonra kullanmak üzere uuid not edilmelidir.

OpenStack Yapılandırması

Glance 

İmajları depolamak için birden fazla mekenizma kullanabilir. Varsayılan olarak Ceph blok cihaz kullanmak için aşağıdaki yapılandırma (/etc/glance/glance-api.conf ) eklenmelidir.

Tüm yapılandırma seçenekleri için resmi sayfaya göz atabilirsiniz.

İmajların copy-on-write (COW) olarak klonlanabilmesi için default kısmına aşağıdaki satır eklenmelidir.

Bu durumda Glance API üzerinden backend lokasyon bilgisinin, dolayısıyla kullanılan backend türü herkes tarafından ulaşılabilir hale geldiği unutulmamalıdır.

Cinder

/etc/cinder/cinder.conf dosyasına Ceph blok cihaz sürücüsü, disk havuzunun ismi gibi bilgiler girilmelidir.

Cephx kimlik doğrulaması için kullanıcı adı ve libvirt’e eklenen gizli anahtar ayrıca eklenmelidir.

Eğer birden fazla cinder backend kullanılıyorsa “glance_api_version” değeri 2 olmalıdır.

Cinder Backup

Önce cinder-backup kurulduktan sonra ilgili sunucudaki /etc/cinder/cinder.conf dosyasına aşağıdaki satırlar eklenmelidir.

 Nova

OpenStack ile tüm sanal sunucuları Ceph üzerinde boot etmek ve depolamak için Nova üzerinde “ephemeral backend” aktif edilmelidir. Ceph konfigürasyon dosyasında RBD cache aktif hale getirmek önerilmektedir. Ayrıca problem giderme konusunda admin soketinin kullanılması büyük kolaylık sağlamaktadır. Her sanal sunucu için bir soket kullanmak performansı incelemeye ve sorunları gidermeye yardımcı olacaktır.

İlgili sokete aşağıdaki gibi erişilebilmektedir.

Daha sonra her compute sunucu üzerinde Ceph konfigürasyon dosyası ceph.conf aşağıdaki gibi düzenlenmelidir.

Eğer sanal sunucular hali hazırda çalışıyorsa sokete bağlanması için yeniden başlatmak yeterli olacaktır.

Her compute sunucu üzerinde /etc/nova/nova.conf dosyasında [libvirt] bölümüne aşağıdaki satırlar eklenmelidir.

Sunucuyu canlı olarak taşıyabilmek için (live-migration) ilgili satır aşağıdaki gibi düzenlenmelidir.

Servislerin Yeniden Başlatılması

Son olarak servisler yeniden başlatılmalıdır.

Blok Cihaz Üzerinden Sunucu Boot Etme

Varolan bir imajdan depolama diski oluşturmak için aşağıdaki komut kullanılmalıdır.

Burada kullanılan imajın formatı RAW olmalıdır. Format tipleri arasında dönüşüm için “qemu-img convert” aracı kullanılabilir. Örneğin:

Cinder ve Glance her ikisi Ceph blok cihaz kullandığında imaj copy-on-write (COW) clone olarak kullanılır. Böylece yeni blok cihaz hızlıca oluşturulur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir