"CEPH Kurulumu" sayfasının sürümleri arasındaki fark
322. satır: | 322. satır: | ||
ceph-deploy mgr create zula212 | ceph-deploy mgr create zula212 | ||
ceph-deploy rgw create zula209 | ceph-deploy rgw create zula209 | ||
+ | |||
+ | |||
+ | === POOL Oluşturma, PG_NUM ve REPLICA Ayarları === | ||
+ | Replika sayisi 3, eger o an PG degraded durumunda ise yine 3 olacak sekilde (degrade durumunda kalan osd sayisi, veri kritik islerde yuksek tutmakta fayda var) conf dosyasi duzenlenir. Ayrica default pg sayisini belirlemek icin her bir osd icin 100 pg onerilmistir. Buna gore pg sayisi (OSD sayisi x100)/replika sayisi yani (4x12x100)/3=1600 olarak verilmistir. 2'nin kati olacak en yakin sayi 2048 oldugundan bu kapasitede bir CEPH kümesi için her pool'a toplamda verilebilecek pg sayısı en fazla 2048 olmalıdır. | ||
+ | |||
+ | [global] | ||
+ | osd pool default size = 3 # Write an object 3 times. | ||
+ | osd pool default min size = 3 # Allow writing two copy in a degraded state. | ||
+ | |||
+ | osd pool default pg num = 64 | ||
+ | osd pool default pgp num = 64 | ||
+ | |||
+ | Her bir pool için defaultta oluşturulacak pg sayısı 64 olarak yukarıda verilmiştir. Sahip olacagimiz toplam pg sayisi ise hesaba göre 2048'dir. Her bir pool icin bu sayiyi dagitmak dikkat isteyen diger bir istir. Bunun icin https://ceph.com/pgcalc/ sayfasinda bir hesaplama araci verilmistir. Buna gore pool'un gelecek yil buyume orani, kapasitenin ne kadarini kullanabilecegi ve replika sayisi gibi parametreler verilmistir. Yeni bir pool olustururken buna dikkat etmekte fayda var. | ||
+ | |||
+ | NOT: PG sayisi artirilabilir, ancak asla ilgili poolu yok edip olusturmadan azaltilamaz. Degisiklik isleminin cluster performansi uzerinde buyuk etkisi vardır. | ||
+ | |||
+ | Bunlarin disinda sudo ceph -s komutu ile clusterin durumuna bakildiginda: | ||
+ | cluster: | ||
+ | id: b49d69c7-e017-4f9f-b69b-57d3efe7987b | ||
+ | health: HEALTH_WARN | ||
+ | too few PGs per OSD (2 < min 30) | ||
+ | |||
+ | hatasi gorulmektedir. Bu pg sayisinin OSD bazında oldukca az olmasindan kaynaklidir. '''sudo ceph osd lspools komutu''' ile olusturulmus olan pool'lar listelenebilir. | ||
+ | 1 .rgw.root | ||
+ | 2 default.rgw.control | ||
+ | 3 default.rgw.meta | ||
+ | 4 default.rgw.log | ||
+ | |||
+ | Bunlarin pg sayisi ise asagidaki komutla alinir. | ||
+ | sudo ceph osd pool get .rgw.root pg_num | ||
+ | pg_num: 8 | ||
+ | sudo ceph osd pool get .rgw.root pgp_num | ||
+ | pgp_num: 8 | ||
+ | |||
+ | Her bir pool'da pg ve pgp sayisi 64 olacak sekilde asagidaki sekilde guncellendi. | ||
+ | sudo ceph osd pool set .rgw.root pg_num 64 | ||
+ | set pool 1 pg_num to 64 | ||
+ | sudo ceph osd pool set .rgw.root pgp_num 64 | ||
+ | set pool 1 pgp_num to 64 | ||
+ | |||
+ | Son olarak block device icin 1024 pg ve pgp sayisina sahip alan olusturuldu. Default'ta replika sayisi(size) 3 oldugundan dokunulmadi.Ancak degraded durumunda sayi 2'den 3'e artirildi. | ||
+ | sudo ceph osd pool create rbd 1024 | ||
+ | sudo ceph osd pool get rbd pgp_num | ||
+ | sudo ceph osd pool set rbd min_size 3 | ||
+ | set pool 5 min_size to 3 | ||
+ | |||
+ | cluster durumu tekrar kontrol edildiginde artik OK olarak guncellendi. | ||
+ | sudo ceph -s | ||
+ | cluster: | ||
+ | id: b49d69c7-e017-4f9f-b69b-57d3efe7987b | ||
+ | health: HEALTH_OK | ||
+ | |||
+ | services: | ||
+ | mon: 4 daemons, quorum zula209,zula210,zula211,zula212 | ||
+ | mgr: zula209(active), standbys: zula212 | ||
+ | osd: 48 osds: 47 up, 47 in | ||
+ | rgw: 1 daemon active | ||
+ | |||
+ | data: | ||
+ | pools: 5 pools, 1280 pgs | ||
+ | objects: 219 objects, 1.1 KiB | ||
+ | usage: 5.6 TiB used, 342 TiB / 348 TiB avail | ||
+ | pgs: 1280 active+clean | ||
+ | |||
+ | Böylece 342TB kapasiteli, 48 osd diske ve 1280 pg sayısına sahip bir CEPH kümesi kuruldu ve kullanıma hazır hale getirildi. |
12:08, 26 Haziran 2018 tarihindeki hâli
İçindekiler
- 1 İşletim Sistemi Kurulum Öncesi Yapılandırılması
- 1.1 İşletim sistemi Güncelllenmesi
- 1.2 /etc/hosts Dosyasının Düzenlenmesi
- 1.3 NTP ile Saat Senkronizasyonu
- 1.4 SSD Diskler İçin I/0 Scheduler ve Rotation Değerlerinin Değiştirilmesi
- 1.5 Apparmor Yazılımının Kapatılması
- 1.6 Updatedb Programın İptal Kapatılması
- 1.7 Disk read_ahead değerinin Arttırılması
- 1.8 XFS Dosya Sistemi Yapılandırması
- 2 CEPH Kümesi Kurulum ve Yapılandırma
İşletim Sistemi Kurulum Öncesi Yapılandırılması
İşletim sistemi Güncelllenmesi
/etc/hosts Dosyasının Düzenlenmesi
Sunucuların birbirinden haberdar olması için /etc/hosts dosyasına sunucu bilgileri IP hostname olacak şekilde eklendi.
NTP ile Saat Senkronizasyonu
/etc/security/limits.conf Dosyası Dosya Açma Limitlerinin Arttırılması Kullanıcıların açabileceği maksimum dosya tanımlayıcısı (file descriptor) sayısını /etc/security/limits.conf dosyasına aşağıdaki satırları ekleyerek arttırıyoruz.
* soft nofile 65000 * hard nofile 65000
SSD Diskler İçin I/0 Scheduler ve Rotation Değerlerinin Değiştirilmesi
SSD disklerin scheduler’i atanmış değerinden SSD diskler için daha uygun olan noop’a değiştirmek için: (SSD disk sde)
echo noop > /sys/block/sde/queue/scheduler
yazmak yeterli. SSD diskler klasik diskler gibi dönen hareketli parçalardan oluşmadığı için SSD diskleri kullanan işletim sistemlerinin I/O operasyonlarını bu durumu göz önüne alarak gerçekleştirmeleri gerekiyor. Bu nedenle SSD disklerin rotation değeri 0 olmalı. Mevcut durumu görmek için:
root@ceph1:/home/ceph# cat /sys/block/sde/queue/rotational 1
komutunu kullandığımızda değerin 1 olduğunu görüyoruz. Normalde işletim sisteminin diskin SSD olduğunu anlayıp bu değer 0 yapmasını bekliyoruz. Manüel olarak 0 yapmak için:
echo "1" > /sys/block/sde/queue/rotational
yazmak yeterli. Açılışta geçerli olması için echo ile başlayan komutları satırı /etc/rc.local’a ekleyebilirsiniz.
Apparmor Yazılımının Kapatılması
invoke-rc.d apparmor kill update-rc.d -f apparmor remove
Updatedb Programın İptal Kapatılması
Disk read_ahead değerinin Arttırılması
Disklerin atanmış değerleri olan 128, 2048 olarak değiştirildi. Mevcut değeri görmek için:
root@ceph1:/home/ceph# cat /sys/block/sde/queue/read_ahead_kb 128
Yeni değerin atanması:
root@ceph1:/home/ceph# echo 2084 > /sys/block/sde/queue/read_ahead_kb root@ceph1:/home/ceph# cat /sys/block/sde/queue/read_ahead_kb 2084
OSD diskleri için değerleri açılışta geçerli kılmak için aşağıdaki satırları /etc/rc.local dosyasına ekleyebilirsiniz.
echo 2084 > /sys/block/sdb/queue/read_ahead_kb echo 2084 > /sys/block/sdc/queue/read_ahead_kb echo 2084 > /sys/block/sdd/queue/read_ahead_kb echo 2084 > /sys/block/sde/queue/read_ahead_kb echo 2084 > /sys/block/sdf/queue/read_ahead_kb
read_ahead_kb değerinin arttırılması sıralı okuma (sequential read) performansınızı arttıracaktır. I/O örüntünüze göre bu değeri daha arttırarak performans kazanımı sağlayabilirsiniz. Bu değerin arttırılması hafıza kullanımının artmasına neden olacağı için bellek kullanımı üzerinde bir baskı oluşturabilir
XFS Dosya Sistemi Yapılandırması
Ceph XFS Dosya Sistemi Yapılandırması
Ceph’te ext4,btrfs ve xfs dosya sistemi olarak kullanılabiliyor. Btrfs’in henüz production için kullanımı önerilmiyor. Ceph belgelerinde production sistemler için xfs kullanımı önerildiği için kurulumu xfs üzerinden gerçekleştiriyoruz. Dosya sisteminin ne olacağı, mkfs ve mount opsiyonları ceph.conf dosyasında tanımlanıyor.
Dosya Sistemi Yaratılması
Disklerin dosya sistemini yaratırken mkfs.xfs programında ilk olarak size=2048 argümanını kullanıyoruz. Bunun nedeni ceph tarafından kullanılan Extended Attributes (XATTRs) daha fazla alan açmak. Size argümanı inode büyüklüğü tanımlamak için kullanılıyor. Atanmış değeri (default) 256 ki buda 256Byte’a karşılık geliyor. 512 Byte inode kullanımında ortalama 350 Byte’lık bir alan xattr kullanımına kalıyor. Bu değeri 2048 yaptığımızda yaklaşık1900 Byte alanı xattr için ayırmış oluyoruz.
mkfs.xfs programına argüman olarak kullandığımız opsiyonlardan bir diğeri finobt=1. Bu argüman xfs’in boş inode’ların takibini btree algoritması ile yapılmasını sağlıyor. Bu özelliği kullanmak için çekirdek sürümünüzün 3.15 xfsprogs sürümünüzün 3.2 ve üzeri olması gerekiyor.
Ubuntu 14.04 ile xfsprogs sürümü 3.1.9 olarak geliyor. xfsprogs 3.2 ve üzerinde gelen finobt argümanının kullanabilmek için xfsprogs paketini aşağıdaki komutları kullanarak güncelliyoruz
wget -c http://mirrors.kernel.org/ubuntu/pool/main/x/xfsprogs/xfsprogs_3.2.1ubuntu1_amd64.deb dpkg -i xfsprogs_3.2.1ubuntu1_amd64.deb
mkfs.xfs programında kullandığımız üçüncü argüman crc=1. Bu argüman xfs’in metadatadaki bozulmaları karcı CRC32 algoritmasını kullanarak denetlemesini sağlıyor. Hepsi bir arada komut sdb diski için dosya sistemi yaratmak istersek:
mkfs.xfs -m crc=1,finobt=1 -f -i size=2048 /dev/sdb
halini alıyor.
Dosya Sistemi Mount Opsiyonları
Örnek olarak verdiğimizi sdb diskinin fstab’a eklemek için:
/dev/sdb /disk1 xfs rw,noatime,inode64,logbsize=256k,delaylog 0 1
Kullandığımız mount opsiyonları açıklamaları:
- noatime: Dosya sisteminin en son erişim zamanı bilgisini tutmaması için
- inode64: 1TByte üzeri disklerde kullanılması önerilen ve inode’ların 64 bit olarak tanımlanması
- logbsize=256k : Çok fazla okuma yazma yapan dosya sistemleri için artırılması öneriliyor. Atanmış değeri 32k
- delaylog: Metadata bilgisinin bellekte mümkün olduğunca tutulup yapılan I/O miktarını azaltan bir opsiyon.
Ceph’te dosya sistemini yaratılırken hangi opsiyonların kullanılacağını ceph.conf’ta [osd] başlığı altında tanımlıyoruz. Elle mkfs yapmanıza yada mount etmenize gerek yok.
[osd] osd mkfs type = xfs osd mkfs options xfs = -m crc=1,finobt=1 -f -i size=2048 osd mount options xfs = rw,noatime,inode64,logbsize=256k,delaylog
CEPH Kümesi Kurulum ve Yapılandırma
Paket Kurulumları
Döküman yazıldığında en güncel olan Mimic versiyonu (13.2.0) Ubuntu 16.04 işletim sistemine nasıl kurulduğu burada anlatılmaktadır. Bunun için öncelikle repoların düzenlenmesi gerekmektedir. Kurulum dökümanı her bis OSD dost üzerinde 12 adet fiziksel disk bulunan, ayrıca nvme SSD yer alan 4 ayrı sunucudan oluşmaktadır. zula209, zula210, zula211 ve zula212. Her bir fiziksel sunucu 10G ve 40G kartlara sahiptir, dolayısıyla client/pulic network 192.168.56.0/24 10G interface üzerinde yapılandırılırken replika vb işlemler için trafiğin daha fazla olacağı cluster network 192.168.200.0/24 40G interface ile yapılandırılacaktır. zula209 ceph-admin olarak seçilip tüm kurulumlar ceph-deploy ile diğer hostlar üzerinde de yapılacaktır. Yönetim ağı ise gigabit interface olup 172.16.2.0/24 networkünde yer almaktadır.
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - # ceph release: mimic, ubuntu release: xenial sudo apt-add-repository 'deb https://download.ceph.com/debian-mimic/ xenial main'
CEPH bileşenlerinin kurulumu ve yapılandırılması ceph-deploy aracı ile tek bir host üzerinden kendi ve diğerleri üzerine gerçekleştirilecektir.
sudo apt update sudo apt install ceph-deploy
CEPH Bileşenleri İndirme ve Yapılandırma
ceph-deploy üzerinden tüm hostlara gerekli paketleri indirmek için ceph-deploy adında bir kullanıcı oluşturulur ve bu kullanıcı üzerinden tüm kurulum işlemleri yapılır. İlgili sunucu üzerinden bu kullanıcı ile diğer kurulum yapılacak fiziksel sunuculara erişim şifresiz bir şekilde yapılacak şekilde yapılandırılmalıdır. Kurulum için my-cluster adında bir dizin oluşturulur ve bu dizinde ceph.conf yetki dosyası, yetkilendirme için gerekli keyring dosyaları ve log burada yer alır.
su - ceph-deploy mkdir my-cluster cd my-cluster
ceph-deploy komutu bir dizi komut serisini çalıştırıp logları ekrana basar. Ola ki bu süreçte bir sorun yaşandı yaptığı işlemleri geri almaya çalışır. Aşağıda böyle bir işlem sonrasında yarım kalan işlerin temizlenmesi için çalıştırılması gereken komutlar gösterilmektedir.
ceph-deploy purge {ceph-node} [{ceph-node}] ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys rm ceph.*
- İlgili dizin altında aşağıdaki komutu calistirilir, ceph.conf dosyasi dizinde olusur.
ceph-deploy new zula209
Bu dosyaya cluster ve public ip leri asagidaki sekilde eklenir. Ayrıca yeni bir pool oluşturulduğunda bu pool için default ayarlar burada verilebilir. Örneğin parametre verilmeden oluşturulacak bir pool için replika sayısı 3, pg ve pgp sayısı 64 olarak ayarlanması için
public network = 192.168.56.0/24 cluster network = 192.168.200.0/24 # the number of replica is 3 osd pool default size = 3 # Write an object 3 times. osd pool default min size = 3 # Allow writing two copy in a degraded state. # the number of pg per osd is 100 osd pool default pg num = 64 osd pool default pgp num = 64
ceph.conf dosyası düzenlendikten sonra her bir host için kurulum işlemlerine aşağıdaki komutla başlanabilir. Burada dikkat edilmesi gereken paket kurulumları esnasında ekrana basılan loglarda CEPH sürümü ve tüm fiziksel sunuculara ilgili paketlerin kurulumlarının eksiksiz yapılmasıdır.
ceph-deploy install zula209 zula210 zula211 zula212
Kurulumlardan sonra gerekli yetkilendirme dosyalarının dizine aktarılabilmesi için aşağıdaki komut çalıştırılır.
ceph-deploy mon create-initial
$ ls -ll total 64 -rw------- 1 ceph-deploy ceph-deploy 113 Jun 7 07:25 ceph.bootstrap-mds.keyring -rw------- 1 ceph-deploy ceph-deploy 113 Jun 7 07:25 ceph.bootstrap-mgr.keyring -rw------- 1 ceph-deploy ceph-deploy 113 Jun 7 07:25 ceph.bootstrap-osd.keyring -rw------- 1 ceph-deploy ceph-deploy 113 Jun 7 07:25 ceph.bootstrap-rgw.keyring -rw------- 1 ceph-deploy ceph-deploy 151 Jun 7 07:25 ceph.client.admin.keyring -rw-rw-r-- 1 ceph-deploy ceph-deploy 267 Jun 7 07:23 ceph.conf -rw-rw-r-- 1 ceph-deploy ceph-deploy 30148 Jun 7 07:25 ceph-deploy-ceph.log -rw------- 1 ceph-deploy ceph-deploy 73 Jun 7 07:21 ceph.mon.keyring -rw-r--r-- 1 root root 1645 Oct 15 2015 release.asc
Aşağıdaki komut ile cephcli komutlari bulundugumuz nodda yetkilendirilir. Boylece yetkilendirme istenen ceph komutlari calistirilir. Ornegin zula210 dedigimizde zula209 uzerinde olusturulan anahtarlar ilgili sunucuda /etc/ceph/ceph.client.admin.keyring dosyasina yazilarak erisim yetkisi o sunucuya da taninmis olur. Ayrıca Luminious versiyonu ve sonrası kurulumlar için mgr oluşturulur.
ceph-deploy admin zula209 zula210 zula211 zula212 ceph-deploy mgr create zula209
Böylece tüm temel bileşenlerinin kurulumları ve temel seviyede yapılandırılması tamamlanmış olur. Artık ceph -s veya ceph health komutları ile ceph kümesinin durumlarına bakılabilir.
cluster: id: 1521e924-1b18-4192-92b2-448dd9524038 health: HEALTH_OK services: mon: 1 daemons, quorum zula209 mgr: zula209(active) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:
OSD Disk Ekleme ve Yönetimi
Yukarıda çalıştırılan komutun çıktısına bakıldığında ayakta ve çalışan osd sayısı sıfır olarak görülmektedir. Dolayısıyla ceph kümesinde kullanılabilir alan ve kapasite de bulunmamaktadır. Bu başlık altında her bir host altında yer alan 12 ayrı HDD disk yapılandırılıp kullanılabilir hale getirilecektir. Burada storage backend olarak sahip olduğu pekçok avantajı nedeniyle Bluestore storage backend olarak kurulacaktır. Mimic versiyonunda default olarak FileStore değil BlueStore artık gelmektedir. Bu storage backendleri ile ilgili bilgiler aşağıdan erişilebilir.
İlgili sunucular üzerinde kurulum yapmadan önce eskiden kalan ceph lvm volumeler var ise silinmelidir, diğer türlü hata verecek ve osd diski kümeye eklemeyecektir.
vgscan vgremove ceph-c6cc6d67-0de2-4cd0-b9fa-384ecbfc6a00
Bluestore yapılandırılırken block.db ve block.wal dosyaları performans artırmak için nvme ssd diskler üzerinde (partition) aşağıdaki komut ile tutulabilir, ancak birden fazla osd'nin aynı partition kullanması başlangıçta çalışıyorken ilerleyen zamanlarda bir hata alması durumunda o sunucu üzerindeki tüm OSD'lerin id maplerini karıştırmasi nedeniyle büyük bir soruna neden olabilir. Bu konuda wiki sayfasında ayrıca bir başlıkta bu tecrübelere yer verilecektir.
- block.db ve block.wal islerini nvme ssd diski uzerinde yapabilmek icin sirasiyla 120 ve 240G partition fdisk ile olusturulur. Ardından ceph-deploy komutu ile osd disk oluşturulur.
Device Start End Sectors Size Type /dev/nvme0n1p1 2048 251660287 251658240 120G Linux filesystem /dev/nvme0n1p2 251660288 754976767 503316480 240G Linux filesystem sudo ceph-deploy osd create zula209 --data /dev/sdb --block-db /dev/nvme0n1p1 --block-wal /dev/nvme0n1p2
- block.db ve block.wal eğer block verinin yazılacağı diskte oluşturulacaksa aşağıdaki komut çalıştırılır. Böylece fiziksel sunucu üzerinde yer alan bir fiziksel disk osd disk olarak kümeye eklenir.
sudo ceph-deploy osd create zula209 --data /dev/sdb
Benzer sekilde diger osd disklerde olusturulur ve ceph osd tree komutu ile durumlarina bakilir.
for i in `echo sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm`; do ceph-deploy osd create zula209 --data /dev/$i; done
zula210, zula211 ve zula212'de de benzer komutla diskler olusturulur ve osd'lerin durumuna bakilir.
Var olan osd diskler asagidaki sekilde gorulebilir.
$ sudo ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 7.39459 root default -3 7.39459 host zula209 0 hdd 7.39459 osd.0 up 1.00000 1.00000
Ayrica ceph dizini sembolik linkleri de asagidaki sekilde kontrol edilmelidir. Bu yapılandırmada .db ve .wal dosyaları ssd üzerinde oluşturulduğundan sembolik linkle bu disk bölümüne bağlanmıştır. type dosyasi icerisinde bluestore yazilidir. Bunun disinda block wal ve db nvme linklidir. vgscan ile bakildiginda ceph-3f... volume grubu olusturulmustur. Ek kontroller icin lsblk ve blkid komutlari da kullanilabilir.
$ sudo ls /var/lib/ceph/osd/ceph-0 -ll total 56 -rw-r--r-- 1 ceph ceph 189 Jun 7 07:32 activate.monmap lrwxrwxrwx 1 ceph ceph 93 Jun 7 07:32 block -> /dev/ceph-3f44b49a-ff3e-489a-bbf9-af3dd2ffd642/osd-block-ec84a9fa-0b1a-4f33-8ad2-b1a956e4fe4f lrwxrwxrwx 1 root root 14 Jun 7 07:32 block.db -> /dev/nvme0n1p1 lrwxrwxrwx 1 root root 14 Jun 7 07:32 block.wal -> /dev/nvme0n1p2 -rw-r--r-- 1 ceph ceph 2 Jun 7 07:32 bluefs -rw-r--r-- 1 ceph ceph 37 Jun 7 07:32 ceph_fsid -rw-r--r-- 1 ceph ceph 37 Jun 7 07:32 fsid -rw------- 1 ceph ceph 55 Jun 7 07:32 keyring -rw-r--r-- 1 ceph ceph 8 Jun 7 07:32 kv_backend -rw-r--r-- 1 ceph ceph 21 Jun 7 07:32 magic -rw-r--r-- 1 ceph ceph 4 Jun 7 07:32 mkfs_done -rw-r--r-- 1 ceph ceph 41 Jun 7 07:32 osd_key -rw-r--r-- 1 ceph ceph 15 Jun 7 07:32 path_block.db -rw-r--r-- 1 ceph ceph 15 Jun 7 07:32 path_block.wal -rw-r--r-- 1 ceph ceph 6 Jun 7 07:32 ready -rw-r--r-- 1 ceph ceph 10 Jun 7 07:32 type -rw-r--r-- 1 ceph ceph 2 Jun 7 07:32 whoami
Bu arada sorun olmasi durumunda kalan osd'yi cikarmak icin asagidaki komutlar kullanilir. Ornek id 0'da olan osd icin:
sudo ceph osd down 0; sudo ceph osd destroy 0 --yes-i-really-mean-it;ceph osd rm 0
Ayrica stderr: Device /dev/sdd not found (or ignored by filtering) gibilerinden bir hata almasi durumunda asagidaki islem yapilir. Onceden fdisk ile disk partitionlara bolunup silinse dahi mpt bilgisinin silinmesi gerekiyor. Bu arada osd yapmak istediginiz diskin isletim sisteminin yuklu oldugu root diski olmadigindan emin olmak gerekir.
dd if=/dev/zero of=/dev/sdd count=1 sudo ceph-deploy osd create zula209 --data /dev/sdd --block-db /dev/nvme0n1p1 --block-wal /dev/nvme0n1p2
Son olarak osd disklerin ve ceph kümesinin durumu aşağıdaki komutlarla kontrol edilip diğer sürece başlanır.
sudo ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 354.94043 root default -3 88.73511 host zula209 0 hdd 7.39459 osd.0 up 1.00000 1.00000 1 hdd 7.39459 osd.1 up 1.00000 1.00000 2 hdd 7.39459 osd.2 up 1.00000 1.00000 3 hdd 7.39459 osd.3 up 1.00000 1.00000 4 hdd 7.39459 osd.4 up 1.00000 1.00000 5 hdd 7.39459 osd.5 up 1.00000 1.00000 6 hdd 7.39459 osd.6 up 1.00000 1.00000 7 hdd 7.39459 osd.7 up 1.00000 1.00000 8 hdd 7.39459 osd.8 up 1.00000 1.00000 9 hdd 7.39459 osd.9 up 1.00000 1.00000 10 hdd 7.39459 osd.10 up 1.00000 1.00000 11 hdd 7.39459 osd.11 up 1.00000 1.00000 -5 88.73511 host zula210 12 hdd 7.39459 osd.12 up 1.00000 1.00000 13 hdd 7.39459 osd.13 up 1.00000 1.00000 14 hdd 7.39459 osd.14 up 1.00000 1.00000 15 hdd 7.39459 osd.15 up 1.00000 1.00000 16 hdd 7.39459 osd.16 up 1.00000 1.00000 17 hdd 7.39459 osd.17 up 1.00000 1.00000 18 hdd 7.39459 osd.18 up 1.00000 1.00000 19 hdd 7.39459 osd.19 up 1.00000 1.00000 20 hdd 7.39459 osd.20 up 1.00000 1.00000 21 hdd 7.39459 osd.21 up 1.00000 1.00000 22 hdd 7.39459 osd.22 up 1.00000 1.00000 23 hdd 7.39459 osd.23 up 1.00000 1.00000 -7 88.73511 host zula211 24 hdd 7.39459 osd.24 up 1.00000 1.00000 25 hdd 7.39459 osd.25 up 1.00000 1.00000 26 hdd 7.39459 osd.26 up 1.00000 1.00000 27 hdd 7.39459 osd.27 up 1.00000 1.00000 28 hdd 7.39459 osd.28 up 1.00000 1.00000 29 hdd 7.39459 osd.29 up 1.00000 1.00000 30 hdd 7.39459 osd.30 up 1.00000 1.00000 31 hdd 7.39459 osd.31 up 1.00000 1.00000 32 hdd 7.39459 osd.32 up 1.00000 1.00000 33 hdd 7.39459 osd.33 up 1.00000 1.00000 34 hdd 7.39459 osd.34 up 1.00000 1.00000 35 hdd 7.39459 osd.35 up 1.00000 1.00000 -9 88.73511 host zula212 36 hdd 7.39459 osd.36 up 1.00000 1.00000 37 hdd 7.39459 osd.37 up 1.00000 1.00000 38 hdd 7.39459 osd.38 up 1.00000 1.00000 39 hdd 7.39459 osd.39 up 1.00000 1.00000 40 hdd 7.39459 osd.40 up 1.00000 1.00000 41 hdd 7.39459 osd.41 up 1.00000 1.00000 42 hdd 7.39459 osd.42 up 1.00000 1.00000 43 hdd 7.39459 osd.43 up 1.00000 1.00000 44 hdd 7.39459 osd.44 up 1.00000 1.00000 45 hdd 7.39459 osd.45 up 1.00000 1.00000 46 hdd 7.39459 osd.46 up 1.00000 1.00000 47 hdd 7.39459 osd.47 up 1.00000 1.00000
CEPH Servisleri Oluşturma
Birden fazla monitör servisinin eklenmesi gerekmektedir, bir tanesi gittiğinde ceph kümesi diğer kalan monitörler üzerinden devam edebilmektedir. Bu örnekte osd hostlar üzerinde birden fazla monitör servisi çalıştırılmaktadır. Ayrı bir sunucu üzerinden çalışması daha iyi olabilecektir. Bunun dışında mgr ve rgw gibi servislerde bu fiziksel sunucular üzerinde yedekli olacak şekilde basitçe yapılandırılmıştır.
$ sudo ceph -s cluster: id: b49d69c7-e017-4f9f-b69b-57d3efe7987b health: HEALTH_WARN too few PGs per OSD (2 < min 30) services: mon: 4 daemons, quorum zula209,zula210,zula211,zula212 mgr: zula209(active), standbys: zula212 osd: 48 osds: 48 up, 48 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 219 objects, 1.1 KiB usage: 5.7 TiB used, 349 TiB / 355 TiB avail pgs: 32 active+clean
Tum OSD'ler calisiyor ve ayakta. zula210,zula211 ve zula212'ye monitor eklemek icin
ceph-deploy mon add zula210 ceph-deploy mon add zula211 ceph-deploy mon add zula212
mgr ve rgw nodlarini eklemek icin sirasiyla asagidaki komutlar calistirilir.
ceph-deploy mgr create zula212 ceph-deploy rgw create zula209
POOL Oluşturma, PG_NUM ve REPLICA Ayarları
Replika sayisi 3, eger o an PG degraded durumunda ise yine 3 olacak sekilde (degrade durumunda kalan osd sayisi, veri kritik islerde yuksek tutmakta fayda var) conf dosyasi duzenlenir. Ayrica default pg sayisini belirlemek icin her bir osd icin 100 pg onerilmistir. Buna gore pg sayisi (OSD sayisi x100)/replika sayisi yani (4x12x100)/3=1600 olarak verilmistir. 2'nin kati olacak en yakin sayi 2048 oldugundan bu kapasitede bir CEPH kümesi için her pool'a toplamda verilebilecek pg sayısı en fazla 2048 olmalıdır.
[global] osd pool default size = 3 # Write an object 3 times. osd pool default min size = 3 # Allow writing two copy in a degraded state.
osd pool default pg num = 64 osd pool default pgp num = 64
Her bir pool için defaultta oluşturulacak pg sayısı 64 olarak yukarıda verilmiştir. Sahip olacagimiz toplam pg sayisi ise hesaba göre 2048'dir. Her bir pool icin bu sayiyi dagitmak dikkat isteyen diger bir istir. Bunun icin https://ceph.com/pgcalc/ sayfasinda bir hesaplama araci verilmistir. Buna gore pool'un gelecek yil buyume orani, kapasitenin ne kadarini kullanabilecegi ve replika sayisi gibi parametreler verilmistir. Yeni bir pool olustururken buna dikkat etmekte fayda var.
NOT: PG sayisi artirilabilir, ancak asla ilgili poolu yok edip olusturmadan azaltilamaz. Degisiklik isleminin cluster performansi uzerinde buyuk etkisi vardır.
Bunlarin disinda sudo ceph -s komutu ile clusterin durumuna bakildiginda:
cluster: id: b49d69c7-e017-4f9f-b69b-57d3efe7987b health: HEALTH_WARN too few PGs per OSD (2 < min 30)
hatasi gorulmektedir. Bu pg sayisinin OSD bazında oldukca az olmasindan kaynaklidir. sudo ceph osd lspools komutu ile olusturulmus olan pool'lar listelenebilir. 1 .rgw.root 2 default.rgw.control 3 default.rgw.meta 4 default.rgw.log
Bunlarin pg sayisi ise asagidaki komutla alinir.
sudo ceph osd pool get .rgw.root pg_num pg_num: 8 sudo ceph osd pool get .rgw.root pgp_num pgp_num: 8
Her bir pool'da pg ve pgp sayisi 64 olacak sekilde asagidaki sekilde guncellendi.
sudo ceph osd pool set .rgw.root pg_num 64 set pool 1 pg_num to 64 sudo ceph osd pool set .rgw.root pgp_num 64 set pool 1 pgp_num to 64
Son olarak block device icin 1024 pg ve pgp sayisina sahip alan olusturuldu. Default'ta replika sayisi(size) 3 oldugundan dokunulmadi.Ancak degraded durumunda sayi 2'den 3'e artirildi.
sudo ceph osd pool create rbd 1024 sudo ceph osd pool get rbd pgp_num sudo ceph osd pool set rbd min_size 3 set pool 5 min_size to 3
cluster durumu tekrar kontrol edildiginde artik OK olarak guncellendi.
sudo ceph -s cluster: id: b49d69c7-e017-4f9f-b69b-57d3efe7987b health: HEALTH_OK services: mon: 4 daemons, quorum zula209,zula210,zula211,zula212 mgr: zula209(active), standbys: zula212 osd: 48 osds: 47 up, 47 in rgw: 1 daemon active data: pools: 5 pools, 1280 pgs objects: 219 objects, 1.1 KiB usage: 5.6 TiB used, 342 TiB / 348 TiB avail pgs: 1280 active+clean
Böylece 342TB kapasiteli, 48 osd diske ve 1280 pg sayısına sahip bir CEPH kümesi kuruldu ve kullanıma hazır hale getirildi.