11.10.2017 tarihinde İstanbul Yıldız Teknik Üniversitesi Davutpaşa Kampüsü Teknoparkı A1 Blok'ta Ceph Türkiye adına yapılan ikinci meetup'a ait sunum. Dr. Hüseyin ÇOTUK tarafından yapılan sunum süresince aşağıdaki konular ele alınmıştır.
Ceph Yapıtaşları
Ceph Mimarisi
Ceph Üzerinde Veri Yerleşimi
CRUSH Algoritması
CRUSH Map
OpenStack Entegrasyonu
5. RADOS
●
Ceph kümesinin en temel yapıtaşı
●
Nesnelerin saklanmasından sorumlu
●
Verinin her zaman tutarlı ve güvenli
kalmasını sağlayan katman
●
Tutarlılık
– Replikasyon
– Hata tespiti
– Onarma (recovery)
– Veri taşıma
– Yük dengeleme
7. LibRADOS
●
RADOS katmanına erişimi sağlayan
kütüphane
●
Diğer katmanlar için native erişim sağlar.
– RadosGW, RBD, CephFS
●
LibRADOS API doğrudan RADOS katmanına
erişim sağlar (custom interface)
●
Desteklenen diller
– PHP
– Ruby
– Java
– Python
– C ve C++
8. OSD
●
Gerçek kullanıcı verisinin saklandığı bileşen
●
Diske erişimi yönetir.
●
Her disk başına OSD kullanımı önerilir.
●
Monitör sunucularına disklerin durumu ile
ilgili bilgi sağlar.
●
Sistemdeki OSD sayısı genel kabülde
toplam disk sayısının göstergesidir.
9. MON
●
Tüm Ceph kümesinin sağlıklı çalışmasını
takip etmekle yükümlü
●
Kümedeki durum hakkında bilgi veren farklı
haritalar (map) tutar.
– OSD, MON, PG ve CRUSH map
●
Kümedeki her bileşen kendisi ile ilgili bilgiyi
monitör sunucularına raporlar ve
durumundaki her değişikliği hemen bildirir.
●
Kümedeki her bileşen için harita halinde
farklı farklı bilgiler tutar.
●
Monitör üzerinde kullanıcı verisi saklanmaz.
11. RGW
●
RADOS katmanına erişmek için RESTful
API sağlayan bileşendir.
●
Amazon S3 (Simple Storage Service) ve
OpenStack Object Storage API (Swift) ile
uyumludur.
●
Multitenancy ve OpenStack Keystone ile
kimlik doğrulama desteği vardır.
●
OpenStack arkasında Swift gibi
kullanılabilir.
13. RBD
●
Fiziksel ve sanal sunucularda kullanılmak
üzere blok aygıt desteği sağlayan
bileşendir.
●
Sunucudaki herhangi bir disk gibi map
edilerek istenilen dosya sistemi ile
formatlanıp mount edilerek kullanılabilir.
●
Ticari ürünlerde bulunan thin provisioning ve
snapshot gibi özellikleri destekler.
●
OpenStack, CloudStack, Proxmox desteği
mevcuttur.
15. MDS
●
Dosya hiyerarşisini izleyerek sadece
CephFS için metadata bilgisini tutmakla
yükümlüdür.
●
Ceph RBD ve RadosGW metadata
kullanımı gerektirmez.
●
FS kullanımına bağlı opsiyonel olarak
sisteme eklenir.
●
İstemciler ile etkileşimi olmadığı için diğer
dağıtık sistemlerdeki SPOF problemi, RBD
ve Rados erişimi için ortadan kaldırılmıştır.
16. FS
●
Her boyutta, POSIX-uyumlu dağıtık dosya
sistemi desteği sağlayan bileşendir.
●
Dosya hiyerarşisini takip edebilmek
amacıyla Ceph MDS’e ihtiyaç duyar.
●
Uzun süreli denemeler sonrası 2016 ilk
çeyreğinde Jewel sürümü ile production
ortamlarında kullanıma sunulmuştur.
●
Kernel mount veya FUSE
●
OpenStack Manila ile kullanıldığında dosya
sistemine birden fazla sanal sunucu
üzerinden eş zamanlı erişim sağlar.
22. Ceph Üzerinde Veri Yerleşimi
●
Yerleşim Grupları (Placement Groups-PG)
– Havuz ve OSD arasında verileri gruplamak üzere
kullanılan yapıtaşları
●
Veri Havuzları (Pools)
– İmajları barındıran mantıksal ayraçlar
– Büyüklükle orantılı PG’ye sahip
– Havuz bazında farklı replika sayısı seçilebilir
●
İmajlar (Images)
– Havuz içinde farklı verilerin tutulduğu yapıtaşları
●
Kural Grupları (Rulesets)
– Veriyi istenilen hiyerarşik yapıda dağıtmaya imkan
veren kurallar
25. CRUSH Örnek
●
“huseyin” isimli nesneyi “cotuk” isimli
havuza yazma
– PG Sayısı : 32768
– Cotuk pool id : 5
– hash(‘huseyin’) = 0x894513ce
– 0x894513ce mod 32768 = 0x13CE
– PG → 5.13CE
– CRUSH(‘5.13CE’, {CLUSTER_TOPOLOGY} )
●
OSD 7
●
OSD 26
●
OSD 16
26. CRUSH Map
●
Her hiyerarşik yapı için tanımlanan kurallarla
birlikte Ceph’in veriyi nasıl saklayacağını belirler.
●
Çok aşamalı olabileceği gibi en az bir düğüm ve
yaprak hiyerarşisine sahip olmalıdır.
●
Hiyerarşideki her düğüm sepet (bucket) olarak
adlandırılır ve her sepetin bir tipi vardır.
●
Verileri tutan nesneler disklere verilebilecek
ağırlıklara göre disklere dağıtılır.
●
İhtiyaca göre istenilen esneklikte hiyerarşik yapı
tanımlanabilir. Tek kısıt en alttaki yaprak ismi
verilen düğümler OSD’leri temsil etmelidir.
●
Her yaprak düğüm bir sunucuya ya da başka bir
tipteki sepete bağlı olmalıdır.
28. CRUSH Failure Domains
●
Verinin hangi hiyerarşide yedekleneceğini
belirler.
●
Varsayılan olarak verinin replikaları farklı
sunucularda tutulacak şekilde dağıtılır.
●
İstenirse rack bazında, hatta arada yeterli
bağlantı varsa DC veya region bazında bile
kopyalar dağıtılabilir.
●
Kurallar içerisinde tanım yapılır.
44. Ceph Benchmark: Optimizasyon Öncesi
1 fio + 4 farklı pool rbd bench + 3 node cephfs üzerinden
dd aynı anda çalıştırılıp throughput ölçümü (4.372 GB/sn)
45. Ceph Benchmark: Optimizasyon Sonrası
1 fio + 4 farklı pool rbd bench + 3 node cephfs üzerinden
dd aynı anda çalıştırılıp throughput ölçümü (6.521 GB/sn)
46. Ceph Türkiye 1. Meetup Ankara
●
Video kaydı ve sunum için:
– http://huseyincotuk.com/index.php/2017/10/07/
ceph-turkiye-1-meetup-ankara-ilk-bakista-ceph/
47. Soru / Cevap
●
Teşekkürler
●
Dr. Hüseyin ÇOTUK
– http://www.huseyincotuk.com
– huseyin@huseyincotuk.com
– https://twitter.com/huseyin_cotuk
●
Sorular