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 |
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
Uğur
12 Ocak 2023, 00:03 (UTC 3) Bu yoruma bağlantı
Bilgilendirme için çok teşekkürler hocam.