CEPH Kurulumu

BulutWiki sitesinden
Admin (mesaj | katkılar) tarafından oluşturulmuş 11:23, 26 Haziran 2018 tarihli sürüm
Şuraya atla: kullan, ara

İş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.*
  1. İ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: