«

»

Ağu 03

Ubuntu 22.04 LTS (Jammy Jellyfish) ve Proxmox VE 7.2 üzerine temel CEPH-QUINCY (V17.2.3) kurulumları

Bu dökümanın oluşturulmasında, birlikte çalıştığımız mesai arkadaşlarım Öğr. Gör. Murat ÖZALP, Öğr. Gör Semih KARACA’nın büyük katkıları vardır.

Manuel kurulum yapıyoruz amele usulü 🙂

https://docs.ceph.com/en/latest/install/manual-deployment/

Bir tane Proxmox makine, 3 tane Proxmox Ceph makine, 3 tane Linux Ceph makine

Bir tane Proxmox makine: 10.x.x.150 ip adresli ve test amaçlı vm, container yapıları bu makinede koşacak.

3 tane Proxmox makine: frontend kısmı ipleri sırayla 10.x.x.151,

10.x.x.152, 10.x.x.153

backend (ceph) kısmı ipleri sırayla 172.x.x.151,

172.x.x.152, 172.x.x.153

3 tane Linux makine: frontend kısmı ipleri sırayla 10.x.x.154,

10.x.x.155, 10.x.x.156

backend (ceph) kısmı ipleri sırayla 172.x.x.154,

172.x.x.155, 172.x.x.156

 

Tüm makinelerde 250GB ssd ile 500GB nvme diskler var. Tüm makinelerde 1Gbps 2 tane ethernet var.

Install Linux Ceph Storage Cluster

apt-get install ceph ceph-mds

SSH parolasız bağlanma

ssh-keygen -t rsa

ssh-copy-id root@10.x.x.152

ssh-copy-id root@10.x.x.153

Kurulum

root@ceph01:~# uuidgen

8bd9c2e7-6131-4dc6-93bb-667b4de89970

 

nano /etc/ceph/ceph.conf

[global]

fsid = 8bd9c2e7-6131-4dc6-93bb-667b4de89970

mon initial members = ceph01,ceph02,ceph03

mon host = 10.x.x.151,10.x.x.152,10.x.x.153

public network = 10.x.x.0/24

cluster network = 172.x.x.0/24

auth cluster required = cephx

auth service required = cephx

auth client required = cephx

osd journal size = 1024

osd pool default size = 3

osd pool default min size = 2

osd pool default pg num = 32

osd pool default pgp num = 32

osd crush chooseleaf type = 1

osd pool default pg autoscale mode = off

 

nano /etc/hosts

10.x.x.151      ceph01

10.x.x.152      ceph02

10.x.x.153      ceph03

 

root@ceph01:~# ceph-authtool –create-keyring /tmp/ceph.mon.keyring –gen-key -n mon. –cap mon ‘allow *’

creating /tmp/ceph.mon.keyring

 

root@ceph01:~# ceph-authtool –create-keyring /etc/ceph/ceph.client.admin.keyring –gen-key -n client.admin –cap mon ‘allow *’ –cap osd ‘allow *’ –cap mds ‘allow *’ –cap mgr ‘allow *’

creating /etc/ceph/ceph.client.admin.keyring

 

root@ceph01:~# ceph-authtool –create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring –gen-key -n client.bootstrap-osd –cap mon ‘profile bootstrap-osd’ –cap mgr ‘allow r’

creating /var/lib/ceph/bootstrap-osd/ceph.keyring

 

root@ceph01:~# ceph-authtool /tmp/ceph.mon.keyring –import-keyring /etc/ceph/ceph.client.admin.keyring

importing contents of /etc/ceph/ceph.client.admin.keyring into /tmp/ceph.mon.keyring

 

root@ceph01:~# ceph-authtool /tmp/ceph.mon.keyring –import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring

importing contents of /var/lib/ceph/bootstrap-osd/ceph.keyring into /tmp/ceph.mon.keyring

 

root@ceph01:~# chown ceph:ceph /tmp/ceph.mon.keyring

root@ceph01:~# monmaptool –create –add ceph01 10.x.x.151 –add ceph02 10.x.x.152 –add ceph03 10.x.x.153 –fsid 8bd9c2e7-6131-4dc6-93bb-667b4de89970 /tmp/monmap

monmaptool: monmap file /tmp/monmap

setting min_mon_release = octopus

monmaptool: set fsid to 8bd9c2e7-6131-4dc6-93bb-667b4de89970

monmaptool: writing epoch 0 to /tmp/monmap (3 monitors)

 

root@ceph01:~# scp /tmp/monmap root@ceph02:/tmp/

monmap

root@ceph01:~# scp /tmp/monmap root@ceph03:/tmp/

monmap

root@ceph01:~# scp /etc/ceph/ceph.client.admin.keyring root@ceph02:/etc/ceph/

ceph.client.admin.keyring

root@ceph01:~# scp /etc/ceph/ceph.client.admin.keyring root@ceph03:/etc/ceph/

ceph.client.admin.keyring

root@ceph01:~# scp /tmp/ceph.mon.keyring root@ceph02:/tmp/

ceph.mon.keyring

root@ceph01:~# scp /tmp/ceph.mon.keyring root@ceph03:/tmp/

ceph.mon.keyring

root@ceph01:~# scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@ceph02:/var/lib/ceph/bootstrap-osd/

ceph.keyring

root@ceph01:~# scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@ceph03:/var/lib/ceph/bootstrap-osd/

ceph.keyring

 

Her hostta

Hostname = ceph01, ceph02, ceph03 şeklinde gidiyorsa aşağıdaki komutlarda değişken kullanılabilir.

 

sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph01

sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph02

sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph03

 

chown ceph:ceph /tmp/ceph.mon.keyring

chown ceph:ceph /tmp/ceph.mon.keyring

chown ceph:ceph /tmp/ceph.mon.keyring

 

sudo -u ceph ceph-mon –mkfs -i ceph01 –monmap /tmp/monmap –keyring /tmp/ceph.mon.keyring

sudo -u ceph ceph-mon –mkfs -i ceph02 –monmap /tmp/monmap –keyring /tmp/ceph.mon.keyring

sudo -u ceph ceph-mon –mkfs -i ceph03 –monmap /tmp/monmap –keyring /tmp/ceph.mon.keyring

 

systemctl start ceph-mon@ceph01

systemctl enable ceph-mon@ceph01

systemctl status ceph-mon@ceph01.service

 

systemctl start ceph-mon@ceph02

systemctl enable ceph-mon@ceph02

systemctl status ceph-mon@ceph02.service

 

systemctl start ceph-mon@ceph03

systemctl enable ceph-mon@ceph03

systemctl status ceph-mon@ceph03.service

 

sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph01

sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph02

sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph03

 

ceph auth get-or-create mgr.ceph01 mon ‘allow profile mgr’ osd ‘allow *’ mds ‘allow *’ > /var/lib/ceph/mgr/ceph-ceph01/keyring

ceph auth get-or-create mgr.ceph02 mon ‘allow profile mgr’ osd ‘allow *’ mds ‘allow *’ > /var/lib/ceph/mgr/ceph-ceph02/keyring

ceph auth get-or-create mgr.ceph03 mon ‘allow profile mgr’ osd ‘allow *’ mds ‘allow *’ > /var/lib/ceph/mgr/ceph-ceph03/keyring

 

systemctl restart ceph-mgr@ceph01

systemctl restart ceph-mgr@ceph02

systemctl restart ceph-mgr@ceph03

 

systemctl enable ceph-mgr@ceph01

systemctl enable ceph-mgr@ceph02

systemctl enable ceph-mgr@ceph03

 

 

Cluster kuruldu. Tek hosta bunları yaz:

ceph mon enable-msgr2

ceph osd set noup # OSD oluşturma işlemini hemen yaymasın. Aşağıda bu flag’i kaldıracağız.

 

Disk bölümlerini ve OSD’leri oluştur

1. Yöntem: Manuel

for i in a b c e f g ; do echo -e “dp\n1\nd\n2\nw” | fdisk /dev/sd$i; done        # sda, sdb, vb. tüm disklerdeki partitionları sil.

for i in a b c e f g ; do ceph-volume lvm zap /dev/sd$i ; done

for i in a b c e f g ; do vgcreate ceph-block-sd$i /dev/sd$i; done

for i in a b c e f g ; do lvcreate -l 50%FREE -n block-sd$i-1 ceph-block-sd$i; done

for i in a b c e f g ; do lvcreate -l 100%FREE -n block-sd$i-2 ceph-block-sd$i; done

for i in a b c e f g ; do for j in 1 2; do ceph-volume lvm create –bluestore –data ceph-block-sd$i/block-sd$i-$j; done; done

 

2. Yöntem: Otomatik (hepsini yapıyor)

ceph-volume lvm zap –destroy /dev/sda  # diskte partition varsa bu komutla uçur. (sda nvme0n1 olabilir diske göre)

ceph-volume lvm batch –osds-per-device 2 /dev/sdX # diskte partition yok ve sıfır disk ise

NoUp flag’ini kaldır

ceph osd unset noup #tek host # OSD oluşturma tamamlandı ve işlemlere başlat.

Dashboard

 

apt install ceph-mgr-dashboard

ceph mgr module enable dashboard # Bu satırda hata veriyor. Aşağıda “Bug düzeltme” başlığında çözümü var.

ceph dashboard create-self-signed-cert

ceph dashboard ac-user-create (kullanıcı adı) (şifre) administrator

https://(node ip-adı):8443

Bug düzeltme

# ceph mgr module enable dashboard

Üstteki komutu verince alttaki hatayı veriyor:

Error ENOENT: module ‘dashboard’ reports that it cannot run on the active manager daemon: invalid version number ‘8.5.2+ds1’ (pass –force to force enablement)

 

Hatanın sebebi, python3-cheroot paketindeki bir hata. Bunun için yeni sürüm çıkarmışlar. Doğrudan kendimiz indirip kurarsak düzeliyor:

wget http://ftp.de.debian.org/debian/pool/main/p/python-cheroot/python3-cheroot_8.6.0+ds1-3_all.deb

dpkg -i python3-cheroot_8.6.0+ds1-3_all.deb

 

Detay: https://bugs.launchpad.net/ubuntu/+source/ceph/+bug/1967139

Bir diske birden fazla OSD oluşturma

ceph-volume lvm batch –osds-per-device 4 /dev/sdX -> çok iyi

 

OSD yanlışıkla silinince Pool’u destroy etme

pveceph pool destroy bseuprmxcephpool –force

 

Servisleri restart etme sırası:

Mon, mgr ve osd

Proxmox kurulumu (Proxmox 7.2 içinde Ceph Pasific 16 sürümü geliyor)

Proxmoxları kurup 3 makinede de default Ceph kurduktan sonra, Proxmox web arayüzünden bu 3 makineyide mon ve mgr yaptık.

Sonrasında Ceph'in 17 sürümüne yükseltmek için aşağıdaki adımları uyguladık.

sed -i 's/pacific/quincy/' /etc/apt/sources.list.d/ceph.list

/etc/apt/sources.list.d/ceph.list dosyası aşağıdaki gibi olacak.

deb http://download.proxmox.com/debian/ceph-quincy bullseye main

Set the ‘noout’ Flag

Set the noout flag for the duration of the upgrade (optional, but recommended):

ceph osd set noout

Or via the GUI in the OSD tab (Manage Global Flags).

Upgrade on each Ceph Cluster Node

Upgrade all your nodes with the following commands or by installing the latest updates via the GUI. It will upgrade the Ceph on your node to Quincy.

apt update
apt full-upgrade

Makineleri tek tek reboot ettikten sonra Ceph’in artık proxmoxta 16’dan 17 sürümüne geçtiğini göreceksiniz.

ceph-volume lvm zap –destroy /dev/nvmen01      ile proxmox’un nvme diskleri osd oluşturma için hazır hale getiriyoruz.

Guiden her nvme için sadece 1 osd yapılıyor ve OSD’ler yapılırken mgr PG oluşuyor. Aynı zamanda osd keyringleri. Gui’den 1 den fazla osd yapamadığımız için ve keyringleri manuel oluşturmamak için Gui ile her hostta 1 osd oluşturuyoruz. Sonrasında ilk hosttaki osd’yi out deyip stop ettikten sonra destroy ediyoruz. Sonra komut satırında o hosttaki nvme diske 2 veya 4 osd yapmak istersek:

ceph-volume lvm batch –osds-per-device 4 /dev/nvme0n1 diyoruz.

Bu işlemi 3 hostta yukarıdaki açıklamadaki sırayla yapıyoruz.

Proxmox’ta bu kadar basit.

 

Benchmark

fio ile rbdengine kullanarak Ceph seviyesinde io testi yapmak için. Kaynak: https://tracker.ceph.com/projects/ceph/wiki/Benchmark_Ceph_Cluster_Performance

 

Test için Pool oluşturma:

ceph osd pool create bseu-linux-ceph-images 128 128

ceph osd pool application enable bseu-linux-ceph-images rbd

 

Test için disk imajı oluşturma:

rbd create image01 –size 20480 –pool  bseu-linux-ceph-images

rbd map image01 –pool  bseu-linux-ceph-images –name client.admin

/sbin/mkfs.ext4 -m0 /dev/rbd/ bseu-linux-ceph-images/image01

mkdir /mnt/ceph-block-device1

mount /dev/rbd/ bseu-linux-ceph-images/image01 /mnt/ceph-block-device1

 

Fio config dosyası

[global]

ioengine=rbd

clientname=admin

pool=bseu-linux-ceph-images

rbdname=image01

rw=randrw

rwmixread=70

bs=4k

#bs=1k

[rbd_iodepth32]

iodepth=32

 

 

Sehven Ceph.conf’ta autoscale off yapılmaz ve sistem yanlışlıkla autoscale on yapılırsa:

İlk olarak conf’ta autoscale off yapılır.

Sonrasında servisler restart edilecek,

systemctl restart ceph-mon@ceph01

systemctl restart ceph-mon@ceph02

systemctl restart ceph-mon@ceph03

systemctl restart ceph-mgr.target

ceph osd pool set bseu-linux-ceph-images pg_autoscale_mode off

ceph osd pool set  bseu-linux-ceph-images pg_num 128

ceph osd pool set  bseu-linux-ceph-images pgp_num 128

 

Sonuçlar

CEPH-Proxmox-pacific

root@pve02:~# fio rbd.fio
rbd_iodepth32: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=rbd, iodepth=32
fio-3.25
Starting 1 process
Jobs: 1 (f=1): [m(1)][100.0%][r=22.1MiB/s,w=9.82MiB/s][r=5658,w=2513 IOPS][eta 00m:00s]
rbd_iodepth32: (groupid=0, jobs=1): err= 0: pid=242908: Fri Jul 29 09:44:17 2022
read: IOPS=8634, BW=33.7MiB/s (35.4MB/s)(13.0GiB/424979msec)
write: IOPS=3702, BW=14.5MiB/s (15.2MB/s)(6146MiB/424979msec); 0 zone resets

 

CEPH-quincy
root@ceph01:~# fio ceph.fio
rbd_iodepth32: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=rbd, iodepth=32
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [m(1)][100.0%][r=84.8MiB/s,w=35.9MiB/s][r=21.7k,w=9186 IOPS][eta 00m:00s]
rbd_iodepth32: (groupid=0, jobs=1): err= 0: pid=63995: Fri Jul 29 08:04:50 2022
read: IOPS=22.3k, BW=87.0MiB/s (91.2MB/s)(14.0GiB/164769msec)
write: IOPS=9548, BW=37.3MiB/s (39.1MB/s)(6146MiB/164769msec); 0 zone resets

 

 

Proxmox Backup Server testleri yapıldı.

İyileştirme ve ilerlemelerde güncellenecektir.

 

1 yorum

  1. Uğur

    Bilgilendirme için çok teşekkürler hocam.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

AlphaOmega Captcha Classica  –  Enter Security Code
     
 

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>