SlideShare a Scribd company logo
1 of 47
Download to read offline
Dr. Hüseyin ÇOTUK
11.10.2017
İstanbul
Ceph Türkiye Meetup
Ceph Yapıtaşları, Ceph Mimarisi ve
Ceph Üzerinde Veri Yerleşimi
Gündem
• Ceph Yapıtaşları
• Ceph Mimarisi
• Ceph Üzerinde Veri Yerleşimi
– 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ş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
Ceph Üzerinde Veri Yerleşimi
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

More Related Content

What's hot

Azure Sanal Makineler
Azure Sanal MakinelerAzure Sanal Makineler
Azure Sanal MakinelerMustafa
 
Veri Depolama ve Diskler
Veri Depolama ve DisklerVeri Depolama ve Diskler
Veri Depolama ve DisklerMustafa
 
Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)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özleyelimSunucularımızı Gözleyelim
Sunucularımızı GözleyelimOguz Yarimtepe
 
Active Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V TaşımaActive Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V TaşımaMustafa
 
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?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 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2gulindasdan
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationMesut Güngör
 
Yeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12cYeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12cÖzgür Umut Vurgun
 
Hadoop & Cloudera Workshop
Hadoop & Cloudera WorkshopHadoop & Cloudera Workshop
Hadoop & Cloudera WorkshopSerkan Sakınmaz
 
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
Karabük Üniversitesi Programlama Günleri - PostgreSQL SunumuKarabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumuatifceylan
 
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışApache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışBurak KÖSE
 

What's hot (17)

Azure Sanal Makineler
Azure Sanal MakinelerAzure Sanal Makineler
Azure Sanal Makineler
 
Veri Depolama ve Diskler
Veri Depolama ve DisklerVeri Depolama ve Diskler
Veri Depolama ve Diskler
 
Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
 
Linkle mimari
Linkle mimariLinkle mimari
Linkle mimari
 
Openstack Magnum CaaS
Openstack Magnum CaaSOpenstack Magnum CaaS
Openstack Magnum CaaS
 
Active Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V TaşımaActive Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V Taşıma
 
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
 
Veri tabanı
Veri tabanıVeri tabanı
Veri tabanı
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik Integration
 
Yeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12cYeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12c
 
Hadoop & Cloudera Workshop
Hadoop & Cloudera WorkshopHadoop & Cloudera Workshop
Hadoop & Cloudera Workshop
 
1 hafta_dersi
1  hafta_dersi1  hafta_dersi
1 hafta_dersi
 
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
Karabük Üniversitesi Programlama Günleri - PostgreSQL SunumuKarabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
Karabük Üniversitesi Programlama Günleri - PostgreSQL Sunumu
 
Node js giriş (intro)
Node js giriş (intro)Node js giriş (intro)
Node js giriş (intro)
 
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışApache Spark : Genel Bir Bakış
Apache Spark : Genel Bir Bakış
 

Similar to Ceph Türkiye 2.meetup İstanbul

Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data PresentationSerkan Özal
 
Windows Server 2012 Network ve File System Yenilikleri
Windows Server 2012 Network ve File System YenilikleriWindows Server 2012 Network ve File System Yenilikleri
Windows Server 2012 Network ve File System YenilikleriMustafa
 
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi YenilikleriWindows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi YenilikleriMSHOWTO Bilisim Toplulugu
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.comHakan Ilter
 
Snc moduler sunucu
Snc moduler sunucuSnc moduler sunucu
Snc moduler sunucutarkansnc
 
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma SistemiPHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma SistemiErhan Yakut
 
Nutanix Teknik Dokuman
Nutanix Teknik DokumanNutanix Teknik Dokuman
Nutanix Teknik DokumanVeli Anlama
 
Az 103 : Microsoft Azure Administrator - Bolum 3
Az 103 : Microsoft Azure Administrator - Bolum 3Az 103 : Microsoft Azure Administrator - Bolum 3
Az 103 : Microsoft Azure Administrator - Bolum 3MSHOWTO Bilisim Toplulugu
 
MongoDB - NoSQL Overview
MongoDB - NoSQL OverviewMongoDB - NoSQL Overview
MongoDB - NoSQL OverviewCihan Özhan
 
Microsoft Azure Sql Server HADR
Microsoft Azure Sql Server HADRMicrosoft Azure Sql Server HADR
Microsoft Azure Sql Server HADRÖnder Değer
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden GateAnar Godjaev
 
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}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 clusterwindows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over clusterÇözümPARK
 

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

Raid technologies
Raid technologiesRaid technologies
Raid technologies
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data Presentation
 
Puppet ile Linux Sistem Yönetimi Otomasyonu
Puppet ile Linux Sistem Yönetimi OtomasyonuPuppet ile Linux Sistem Yönetimi Otomasyonu
Puppet ile Linux Sistem Yönetimi Otomasyonu
 
pfSense 2.0 Eğitim Sunumu
pfSense 2.0 Eğitim SunumupfSense 2.0 Eğitim Sunumu
pfSense 2.0 Eğitim Sunumu
 
linux-enterprise-cluster
linux-enterprise-clusterlinux-enterprise-cluster
linux-enterprise-cluster
 
Windows Server 2012 Network ve File System Yenilikleri
Windows Server 2012 Network ve File System YenilikleriWindows Server 2012 Network ve File System Yenilikleri
Windows Server 2012 Network ve File System Yenilikleri
 
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi YenilikleriWindows Server 2012 Network ve Dosya Sistemi Yenilikleri
Windows Server 2012 Network ve Dosya Sistemi Yenilikleri
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.com
 
Nginx sunu 2014
Nginx sunu 2014Nginx sunu 2014
Nginx sunu 2014
 
Snc moduler sunucu
Snc moduler sunucuSnc moduler sunucu
Snc moduler sunucu
 
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma SistemiPHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
PHP ve NATS ile
 Mikroservis Mesajlaşma Sistemi
 
Nutanix Teknik Dokuman
Nutanix Teknik DokumanNutanix Teknik Dokuman
Nutanix Teknik Dokuman
 
Linux Guvenligi V1.0
Linux Guvenligi V1.0Linux Guvenligi V1.0
Linux Guvenligi V1.0
 
Az 103 : Microsoft Azure Administrator - Bolum 3
Az 103 : Microsoft Azure Administrator - Bolum 3Az 103 : Microsoft Azure Administrator - Bolum 3
Az 103 : Microsoft Azure Administrator - Bolum 3
 
MongoDB - NoSQL Overview
MongoDB - NoSQL OverviewMongoDB - NoSQL Overview
MongoDB - NoSQL Overview
 
Microsoft Azure Sql Server HADR
Microsoft Azure Sql Server HADRMicrosoft Azure Sql Server HADR
Microsoft Azure Sql Server HADR
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden Gate
 
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
Chroot içinde {DNS, NTP, Nginx, PHP-FPM}
 
windows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over clusterwindows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over cluster
 

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 Yerleşimi
  • 2. Gündem • Ceph Yapıtaşları • Ceph Mimarisi • Ceph Üzerinde Veri Yerleşimi – 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ş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
  • 23. Ceph Üzerinde Veri Yerleşimi
  • 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