Category Archives: ceph

Ilk Client ve Ceph Performans Test Ornekleri

Once sisteme bir bakalim, rbd imajlarini yaratabilecegimiz pool lar mevcut mu ?

 vahric:~ vahricmuhtaryan$ rados lspools

data

metadata

rbd

volumes

vms

images

backups

Simdi 20 GB lik bir disk yaratalim client uzerinden

vahric:~ vahricmuhtaryan$ rbd create rbd_disk1 –size 20480

Varsayili olarak “rbd” adli pool uzerinde yaratilacak eger siz bunu degistirmek isterseniz bu kez “-p pool_adi” parametresini kullanabilirsiniz.

Yarattigimiz diski gorelim

vahric:~ vahricmuhtaryan$ rbd ls

rbd_disk1

Ilgili disk hakkinda daha fazla bilgi alalim , gordugumuz gibi 5120 obje uzerine yayilmis kendisi

vahric:~ vahricmuhtaryan$ rbd –image rbd_disk1 info

rbd image ‘rbd_disk1’:

size 20480 MB in 5120 objects

order 22 (4096 kB objects)

block_name_prefix: rb.0.348f6.238e1f29

format: 1

Client a ilgili diski tanitalim

vahric:~ vahricmuhtaryan$ sudo rbd map rbd/rbd_disk1

Percinleyelim

vahric:~ vahricmuhtaryan$ rbd showmapped

id pool image     snap device

0  rbd  rbd_disk1 –    /dev/rbd0

Klasik Bir Partition Yaratalim

vahric:~ vahricmuhtaryan$ sudo mkfs.xfs /dev/rbd0

log stripe unit (4194304 bytes) is too large (maximum is 256KiB)

log stripe unit adjusted to 32KiB

meta-data=/dev/rbd0              isize=256    agcount=17, agsize=326656 blks

=                       sectsz=512   attr=2, projid32bit=1

=                       crc=0        finobt=0

data     =                       bsize=4096   blocks=5242880, imaxpct=25

=                       sunit=1024   swidth=1024 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=0

log      =internal log           bsize=4096   blocks=2560, version=2

=                       sectsz=512   sunit=8 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

Mount Edelim

vahric:~ vahricmuhtaryan$ sudo mount /dev/rbd0 /mnt/

/dev/rbd0 on /mnt type xfs (rw,relatime,attr2,inode64,sunit=8192,swidth=8192,noquota)

Simdi Ufak bir Yazma Testi

vahric:~ vahricmuhtaryan$ sudo dd if=/dev/zero of=/mnt/dosya1 count=100 bs=1M

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 0.0541026 s, 1.9 GB/s

stack@helion-cp1-c0-m1-mgmt:~$ ls -al /mnt/

total 102404

drwxr-xr-x  2 root root        35 Mar 18 11:44 .

drwxr-xr-x 23 root root      4096 Feb 26 16:09 ..

-rw-r–r–  1 root root 104857600 Mar 18 11:44 dosya1

-rw-r–r–  1 root root         0 Mar 18 11:39 test1.txt

Performans Test Ornekleri

Performans testleri yapmadan once bilinmelidirki OSD rolune sahip nodelar CPU-Intensive olup olasi bir recovery durumda dahada CPU-Intensive olacaklardir.

Memory bakimindan OSD/HDD basina 1GB-2GB Ram mutlaka olmali sistemde

Network kismi goreceli olcumleme yapmak lazim kullanim oraninza gore 10G diyip gaza gelelim

Disk , burada bizi asil etkileyen faktor Ceph i sadece object storage olarak mi yoksa ayni zamanda block access icinde kullanip kullanmayacaginiz.

Ceph kullaniyorsaniz bilinki journaling var ve bizim icin bir disk’i ikiye bolup birini journaling icin digerini data icin kullanacagiz. Ilk yazma istegi journal alana daha sonra Client’a ACK daha sonra veri data alanina gecer. Burada hizi artirmak icin journal partition’i data partition’dan ayirmak ve SSD uzerine koymak gerekli block erisimler icin bject bazli erisimler icin bu gerekli olmayabilir cunku object erisiminden bahsederken daha dusuk bir yukten bahsediyor olacagiz.

Burada 4 OSD de bir SSD kullanmak gibi bir oneride bulunmus ceph , test edilebilir bir deger gibi duruyor.

Birde filesystem sonuc olarak ceph de objeleri bir file system uzerinde tutuyor brtfs , xfs ve ext4 gibi , sececeginiz fs inde bu ise katkisi var kuskusuz.

Ceph built-in test performans olcum programi olan “rados bench” ile geliyor. Ornek olarak asagidaki komut cok olabilir ama -t 64 kaldirabilirsiniz .

Komutu incelersek ;

“data” adli pool’a , 60 saniye boyunca , yazma islemi yaptik ve 64 paralel islem belkide 64 adet instance bu isi yapiyr gibi sekillendirdik.

vahric:~ vahricmuhtaryan$ rados bench -p data 60 write –no-cleanup -t 64

Maintaining 64 concurrent writes of 4194304 bytes for up to 60 seconds or 0 objects

Object prefix: benchmark_data_

sec Cur ops   started  finished  avg MB/s  cur MB/s  last lat   avg lat

0       0         0         0         0         0         –         0

1      63       179       116   463.884       464   0.38101   0.37249

2      63       345       282   563.897       664  0.366082  0.371803

3      63       518       455   606.567       692  0.323779  0.379964

4      64       697       633   632.902       712  0.633568  0.375212

5      64       870       806   644.701       692  0.323645  0.372506

6      63      1052       989   659.232       732  0.324917  0.370092

7      63      1261      1198   684.468       836  0.289412  0.359564

8      64      1448      1384   691.895       744  0.640746  0.355492

9      63      1636      1573   699.005       756  0.375221  0.354127

10      63      1825      1762   704.695       756  0.296463   0.35258

11      63      2009      1946   707.533       736     0.313  0.352625

12      64      2212      2148   715.898       808     0.281   0.34923

13      63      2400      2337   718.973       756  0.301415  0.347757

14      63      2597      2534   723.895       788  0.316924  0.346277

15      63      2780      2717   724.427       732  0.352922  0.345955

16      63      2976      2913   728.144       784  0.291264  0.345326

17      63      3162      3099    729.07       744  0.345573   0.34483

18      63      3345      3282   729.226       732  0.360665  0.344803

19      64      3535      3471    730.63       756  0.355096   0.34454

2016-03-18 15:35:15.960296min lat: 0.255346 max lat: 1.08089 avg lat: 0.345816

sec Cur ops   started  finished  avg MB/s  cur MB/s  last lat   avg lat

20      63      3707      3644   728.693       692  0.688611  0.345816

21      63      3886      3823   728.084       716  0.380712  0.346103

22      64      4042      3978   723.167       620  0.391788  0.347741

23      63      4222      4159   723.199       724  0.637858  0.349523

24      63      4398      4335   722.395       704  0.350302  0.349731

25      64      4583      4519   722.935       736  0.324349  0.349799

26      63      4762      4699   722.818       720  0.397335  0.349641

27      63      4923      4860   719.895       644  0.320317  0.351497

28      63      5107      5044   720.466       736  0.354695  0.351503

29      64      5290      5226   720.723       728  0.357651  0.351386

30      63      5477      5414   721.762       752  0.346044   0.35118

31      63      5665      5602   722.733       752  0.322997  0.350751

32      64      5856      5792   723.895       760  0.286673  0.350305

33      63      6056      5993   726.319       804  0.286453  0.349562

34      63      6241      6178   726.718       740  0.382151  0.348804

35      64      6418      6354   726.067       704   0.70621  0.349417

36      63      6603      6540   726.562       744  0.330412  0.349448

37      63      6793      6730   727.463       760  0.307236   0.34913

38      63      6996      6933   729.685       812  0.304802  0.348192

39      64      7194      7130   731.177       788  0.308319  0.347657

2016-03-18 15:35:35.963088min lat: 0.243614 max lat: 1.09487 avg lat: 0.347097

sec Cur ops   started  finished  avg MB/s  cur MB/s  last lat   avg lat

40      64      7387      7323   732.195       772  0.336614  0.347097

41      63      7568      7505    732.09       728  0.305704  0.347322

42      63      7741      7678   731.133       692  0.298869  0.347838

43      64      7915      7851   730.221       692  0.385897  0.348186

44      63      8109      8046   731.349       780   0.31149  0.347653

45      63      8293      8230   731.451       736  0.341667  0.347736

46      63      8486      8423   732.329       772  0.314524  0.347356

47      63      8675      8612   732.831       756  0.319864  0.347313

48      63      8871      8808   733.894       784  0.297605   0.34688

49      63      9071      9008   735.241       800  0.294334  0.346284

50      64      9276      9212   736.854       816  0.266206  0.345516

51      64      9446      9382   735.738       680  0.322462  0.345893

52      63      9623      9560    735.28       712  0.373721  0.346026

53      64      9807      9743   735.216       732  0.351035  0.346179

54      63      9963      9900   733.229       628  0.772809  0.346678

55      63     10138     10075   732.623       700   0.36974  0.347414

56      63     10310     10247   731.824       688  0.728308  0.347864

57      64     10479     10415   730.773       672  0.326227  0.348262

58      63     10670     10607   731.414       768  0.353456  0.348211

59      63     10859     10796   731.828       756  0.304951  0.348066

2016-03-18 15:35:55.965885min lat: 0.234814 max lat: 1.11278 avg lat: 0.348373

sec Cur ops   started  finished  avg MB/s  cur MB/s  last lat   avg lat

60      55     11024     10969   731.163       692  0.234814  0.348373

Total time run:         60.166694

Total writes made:      11024

Write size:             4194304

Bandwidth (MB/sec):     732.897 

Stddev Bandwidth:       109.541

Max bandwidth (MB/sec): 836

Min bandwidth (MB/sec): 0

Average Latency:        0.348392

Stddev Latency:         0.0837083

Max latency:            1.11278

Min latency:            0.172449

Bu arada OSD node larin CPU kuyruk ve I/O wait degerlerine dikkat …. (vmstat ciktisi)

Dikkat ederseniz cok fazla “interrupts” ve “context” islemi var bunu icinded cpu kuyruguda isler var … 


2  0      0 119779248 301012 9027476    0    0     0 1020508 39561 81965  9 16 57 18  0

4  3      0 119050680 301012 9723692    0    0     0 1484501 45600 99320  9 17 52 22  0

1  4      0 118306992 301012 10419900    0    0     0 1453172 43269 89217  7 16 54 22  0

4  2      0 117552920 301012 11151764    0    0     0 1417888 47453 95868 10 17 53 20  0

2  3      0 116816936 301012 11863880    0    0     0 1441024 59888 102892 10 17 48 26  0

3  5      0 116025456 301012 12621544    0    0     0 1573439 65494 109183 10 21 49 21  0

1  1      0 115153008 301012 13466820    0    0     0 1790724 69421 125151 11 21 43 25  0

1  3      0 114280216 301012 14284316    0    0     0 1672340 66805 108805 12 21 41 25  0

1  5      0 113504304 301012 15012172    0    0     0 1482380 66205 109008 11 17 51 21  0

2  1      0 112705664 301012 15778160    0    0     0 1523221 66547 113069  9 19 48 24  0

3  5      0 111925152 301012 16550136    0    0     0 1595473 67025 116527 11 20 48 21  0

2  2      0 111107920 301012 17342984    0    0     0 1697492 67898 121723 11 21 46 22  0

3  4      0 110227744 301012 18188932    0    0     0 1722688 71108 120435 11 22 43 24  0

3  6      0 109411400 301012 18981508    0    0     0 1602492 67416 110758 10 21 46 23  0

4  3      0 108644624 301012 19716368    0    0     0 1496712 74043 111431  9 19 49 22  0

2  2      0 107804960 301012 20534756    0    0     0 1657152 82051 119790 11 21 44 24  0

3  4      0 107011064 301012 21308212    0    0     0 1672845 75802 113841 10 20 48 22  0

3  5      0 106253024 301012 22056944    0    0     0 1569166 73200 105035 10 19 48 23  0

4  1      0 105449408 301012 22834144    0    0     0 1522580 74871 107535 10 19 46 25  0

2  6      0 104693064 301012 23557616    0    0     0 1478552 66217 106022 10 17 52 21  0

4  0      0 103984384 301012 24243168    0    0     0 1387364 66384 106223  9 18 53 20  0

1  3      0 103327632 301012 24888936    0    0     0 1413308 66325 97587  9 16 55 19  0

2  2      0 102538480 301012 25643540    0    0     0 1539750 67207 101545  9 19 49 24  0

2  1      0 101758240 301012 26402912    0    0     0 1508559 73090 103293 10 19 51 21  0

4  4      0 100997856 301012 27141676    0    0     0 1508552 73194 110821 10 19 47 23  0

3  1      0 100307072 301012 27825040    0    0     0 1395524 71138 104815  9 18 54 20  0

1  5      0 99576872 301012 28523204    0    0     0 1531928 68252 106490  8 19 52 21  0

2  2      0 98788992 301012 29293932    0    0     0 1583288 74612 107305 11 19 48 22  0

12  4      0 98010560 301012 30050480    0    0     0 1515286 73645 106091 10 19 51 21  0

5  5      0 97250712 301012 30797468    0    0     0 1512376 76516 110708  9 20 49 22  0

4  2      0 96409528 301012 31580792    0    0     0 1606716 81483 119983 11 21 46 22  0

5  2      0 95567696 301012 32378328    0    0     0 1707854 80155 121890 13 21 43 24  0

4  2      0 94736072 301012 33180668    0    0     0 1656548 77087 111518 11 20 46 24  0

Ayni testi birde read icin yapalim (seq)

vahric:~ vahricmuhtaryan$ rados bench -p data 60 seq -t 64

2016-03-18 15:47:38.961955min lat: 0.168118 max lat: 0.690079 avg lat: 0.24984

sec Cur ops   started  finished  avg MB/s  cur MB/s  last lat   avg lat

40      63     10259     10196   1019.44      1012  0.217678   0.24984

41      64     10512     10448   1019.16      1008  0.245161    0.2499

42      63     10769     10706   1019.46      1032  0.213964  0.249931

43      63     11024     10961   1019.47      1020  0.082318  0.249911

Total time run:        43.147236

Total reads made:     11024

Read size:            4194304

Bandwidth (MB/sec):    1021.989

Average Latency:       0.249893

Max latency:           0.690079

Min latency:           0.082318

Ayni testi birde read icin yapalim (random)

vahric:~ vahricmuhtaryan$ rados bench -p data 60 rand -t 64

Guzel Linkler

Daha fazla rbd kullanimi icin : http://docs.ceph.com/docs/master/man/8/rbd/

https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat

Ceph Komutlar – 1

Kurulum sonrasi bizim icin komutlar cok onemli olacak, bu makalede ;

  • ceph version gorme
  • ceph cluster durmunu gorme
  • ceph disk pool listeleyelim
  • ceph cluster kullanimini gorme
  • ceph node uzerinde diskleri gorme
  • ceph cluster’a osd ekleme
  • ceph cluster osd listeleme
  • ceph cluster’a mon ekleme
  • ceph cluster monitor node state/quarom bilgisini gorme
  • ceph mon/osd/pg/crash/mds dump ile cluster map leri ayri ayri gorme
  • ceph recovery isleminin izleme
  • ceph osd devre disi birakma

 

ceph Version gorelim

root@cephadm:~# ceph -v

ceph version 9.2.0 (bb2ecea240f3a1d525bcb35670cb07bd1f0ca299)

Read the rest of this entry

Ceph – RBD Client’a Disk Verme

Amacimiz elimizdeki Ubuntu 14.04 Linux sunucuya Ceph uzerinden  uzerinden 20 GB’lik disk alani vermek. Block access yapacagiz yani RBD Client olacak Ubuntu.

Once Ceph Cluster’daki poollari listeleyelim 

root@cephadm:~# ceph osd lspools 

0 rbd,

Simdi hizlica 20 GB lik bir disk imaji yaratalim ve yarattigmizi gorelim

root@cephadm:~# rbd create ubuntuya-disk –size 20G

root@cephadm:~# rbd ls

ubuntuya-disk

Eger farkli bir pool kullanmak isterseniz -p ile pool adini be;irtebilirsiniz !!!

Daha ayrinti bilgi ister isek

root@cephadm:~# rbd –image ubuntuya-disk info

rbd image ‘ubuntuya-disk’:

size 20480 MB in 5120 objects

order 22 (4096 kB objects)

block_name_prefix: rbd_data.12864b6bae7

format: 2

features: layering

flags:

Read the rest of this entry

Ceph – Performans (Gozu Kapali) (Referans Amacli)

Bu article tamamen referans niteligi tasiyor , hicbir bilindik benden birsery yok !

Performans

OSD -> cpu , CPU . 2 islemci iyi diyorlar

MDS kullaniyorsan yandin daha da fazal processing power (Bu arada millet ikinci cpu ekleyip compression ve dedup yapiyor ama Ceph bu konuda ilginc duruyor)

RAM olayida guzel avg OSD basina 1G , olmadi 2G iyi olur diyorlar

Networksel olarak public / internal network’u ayirin diyorlar (veri klasik 🙂 😛 )

Full SSD kullanmiyorsaniz , journal icin mutlaka SSD (eger performans ihtiyaciniz var ise)

Journal SSD icin OSD nin %10 diyenler var , her bir OSD icin 10GB ayiranlar var

Ama dedikleri su journal alani osd oldugu disk de olmasin

Birde bir SSD de 4 OSD ekleyin diyenler var , daha fazlasini koymayin diyorlar

OSD sayisini dusurmek istiyorsaniz bu arada o zaman arkada RAID kullanin derler , az OSD demek daha az deamon demek

Dokumanlari okurken insan diyor ki ah Btrfs production da olsa , ona gelinceyekadar XFS devam olmadi EXT4

RBD Client Side caching , devamli acik “rbd cache = true , rbd cache size = , rbd cache max dirty = , rbd cache max dirty age”

MAX OPEN FILE  olayina dikkat “/var/lib/ceph/osd/ceph-x/current” cunku hersey file ve directory den ibaret

Read the rest of this entry

Ceph Monitoring – CLI ve REST API

Ceph monitoring icin 3 sey kullanabiliriz ;

  1. cli
  2. api
  3. 3th party gui

 Cluster saglik durumu ;

root@cephadm:~# ceph health

HEALTH_WARN clock skew detected on mon.cephmon2; Monitor clock skew detected

Mesela yukarda komutu bize bisiylerin yolunda olmadigini gosteriyor. Ayni komutu “ceph health detail” seklinde verdiginizde daha fazla detaya sahip olacaksiniz

root@cephadm:~# ceph health detail

HEALTH_WARN clock skew detected on mon.cephmon2; Monitor clock skew detected

mon.cephmon2 addr 10.111.21.181:6789/0 clock skew 0.142183s > max 0.05s (latency 0.000532976s)

API icin ; 

Once ceph-rest-api uygulamasini calistirin , ceph-rest-api icin flask kullanilmis ve calistirdiginizda builtin WSGI devreye giriyor istekleriniz alip islemek icin -n de client name / adini belirtiyor , kullanacaginiz degeri ls -al /etc/ceph/ diyip ilgili keyring dosyasinin adindan edinebilirsiniz.

root@cephadm:~# ceph-rest-api -n client.admin

* Running on http://0.0.0.0:5000/

212.58.13.17 – – [12/Jan/2016 17:41:07] “GET /api/v0.1/health HTTP/1.1” 200 –

Tum Event’leri gormek “tail -f” ile dosyadan akarcasina

root@cephadm:~# ceph -w

Yukardaki komut Info/Warning/Error larin hepsini gercek zamanli olarak gosterir. Isterseniz cesitli parametreleri vererek ozellestirebilirsiniz , bunlar –watch-debug veya –watch-info veya –watch-sec/warn/error diyerekte izleyebilirsiniz

Read the rest of this entry

Ceph Kurulumu

Hizlica ceph kurulumu …

Elimizde son guncellemeleri gecilmis Ubuntu 14.04.3 LTS Trusty isletim sistemi kurulmus linux sunucular mevcut, sunucu listesi ve gorevleri asagidaki gibi belirtilmistir.

  • admin node (10.111.21.184)
  • monitor node 1 (10.111.21.180)
  • monitor node 2 (10.111.21.181)
  • monitor node 3
  • osd node 1 (10.111.21.185)
  • osd node 2 (10.111.21.186)
  • osd node 3

Ilgili release key ekleyelim

root@cephadm:~# wget -q -O- ‘https://download.ceph.com/keys/release.asc’ | sudo apt-key add –

OK

Ceph paketini repoya ekleyelim

root@cephadm:~# echo deb http://download.ceph.com/debian-infernalis/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

deb http://download.ceph.com/debian-infernalis/ trusty main

Repoyu guncelleyip “ceph-deploy” kuralim

root@cephadm:~# sudo apt-get update && sudo apt-get install ceph-deploy

Kuruluma baslamadan once ;

  • admin node sifresiz diger nodelara girebilmeli cunku tum konfigrasyon islemlerini merkezi olarak yonetecegiz
  • ceph-deploy yine diger nodelarda sifresiz ve sudo hakki olan bir kullanici ile login olmali (uygulama kuracak)
  • “ceph-deploy –username” parametresi ile root dahil yarattiginiz  kullanici adini belirtebilirsiniz
  • ntp tum nodelarda kurulu ve konfigre edilmis olmali, tum nodelar ayni saat degerine sahip olmali
  • openssh-server paketi tum nodelarda kurulu olmali
  • SELinux kapali olmali
  • iptables kurulum engellememsi icin kapali

Ben kurulumumda “root” kullanicisini kullanacagim , onerilmiyor, productionda bu sekilde kullanmayin diyorlar , keza ceph adli bir kullanicida sistemde yaratmayin cunku hackerlar bunu bidiklerinden brute force icin kullanmaya baslasmislar.

SSH Key Yaratalim

root@cephadm:~# ssh-keygen

Dikkat ! “passphrase” bos gecin , sifre atamayin

Key Transfer

Once monitor node 1 icin yapiyorum

root@cephadm:~# ssh-copy-id root@10.111.21.180

The authenticity of host ‘10.111.21.180 (10.111.21.180)’ can’t be established.

ECDSA key fingerprint is 2e:b7:48:94:bb:69:44:ac:3f:c0:e7:f4:8e:a6:17:c0.

Are you sure you want to continue connecting (yes/no)? yes

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys

root@10.111.21.180’s password:

Number of key(s) added: 1

Now try logging into the machine, with:   “ssh ‘root@10.111.21.180′”

and check to make sure that only the key(s) you wanted were added.

Dikkat ! ayni islemi 10.111.21.181,10.111.21.185,10.111.21.186 makinelerindede yapin

Her Node Uzerindeki /etc/hosts dosyasini guncelleyin, benim icin asagidaki ayarlar gecerli , hostname uzerinden birbirlerini pingleyebilmelisiniz

# Ceph MON Nodes

10.111.21.180   cephmon1

10.111.21.181   cephmon2

# Ceph OSD Nodes

10.111.21.185   cephosd1

10.111.21.186   cephosd2

# Ceph Admin Node

10.111.21.184   cephadm

Admin Node uzerinde bir dizin yaratin ve “ceph-deploy” buradan tetikleyin

root@cephadm:~# mkdir cephclusterconfigfiles

root@cephadm:~# cd cephclusterconfigfiles/

Kuruluma baslamadan once oldu ya birsikinti yasadiniz ve tum islemleri sifirlamak istiyorsunuz bu durumda “ceph deploy purgedata nodex nodey” ve “ceph deploy forgetkeys” komutunu kullanin

Ilk ceph baslangic konfig ve keyring dosyasini yaratmak gerekiyor

root@cephadm:~/cephclusterconfigfiles# ceph-deploy –username root new cephmon1

veya (kullanici belirtmek istemezseniz)

root@cephadm:~/cephclusterconfigfiles# ceph-deploy new cephmon1

Iki OSD ile sistemi ayaga kaldiracagiz , onun icin ilgili asagidaki satiri [global] altina ekleyin

osd pool default size = 2

Not : Varsayili deger 3

Kuruluma baslayalim

root@cephadm:~/cephclusterconfigfiles# ceph-deploy install cephmon1 cephmon2 cephosd1 cephosd2 cephadm

Tum ceph binaryleri ilgili nodelara kurulacak

Ilk monitor node’u yaratalim

root@cephadm:~/cephclusterconfigfiles# ceph-deploy mon create-initial

OSD nodelara birer tane 16Gb lik disk ekledim , isletim sistemi bunu /dev/sdb olarak gordu

OSD node ve diskleri hazirlayalim

Asagidaki ornek ikinci node icin , tum node larda bunu yapmalisiniz

root@cephadm:~/cephclusterconfigfiles# ceph-deploy osd prepare cephosd2:/dev/sdb

Bu islemi yaptiginizde goreceksinizki ceph-deploy ilgili node uzerinde guzel guzel partition yaratmis ve onu xfs olarak formatlamis noatime parametresinide vermis olarak.

Asaidaki gibi mount ciktilarina sahip olmus olacaksiniz

/dev/sdb1 on /var/lib/ceph/osd/ceph-2 type xfs (rw,noatime,inode64)

Islemlerde asagidaki gibi “ready” mesaji alip almadiniginiza dikkat edin.

[ceph_deploy.osd][DEBUG ] Host cephosd1 is now ready for osd use.

Simdi OSD leri aktive edelim

root@cephadm:~/cephclusterconfigfiles# ceph-deploy osd activate cephosd2:/dev/sdb1

Burada dikkat /dev/sdb degil /dev/sdb1 olarak verdim aktive ederken

Admin node uzerindeki config sync edelim

root@cephadm:~/cephclusterconfigfiles# ceph-deploy admin cephadm cephmon1 cephosd1 cephosd2

[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to cephadm

[cephadm][DEBUG ] connected to host: cephadm

[cephadm][DEBUG ] detect platform information from remote host

[cephadm][DEBUG ] detect machine type

[cephadm][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf

[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to cephmon1

[cephmon1][DEBUG ] connected to host: cephmon1

[cephmon1][DEBUG ] detect platform information from remote host

[cephmon1][DEBUG ] detect machine type

[cephmon1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf

[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to cephosd1

[cephosd1][DEBUG ] connected to host: cephosd1

[cephosd1][DEBUG ] detect platform information from remote host

[cephosd1][DEBUG ] detect machine type

[cephosd1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf

[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to cephosd2

[cephosd2][DEBUG ] connected to host: cephosd2

[cephosd2][DEBUG ] detect platform information from remote host

[cephosd2][DEBUG ] detect machine type

[cephosd2][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf

ve

root@cephadm:~# ceph health

HEALTH_OK

Bu islemlerden sonra MON ve OSD makinelerinde “ps -fe” yaparak calisan ceph deamon larini gormeye baslayabilirsiniz

ceph      3829     1  0 13:19 ?        00:00:00 /usr/bin/ceph-mon –cluster=ceph -i cephmon1 -f –setuser ceph –setgroup ceph

ceph      1728     1  0 14:38 ?        00:00:01 /usr/bin/ceph-osd –cluster=ceph -i 1 -f –setuser ceph –setgroup ceph

ceph      1694     1  0 14:45 ?        00:00:01 /usr/bin/ceph-osd –cluster=ceph -i 2 -f –setuser ceph –setgroup ceph

Nodelardaki configler “/etc/ceph” altinda bulabilirsiniz

Bu kurulum aslinda komutlarla oynamak icindi , production’da calistirmak icin degil.

Esitliklerle Ceph

ceph = open source distributed storage system

ceph = POSIX uyumlu ve snapshot destekler

ceph genisleyebilir = gigabyte –> exabyte veya x86 tabanli 1000 server’a

ceph’in felsefesi = her bilesen yatayda buyuyebilmeli, asla single point of failure olmamali, software tabanli olmali, herkesin erisebilecegi donanimlar uzerinde olmali, mumkun oldugu kadar kendi kendini yonetebilmeli

tek bir sapka altinda = block , file ve object destekler

gucunu = object tabanli olmadan alir , ona gore block/file/obje hepsi birdir ve bunlari objeler halinde tutar, yedekler , dagitir

2D Ceph = {

Screen Shot 2016-01-13 at 14.36.12

}

Kus Bakisi Ceph = {

Screen Shot 2015-12-29 at 10.36.44

}

Metadata = data hakkinda data 🙂 , her okuma/yazam isteginde neyi nereden okuyacagimiz eger storage kullaniyorsak storage’a ait metadata tablosuna erisip ogreniyoruz demek, bunun icin eski storage tipleri belli bir noktaya kadar genisleyebiliyor . Ufak bir NOT GPFS veya yeni adiyla IBM Spectrum Scale meta data olayini dagitik metadata process’i gelistirerek cozmus  {

Screen Shot 2015-12-29 at 11.02.42

}

CRUSH = Yeni bir “Metadata Lookup” tipi , daha dogrusu artik neyin nereden okunacagi ve yazilacagi  daginik olarak ve isleme tabi tutarak bulunuyor. Bu sayede daha hizli ve exabyte seviyesinde yapilari destekleyebliyor.

CRUSH ayni zamanda = tum ortamdan haberdar bir yapisi var , disk , sunucu , sunucunun bulundugu kabin , kabin’in oldugu datacenter gibi . Oyle ki ilk objeyi yazdiginda yedeginin nereye konacagini hesaplar ki herhangi bir bilesen bozuldugunda datanin problemsiz erisilebilir olmasini saglasin. Olasi bir problemde yine yedek objeyi kullanarak datayi cogaltaraktan yine yedekliligi ust seviyeye cikartir.

ceph = raid yok ,  spare disk yok , illa ayni boyutlarda disklere gerek yok

Erasure Coding = Normalde her bir obje’ni ayni boyutda farkli bir kopyasi yaratilir , erasure coding farkli bir algoritma guderek objeyi daha dusuk maliyetle yedekli olarak tutar.

RBD = Ceph block device access protokolu , bircok linux isletim sisteminde kernel seviyesinde destek var

RBD Destekler = Full/Incremental Snapshot/Thin Provisioning/Copy-on-Write , in-memory caching

RBD Erisim = {

Screen Shot 2015-12-29 at 13.31.57

}

CephFS = Henuz “production ready” degil , kendisi Ceph’in file access bileseni, HDFS (Hadoop) replace olacak gozuyle bakiliyor

Ceph Object Storage =  Ceph halihazirda object based bir storage olup , datayi object olarakda tutabilir.

Ceph Object Gateway (RadosGw) = RADOS gateway client’in RESTFUL API kullanarak sisteme erismesini saglar. Bunlar {

  • Swift Uyumlu
  • S3 Uyumlu
  • Admin API (Yonetim icin)

}

librgw = RADOS gateway , client bu kutuphaneyi kullaniyor

librados = RADOS gateway bu kutuphane ile ceph cluster’a erisiyor

Ceph Object Erisim Diyagrami = {

Screen Shot 2015-12-29 at 13.58.37

}

ceph alternatifleri (tum yonleri ile degil) = {

  • GPFS
  • iRODS
  • HDFS
  • Lustre
  • Gluster

}

Buyuk Resme Baktigimizda = {

Screen Shot 2015-12-29 at 14.48.03

RADOS (Reliable Autonomic Distributed Object Store) = Ceph in kalbi , turune bakilmaksizin , tum erisim methodlari ile gelen (block,file,object) verinin saklanmasi , yedeklenmesi , tutarli olmasi , tutarli olmasi icin yapilmasi gereken ne var ise bu katman bu deamon tarafindan yapiliyor.

OSD (Object Storage Device) = Ceph cluster sisteminde veri OSD denilen parcalara yaziliyor veya buradan okunuyor. OSD bizim icin disk veya disk parcacigi anlaminda ve bu disk bir partition olabilecegi gibi bir dizinde olabilir. Her bir disk icin bir OSD deamon calisiyor sistem uzerinde.

Ceph Monitor (MON) = Ceph cluster’inin saglik durumun gozlemler ve tum durumu (OSD, MON, PG, and CRUSH maps) bilir. Tum ceph nodelar MON ile konusup durum bilgisini belirtir.

RBD = ( Tekrar ) block access

RGW = ( Tekrar ) object access

MDS (Metadata Server) = CephFS icin file Metadata’sini tutar

CephFS = ( Tekrar ) file access

}

Pool = RADOS tum objeleri “pool” icersinde tutar

OSD = Normalde her yazilan data’nin bir yedegi oldugun ilgili data’yi iceren primary OSD ve yedegini iceren secondary OSD mevcut olup . Olasi bir problemde eger primary kaybedilir ise secondary primary olabilir ve RADOS arkada ikinci bir OSD bulup sistem tekrardan tutarli hale getirebilir. Bu islemlerden “client” etkilenmez.

Client OSD ile direkt iletisime gecer = Bunun icin oncelikle Client MON’u sorgular ve tum ceph cluster haritasini elde eder ve gerektiginde ilgili OSD ile direkt iletisime gecebilir.

OSD lerde bir dosya sistemi kullanir = xfs , ext4 veya btrfs .

XATTRs = Veriye ek metadata bilgisi eklemek icin kullanilir , sanki http request veya response’a header eklemek gibi.

Journal = Ceph’de journaling  yapan file sistem kullandigindan datalar once log’a sonra dosya sistemine yazilacaktir. Performans direkt etkileneceginden journal diski SSD olmasi gerekmektedir, daha sonra data asil file sistem’e sync olacaktir.

{

Screen Shot 2015-12-29 at 15.22.59

}

OSD RAID istemez = her biri standalone disk olabilir fakat bazi durumlarda raid yapilabilir , cok diskli sunucularda her disk icin calisacak OSD deamon icin RAM yeterli olmayabilir.

librados = C Kutuphanesi , uygulamanin direk RADOS ile iletisime gecmesini sagliyor.

KRBD = Kernel RBD

Ceph Object Gateway = Kendine has kullanici yonetimi vardir , load balance icin birden fazla GW olabilir. FastCGI-capable web server

Object = neye benzer derseniz (asagida) , bunlarin hepsi OSD lere yaziliyor  {

Screen Shot 2015-12-29 at 16.55.40

}

CRUSH Lookup =

  1. Client MON a baglanip Cluster MAP i cekiyor
  2. Client yazma isteginde bulunuyor ve data isim ve pool adi ile objeye cevriliyor
  3. Obje Placement Group ID ile hash’leniyor
  4. Daha sonra CRUSH algoritmasi sayesinde primary OSD bulunuyor
  5. Client direkt ilgili OSD ile iletisime gecip veriyi yaziyor
  6. Datanin yazildigi Node tekrarda CRASH Lookup yaparak ikinci Placement Group ve OSD bulur ve veri yazilir
  7. Veri yedekliligi saglanir

{

Screen Shot 2015-12-29 at 17.14.32

}

veya

{

Screen Shot 2016-01-13 at 14.47.05

}

Ortamdan Haberdar Demistik = Gordugunuz gibi DC, Sira , Kabin hepsini belirtebiliyorsunuz, bu liste sistem tarafindan yaratildigi gibi mudahale etme sansinizda var. Bu yapi onemli cunku yedeklilik buna gore sekilleniyor.

{

Screen Shot 2015-12-29 at 17.35.52

}

Recovery ve Rebalance = Olasi bilesen kaybi ve sisteme yeni eklenen OSD ler oldugunda sistem otomatik recovery ve rebalance islemi yapar. Yeni eklenen OSD leri “0” yuk parametresi ile girmeniz ve degeri kontrollu bir sekilde yukselmeniz oneriliyor.

Placement Group (PG) = Sanal kontenyner olarak adlandirabiliriz , sistemde bir suru obje olacagini dusunurseniz , bunlari daha kolay bulunabilmesi icin bir cesit guruplama / ara katman . Replikasyon sayiniza gore birden fazla OSD ile iliski icindedir.

Screen Shot 2015-12-29 at 18.16.09

PGP = PG

PG Hesaplama =  Cikan sonuclari 2 katlari ile yuvarlayin 🙂

{

Ceph Cluster Basina
Toplam PG = (Toplam OSD * 100) / replikasyon_sayisi

Ceph Cluster Pool Basina

Toplam PG = (Toplam OSD * 100) / replikasyon_sayisi / pool sayisi

}

Bir bakima  OSD ler yan yana gelerek PG leri yaratirlara , PG lerin durumuda haliyle altindaki OSD lerin saglikli calisip calismadiklarina bagli , bunu icin OSD lerden primary olan ayni zamanda diger OSD lerle arasinda peering kurar ve bu peering’in status eger ok ise PG aktif ve calisiyor demektir baska bir deyisle bu PG e veri yazabiliriz demek oluyor.

Acting Set = PG den sorumlu olan OSD ler veya baska bir deyisle PG olusturan OSD ler 🙂

Ceph Cluster MAP = MON + OSD + PG + CRUSH + MDS

epoc = bir cesit versionlama veya numaralama

CRUSH Rule = replika veya erasure coding

CRUSH Rule Resimle ve Koruma = {

Screen Shot 2016-01-13 at 14.48.43

}

Background Petrol Read = {

Click to access ps1q06-20050212-Habas.pdf

}