Ceph ile ilgili yazdığımız bildiriye bağlantıdan ulaşabilirsiniz.
You can access our report about Ceph from the link.
Ceph’in network mimarisi tamamlandıktan sonra sunucularda yaptığım işlemleri anlatacağım. Bizim mimaride 3 adet Monitör node, 4 adet OSD node ve 1 adet de mds olmak üzere toplamda 8 adet node var. Ceph’i MDS olarak kullanacağımız makineden cephdeploy ile kurduk. Sunucu isimlerini şu şekilde verdik;
cephdeploy csmon1 csmon2 csmon3 csnode1 csnode2 csnode3 cdnode4
Öncelikle tüm node’ların güncellemeleri yapıldı. Selinux disabled edildi. /etc/hosts dosyaları düzenlendi. Iptables’ın kapalı olduğu kontrol edildi. Her node’da ceph kullanıcısı açıldı ve password’e ihtiyaç olmadan root olacak şekilde ayarlandı. cephdeploy sunucusunda ssh-keygen üretilip diğer sunuculara gönderildi. Bu sayede cephdeploy sunucusu diğer tüm sunuculara şifresiz olarak erişebilecek duruma geldi.
Tüm node’larda gerekli rpm key’leri yüklüyoruz.
sudo rpm --import 'https://download.ceph.com/keys/release.asc' sudo rpm --import 'https://download.ceph.com/keys/autobuild.asc'
Tüm node’lara ntp kuruyoruz. Konfigürasyonunu yaptıktan sonra servisini başlatıyoruz.
sudo yum install ntp ntpdate ntp-doc sudo systemctl start ntpd
Bütün node’larda /etc/sudoers dosyasındaki Defaults requiretty satırını kapatıyoruz. Yine tüm node’larda /etc/yum.repos.d/ceph.repo dosyasını aşağıdaki şekilde oluşturuyoruz.
[ceph] name=Ceph packages for $basearch baseurl=http://download.ceph.com/rpm-infernalis/el7/$basearch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-infernalis/el7/noarch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-infernalis/el7/SRPMS enabled=0 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
Ceph deploy olarak kullanacağım node’da ceph kullanıcı ile girdikten sonra mkdir dosyaismi diyerek bir klasör oluşturuyorum ve cd ile bu klasör içerisine giriyorum. Bundan sonra yapacağım bütün işlemleri bu klasör içerisindeyken yapacağım. yum install ceph-deploy diyerek, ceph-deploy aracını kuruyoruz.
Daha sonra başlangıç için bir monitör seçiyoruz. Biz bunun için csmon2 node’unu seçtik. ceph-deploy new csmon2 komutunu çalıştırıyoruz. Başlangıç monitörü oluşturulduktan sonra içinde bulunduğumuz klasörde ceph.conf dosyası oluşmuş olacaktır. Bu dosyayı aşağıdaki gibi düzenliyoruz.
[global] fsid = 148f06d8-bb31-4344-b6cf-ccaefc8f6184 mon_initial_members = csmon2 mon_host = 192.168.1.7 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx filestore_xattr_use_omap = true public_network = 192.168.1.0/24 cluster_network = 192.168.2.0/24 osd_journal_size = 23000 osd_pool_default_size = 3 osd_pool_default_min_size = 2
Biz osd_journal_size‘i 23000 olarak (yaklaşık 23 GB) verdik. Kendi istediğiniz miktarı belirtebilirsiniz. osd_pool_default_size replika sayısını belirtiyor. Biz bir dosyanın üç kopyasının tutulmasını istediğimizden dolayı 3 olarak belirttik. Konfigürasyonu kaydedip kapatıyoruz. Daha sonra aşağıdaki komut satırıyla tüm node’lara ceph-deploy ile ceph’i kuruyoruz. ceph-deploy new csmon2 komutu hata verip tamamlanamadı ise önce aşağıdaki komut satırı ile ceph’i kurup sonrasında tekrar deneyebilirsiniz.
ceph-deploy install cephdeploy csnode1 csnode2 csnode3 csnode4 csmon1 csmon2 csmon3
Ceph kurulduktan sonra ceph-deploy mon create-initial komutu ile tüm sunuculara monitör nodu deploy ediyoruz.
Bu aşamada osd-node’ları tanımlayacağız. Sırasıyla aşağıdaki işlemleri yapıyoruz.
ceph-deploy disk zap <ceph-node>:<data-drive> ceph-deploy disk zap csnode1:/dev/sdc csnode1:/dev/sdd csnode1:/dev/sde ... ceph-deploy disk zap csnode2:/dev/sdc csnode2:/dev/sdd csnode2:/dev/sde ... ceph-deploy disk zap csnode3:/dev/sdc csnode3:/dev/sdd csnode3:/dev/sde ... ceph-deploy disk zap csnode4:/dev/sdc csnode4:/dev/sdd csnode4:/dev/sde ... ceph-deploy osd prepare <ceph-node>:<data-drive>:<journal-partition> [<ceph-node>:<data-drive>:<journal-partition>] ceph-deploy osd prepare csnode1:/dev/sdc1:/dev/sda5 csnode1:/dev/sdd1:/dev/sda6 csnode1:/dev/sde1:/dev/sda7 ... ceph-deploy osd prepare csnode2:/dev/sdc1:/dev/sda5 csnode2:/dev/sdd1:/dev/sda6 csnode2:/dev/sde1:/dev/sda7 ... ceph-deploy osd prepare csnode3:/dev/sdc1:/dev/sda5 csnode3:/dev/sdd1:/dev/sda6 csnode3:/dev/sde1:/dev/sda7 ... ceph-deploy osd prepare csnode4:/dev/sdc1:/dev/sda5 csnode4:/dev/sdd1:/dev/sda6 csnode4:/dev/sde1:/dev/sda7 ... ceph-deploy osd activate <ceph-node>:<data-drive>:<journal-partition> [<ceph-node>:<data-drive>:<journal-partition>] ceph-deploy osd activate csnode1:/dev/sdc1:/dev/sda5 csnode1:/dev/sdd1:/dev/sda6 csnode1:/dev/sde1:/dev/sda7 ... ceph-deploy osd activate csnode2:/dev/sdc1:/dev/sda5 csnode2:/dev/sdd1:/dev/sda6 csnode2:/dev/sde1:/dev/sda7 ... ceph-deploy osd activate csnode3:/dev/sdc1:/dev/sda5 csnode3:/dev/sdd1:/dev/sda6 csnode3:/dev/sde1:/dev/sda7 ... ceph-deploy osd activate csnode4:/dev/sdc1:/dev/sda5 csnode4:/dev/sdd1:/dev/sda6 csnode4:/dev/sde1:/dev/sda7 ...
Hata vermeden osd’ler oluşmuş ise ceph osd tree komutu ile osd’lerin durumunu görebilirsiniz. Yukarıdaki işlemleri hatasız tamamlamışsanız şimdi sıra pool oluşturmakta. ceph osd lspool komutu oluşturulan pool’ları gösteriyor. Default olarak rbd pool’u oluşmuş olacaktır. Aşağıdaki komut ile mypool adında pg_num ve pgp_num değeri 768 olan pool oluşturulmuş olacak.
ceph osd pool create <pool-name> <pg-num> [<pgp-num>] [replicated] [crush-ruleset-name] ceph osd pool create mypool 768 768
Sonrasında admin node’u belirliyoruz.
ceph-deploy admin cephdeploy sudo chmod +r /etc/ceph/ceph.client.admin.keyring
ceph health komutu ile ceph’in durumunu kontrol ederek kurulumu bitiriyoruz. HEALTH_OK şeklinde çıktı vermeli.
Kaynaklar:
- https://access.redhat.com/documentation/en/red-hat-ceph-storage/version-1.2.3/red-hat-ceph-storage-123-installation-guide-for-centos-x86-64
- http://docs.ceph.com/docs/master/start/quick-ceph-deploy