ݺߣ

ݺߣShare a Scribd company logo
Dr. Hüseyin ÇOTUK
11.10.2017
İstanbul
Ceph Türkiye Meetup
Ceph Yapıtaşları, Ceph Mimarisi ve
Ceph Üzerinde Veri ۱ş
Gündem
• Ceph Yapıtaşları
• Ceph Mimarisi
• Ceph Üzerinde Veri ۱ş
– CRUSH Algoritması
– CRUSH MAP
• OpenStack Entegrasyonu
• Soru/Cevap
Ceph: The Future of the Storage
Ceph Yapıtaşları
• RADOS (Reliable Autonomic Distributed
Object Store)
• LIBRADOS (Rados Library)
• OSD (Object Storage Device)
• MON (Monitor)
• RGW (Rados Gateway)
• RBD (Rados Block Device)
• MDS (Metadata Server)
• FS (File System)
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
RADOS Nesneleri
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++
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.
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.
Ceph Mon Stats
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.
Rados Gateway Access
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.
RBD Images
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.
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.
Ceph Status
Ceph Mimarisi (1)
Ceph Mimarisi (2)
Örnek Mimari
Ceph OSD – Journal İlişkisi
Ceph Üzerinde Veri ۱ş
●
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
Ceph Üzerinde Veri ۱ş
CRUSH Algoritması
●
Controlled Replication Under Scalable
Hashing
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
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.
CRUSH Hiyerarşisi
●
Root
Region
DC
Room
Pod
PDU
Row
Rack
Chassis
Host
OSD
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.
Ceph Rules
Ceph OSD Tree
Havuz – Kural Eşleme
#ceph osd pool create bench_hdd 100 100
#ceph osd pool set bench_hdd
crush_ruleset 0
#ceph osd pool create bench_ssd 100 100
#ceph osd pool set bench_ssd
crush_ruleset 1
Neden OpenStack + Ceph ?
●
OpenStack Depolama Gereksinimleri
– Ephemeral (Nova+Glance)
– Block (Cinder)
– File (Manila)
– Object (Swift)
●
Gelişmiş özellikler
– Live migration
– Direct snapshot & restore
– Mirroring
– HA
– Replication failover
Neden OpenStack + Ceph ?
OpenStack Kullanıcı Anketi 2017
OpenStack Entegrasyonu (1)
●
Ceph üzerinde:
●
OpenStack sunucular üzerinde:
– ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf
</etc/ceph/ceph.conf
– apt-get install python-rbd ceph-common
●
Ceph Client Authentication
– ceph auth get-or-create client.glance mon 'profile rbd' osd
'profile rbd pool=images'
– ceph auth get-or-create client.cinder mon 'profile rbd' osd
'profile rbd pool=volumes, profile rbd pool=vms, profile rbd
pool=images'
– ceph auth get-or-create client.cinder-backup mon 'profile rbd'
osd 'profile rbd pool=backups'
OpenStack Entegrasyonu (2)
●
Keyring ekleme
– ceph auth get-or-create client.glance | ssh {your-glance-api-
server} sudo tee /etc/ceph/ceph.client.glance.keyring
– ssh {your-glance-api-server} sudo chown glance:glance
/etc/ceph/ceph.client.glance.keyring
– ceph auth get-or-create client.cinder | ssh {your-volume-
server} sudo tee /etc/ceph/ceph.client.cinder.keyring
– ssh {your-cinder-volume-server} sudo chown cinder:cinder
/etc/ceph/ceph.client.cinder.keyring
– ceph auth get-or-create client.cinder-backup | ssh {your-
cinder-backup-server} sudo tee /etc/ceph/ceph.client.cinder-
backup.keyring
– ssh {your-cinder-backup-server} sudo chown cinder:cinder
/etc/ceph/ceph.client.cinder-backup.keyring
– ceph auth get-or-create client.cinder | ssh {your-nova-
compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
OpenStack Entegrasyonu (3)
●
Compute sunucularda
– uuidgen
●
457eb676-33da-42ec-9a8c-9293d545c337
– cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<uuid>457eb676-33da-42ec-9a8c-9293d545c337</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
EOF
– sudo virsh secret-define --file secret.xml
Secret 457eb676-33da-42ec-9a8c-9293d545c337 created
– sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c-
9293d545c337 --base64 $(cat client.cinder.key) && rm
client.cinder.key secret.xml
OpenStack Entegrasyonu (4)
●
Glance
●
Enable COW
●
Disable cache
OpenStack Entegrasyonu (5)
●
Cinder
– Cephx authentication
OpenStack Entegrasyonu (6)
●
Cinder Backup (cinder.conf)
●
Volume üzerinden boot için
OpenStack Entegrasyonu (7)
●
Nova (ceph.conf)
●
nova.conf
●
Live migration
●
Tüm servisler restart
OpenStack Entegrasyonu (8)
# openstack service create --name=swift
--description="Swift Service" object-store
# openstack endpoint create --region
{region-name} 
--publicurl
"https://radosgw.domain.tld:443/swift/v1" 
--adminurl
"https://radosgw.domain.tld:443/swift/v1" 
--internalurl
"https://radosgw.domain.tld:443/swift/v1" 
swift
OpenStack Entegrasyonu (9)
●
Keystone kimlik doğrulama (ceph.conf)
[client.radosgw.*]
rgw_cache_enabled = true
rgw_cache_lru_size = 100000
rgw_thread_pool_size = 256
rgw_enable_ops_log = false
rgw_frontends = civetweb port=80
[client.rgw.cephmonitor01]
rgw_frontends = "civetweb port=443s ssl_certificate=/etc/ssl/private/radosgw.domain.tld"
#rgw dns name = radosgw.domain.tld
rgw_keystone_url = http://controller:35357
rgw_keystone_admin_user = ceph
rgw_keystone_admin_password = {openstack_ceph_user_password}
rgw_keystone_admin_project = admin
rgw_keystone_admin_domain = default
rgw_keystone_api_version = 3
rgw_keystone_accepted_roles = admin, user
rgw_s3_auth_use_keystone = true
rgw_keystone_make_new_tenants = true
OpenStack Entegrasyonu (10)
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)
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)
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/
Soru / Cevap
●
Teşekkürler
●
Dr. Hüseyin ÇOTUK
– http://www.huseyincotuk.com
– huseyin@huseyincotuk.com
– https://twitter.com/huseyin_cotuk
●
Sorular
Ad

Recommended

OpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStack
OpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStack
Huseyin Cotuk
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Huseyin Cotuk
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
Huseyin Cotuk
Ceph Türkiye 1.meetup Ankara
Ceph Türkiye 1.meetup Ankara
Huseyin Cotuk
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Huseyin Cotuk
OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack
OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack
Huseyin Cotuk
Oracle12c flex rac flex asm
Oracle12c flex rac flex asm
Özgür Umut Vurgun
Exadata Performance Notes
Exadata Performance Notes
Özgür Umut Vurgun
Azure Sanal Makineler
Azure Sanal Makineler
Mustafa
Veri Depolama ve Diskler
Veri Depolama ve Diskler
Mustafa
Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)
Serhad MAKBULOĞLU, MBA
Sunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
Oguz Yarimtepe
Linkle mimari
Linkle mimari
Tahsin Yüksel
Openstack Magnum CaaS
Openstack Magnum CaaS
Vahric Muhtaryan
Active Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V Taşıma
Mustafa
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?
Gokhan Boranalp
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
gulindasdan
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik Integration
Mesut Güngör
Yeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12c
Özgür Umut Vurgun
Hadoop & Cloudera Workshop
Hadoop & Cloudera Workshop
Serkan Sakınmaz
1 hafta_dersi
1 hafta_dersi
Mudur Alkan
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
atifceylan
Node js giriş (intro)
Node js giriş (intro)
Hasan Sungur Bilgen
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir Bakış
Burak KÖSE
Ankara JUG Big Data Presentation
Ankara JUG Big Data Presentation
Serkan Özal
Puppet ile Linux Sistem Yönetimi Otomasyonu
Puppet ile Linux Sistem Yönetimi Otomasyonu
BilgiO A.S / Linux Akademi
pfSense 2.0 Eğitim Sunumu
pfSense 2.0 Eğitim Sunumu
BilgiO A.S / Linux Akademi
linux-enterprise-cluster
linux-enterprise-cluster
Kurtuluş Karasu

More Related Content

What's hot (17)

Azure Sanal Makineler
Azure Sanal Makineler
Mustafa
Veri Depolama ve Diskler
Veri Depolama ve Diskler
Mustafa
Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)
Serhad MAKBULOĞLU, MBA
Sunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
Oguz Yarimtepe
Linkle mimari
Linkle mimari
Tahsin Yüksel
Openstack Magnum CaaS
Openstack Magnum CaaS
Vahric Muhtaryan
Active Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V Taşıma
Mustafa
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?
Gokhan Boranalp
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
gulindasdan
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik Integration
Mesut Güngör
Yeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12c
Özgür Umut Vurgun
Hadoop & Cloudera Workshop
Hadoop & Cloudera Workshop
Serkan Sakınmaz
1 hafta_dersi
1 hafta_dersi
Mudur Alkan
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
atifceylan
Node js giriş (intro)
Node js giriş (intro)
Hasan Sungur Bilgen
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir Bakış
Burak KÖSE
Azure Sanal Makineler
Azure Sanal Makineler
Mustafa
Veri Depolama ve Diskler
Veri Depolama ve Diskler
Mustafa
Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)
Serhad MAKBULOĞLU, MBA
Sunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
Oguz Yarimtepe
Active Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V Taşıma
Mustafa
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?
Gokhan Boranalp
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
gulindasdan
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik Integration
Mesut Güngör
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
atifceylan
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir Bakış
Burak KÖSE

Similar to Ceph Türkiye 2.meetup İstanbul (20)

Ankara JUG Big Data Presentation
Ankara JUG Big Data Presentation
Serkan Özal
Puppet ile Linux Sistem Yönetimi Otomasyonu
Puppet ile Linux Sistem Yönetimi Otomasyonu
BilgiO A.S / Linux Akademi
pfSense 2.0 Eğitim Sunumu
pfSense 2.0 Eğitim Sunumu
BilgiO A.S / Linux Akademi
linux-enterprise-cluster
linux-enterprise-cluster
Kurtuluş Karasu
Windows Server 2012 Network ve File System Yenilikleri
Windows Server 2012 Network ve File System Yenilikleri
Mustafa
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
MSHOWTO Bilisim Toplulugu
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
Hakan Sarıbıyık
Hadoop @ devveri.com
Hadoop @ devveri.com
Hakan Ilter
Nginx sunu 2014
Nginx sunu 2014
Mert Akkaya
Snc moduler sunucu
Snc moduler sunucu
tarkansnc
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
Erhan Yakut
Nutanix Teknik Dokuman
Nutanix Teknik Dokuman
Veli Anlama
Linux Guvenligi V1.0
Linux Guvenligi V1.0
Burak DAYIOGLU
Az 103 : Microsoft Azure Administrator - Bolum 3
Az 103 : Microsoft Azure Administrator - Bolum 3
MSHOWTO Bilisim Toplulugu
MongoDB - NoSQL Overview
MongoDB - NoSQL Overview
Cihan Özhan
Microsoft Azure Sql Server HADR
Microsoft Azure Sql Server HADR
Önder Değer
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Ali Erdinc Koroglu
windows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over cluster
Çöüʴ鰭
Ankara JUG Big Data Presentation
Ankara JUG Big Data Presentation
Serkan Özal
Windows Server 2012 Network ve File System Yenilikleri
Windows Server 2012 Network ve File System Yenilikleri
Mustafa
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
MSHOWTO Bilisim Toplulugu
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
Hakan Sarıbıyık
Snc moduler sunucu
Snc moduler sunucu
tarkansnc
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
Erhan Yakut
Nutanix Teknik Dokuman
Nutanix Teknik Dokuman
Veli Anlama
MongoDB - NoSQL Overview
MongoDB - NoSQL Overview
Cihan Özhan
Microsoft Azure Sql Server HADR
Microsoft Azure Sql Server HADR
Önder Değer
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Ali Erdinc Koroglu
windows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over cluster
Çöüʴ鰭
Ad

Ceph Türkiye 2.meetup İstanbul

  • 1. Dr. Hüseyin ÇOTUK 11.10.2017 İstanbul Ceph Türkiye Meetup Ceph Yapıtaşları, Ceph Mimarisi ve Ceph Üzerinde Veri ۱ş
  • 2. Gündem • Ceph Yapıtaşları • Ceph Mimarisi • Ceph Üzerinde Veri ۱ş – CRUSH Algoritması – CRUSH MAP • OpenStack Entegrasyonu • Soru/Cevap
  • 3. Ceph: The Future of the Storage
  • 4. Ceph Yapıtaşları • RADOS (Reliable Autonomic Distributed Object Store) • LIBRADOS (Rados Library) • OSD (Object Storage Device) • MON (Monitor) • RGW (Rados Gateway) • RBD (Rados Block Device) • MDS (Metadata Server) • FS (File System)
  • 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.
  • 21. Ceph OSD – Journal İlişkisi
  • 22. Ceph Üzerinde Veri ۱ş ● 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.
  • 31. Havuz – Kural Eşleme #ceph osd pool create bench_hdd 100 100 #ceph osd pool set bench_hdd crush_ruleset 0 #ceph osd pool create bench_ssd 100 100 #ceph osd pool set bench_ssd crush_ruleset 1
  • 32. Neden OpenStack + Ceph ? ● OpenStack Depolama Gereksinimleri – Ephemeral (Nova+Glance) – Block (Cinder) – File (Manila) – Object (Swift) ● Gelişmiş özellikler – Live migration – Direct snapshot & restore – Mirroring – HA – Replication failover
  • 33. Neden OpenStack + Ceph ? OpenStack Kullanıcı Anketi 2017
  • 34. OpenStack Entegrasyonu (1) ● Ceph üzerinde: ● OpenStack sunucular üzerinde: – ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf – apt-get install python-rbd ceph-common ● Ceph Client Authentication – ceph auth get-or-create client.glance mon 'profile rbd' osd 'profile rbd pool=images' – ceph auth get-or-create client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images' – ceph auth get-or-create client.cinder-backup mon 'profile rbd' osd 'profile rbd pool=backups'
  • 35. OpenStack Entegrasyonu (2) ● Keyring ekleme – ceph auth get-or-create client.glance | ssh {your-glance-api- server} sudo tee /etc/ceph/ceph.client.glance.keyring – ssh {your-glance-api-server} sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring – ceph auth get-or-create client.cinder | ssh {your-volume- server} sudo tee /etc/ceph/ceph.client.cinder.keyring – ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring – ceph auth get-or-create client.cinder-backup | ssh {your- cinder-backup-server} sudo tee /etc/ceph/ceph.client.cinder- backup.keyring – ssh {your-cinder-backup-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring – ceph auth get-or-create client.cinder | ssh {your-nova- compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
  • 36. OpenStack Entegrasyonu (3) ● Compute sunucularda – uuidgen ● 457eb676-33da-42ec-9a8c-9293d545c337 – cat > secret.xml <<EOF <secret ephemeral='no' private='no'> <uuid>457eb676-33da-42ec-9a8c-9293d545c337</uuid> <usage type='ceph'> <name>client.cinder secret</name> </usage> </secret> EOF – sudo virsh secret-define --file secret.xml Secret 457eb676-33da-42ec-9a8c-9293d545c337 created – sudo virsh secret-set-value --secret 457eb676-33da-42ec-9a8c- 9293d545c337 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
  • 39. OpenStack Entegrasyonu (6) ● Cinder Backup (cinder.conf) ● Volume üzerinden boot için
  • 40. OpenStack Entegrasyonu (7) ● Nova (ceph.conf) ● nova.conf ● Live migration ● Tüm servisler restart
  • 41. OpenStack Entegrasyonu (8) # openstack service create --name=swift --description="Swift Service" object-store # openstack endpoint create --region {region-name} --publicurl "https://radosgw.domain.tld:443/swift/v1" --adminurl "https://radosgw.domain.tld:443/swift/v1" --internalurl "https://radosgw.domain.tld:443/swift/v1" swift
  • 42. OpenStack Entegrasyonu (9) ● Keystone kimlik doğrulama (ceph.conf) [client.radosgw.*] rgw_cache_enabled = true rgw_cache_lru_size = 100000 rgw_thread_pool_size = 256 rgw_enable_ops_log = false rgw_frontends = civetweb port=80 [client.rgw.cephmonitor01] rgw_frontends = "civetweb port=443s ssl_certificate=/etc/ssl/private/radosgw.domain.tld" #rgw dns name = radosgw.domain.tld rgw_keystone_url = http://controller:35357 rgw_keystone_admin_user = ceph rgw_keystone_admin_password = {openstack_ceph_user_password} rgw_keystone_admin_project = admin rgw_keystone_admin_domain = default rgw_keystone_api_version = 3 rgw_keystone_accepted_roles = admin, user rgw_s3_auth_use_keystone = true rgw_keystone_make_new_tenants = true
  • 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