cephadm octopus versiyonu ile gelmiş olup tamamen container yapıda cluster ayağa kaldrımaktadır.
Ceph is the future of storage : Açık kaynak kodlu, dağıtık, yazılım tabanlı storage sistemidir. Object, block ve file-level storage desteklemektedir. Geleneksel depolama sistemlerinin kısıtlarına karşın Ceph ölçeklenebilir, esnek ve donanım bağımsızlığı sayesinde ekonomikliliğide beraberinde getirir. Ayrıca dağıtık yapıda çalışması sayesinde olası bir arızayı karşın otomatik onarım işlemlerini başlatması, exabyte seviyelerine kadar çıkabilmesi ve 3-in-1 protokol desteği Ceph’i popüler hale getirmiştir.
Yapımız kısaca aşağıdaki gibi; 1 node Ceph servisleri(Monitör, Management, Rados Gateway, Admin client) + 3 OSD node toplam 4 node. Her OSD node’sinde storage cluster için 3’er ayrı disk(/dev/sdb, dev/sdc, dev/sdd gibi). Siz kendi yapınız için yatayda OSD ve dikeyde disk yapınızı çoğaltabilirsiniz.
İlk olarak docker dahil gerekli paketleri indirip, kuralım. Bütün Node‘lerde çalıştırılmalıdır.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt install chrony python3-pip python3 ca-certificates curl gnupg lsb-release lvm2 docker-ce docker-ce-cli containerd.io -y
sudo vi /etc/chrony/chrony.conf
NTP_SERVER değiştirilmelidir.
#pool ntp.ubuntu.com iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
server $NTP_SERVER iburst
sudo systemctl restart chrony.service
chronyc sources
echo "$USER ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$USER
sudo chmod 0440 /etc/sudoers.d/$USER
sudo vi /etc/hosts
10.10.10.144 ceph-yonetici
10.10.10.145 ceph-osdx
10.10.10.146 ceph-osdy
10.10.10.147 ceph-osdz
Admin Node‘de çalıştırılır(ceph-yonetici).
ssh-keygen
ssh-copy-id $USER@ceph-yonetici
ssh-copy-id $USER@ceph-osdx
ssh-copy-id $USER@ceph-osdy
ssh-copy-id $USER@ceph-osdz
vi ~/.ssh/config
$USER parametresi anlık kullanıcı ile değiştirin.
Host ceph-yonetici
Hostname ceph-yonetici
User $USER
Host ceph-osdx
Hostname ceph-osdx
User $USER
Host ceph-osdy
Hostname ceph-osdy
User $USER
Host ceph-osdz
Hostname ceph-osdz
User $USER
cephadm‘yi kuralım.
curl --silent https://download.ceph.com/keys/release.asc | sudo apt-key add -
sudo apt-add-repository https://download.ceph.com/debian-pacific
sudo apt install -y cephadm
$USER parametresini anlık kullanıcı(şifresiz root yetkisine sahip olan bir kullanıcı) ile değiştirin, –mon-ip ceph-yonetici ip‘si olmalıdır.
sudo cephadm bootstrap --mon-ip 10.10.10.144 --initial-dashboard-user admin --initial-dashboard-password 1234 --ssh-user $USER --cluster-network 10.10.10.0/24
parametre değerlerini anlamak adına https://docs.ceph.com/en/latest/cephadm/install/ linkini kontrol edebilirsiniz.
Servisleri gözlemleyebilirsiniz.
systemctl status ceph-* --no-pager
Ceph komutlarını yürütmek için yukarıdaki bootstrap çıktısında verilen “You can access the Ceph CLI with:” satırını kullanabilirsiniz. İlgili komut sizi direk admin container‘a bağlayacaktır.
sudo /usr/sbin/cephadm shell --fsid d0232fa8-6d5b-11ec-8fba-23b487996ad5 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
Ama biz direk host üzerinden de komutları yürütebilmek için aşağıdaki yöntem/leri izleyebiliriz.
alias sudo='sudo '
alias ceph='cephadm shell -- ceph'
alias radosgw-admin='cephadm shell -- radosgw-admin'
echo "alias sudo='sudo '" >> ~/.bashrc
echo "alias ceph='cephadm shell -- ceph'" >> ~/.bashrc
echo "alias radosgw-admin='cephadm shell -- radosgw-admin'" >> ~/.bashrc
Ya da
cephadm add-repo --release pacific
cephadm install ceph-common
Ya da
sudo apt install ceph-common
ceph-yonetici host‘unu _admin‘e ek olarak mon ve mgr olarak ta etiketleyelim çünkü servisler o host üzerinde ayağa kalktı.
sudo ceph orch host label add ceph-yonetici mon [ya da (cephadm shell -- ceph orch host label add ceph-yonetici mon)]
sudo ceph orch host label add ceph-yonetici mgr [ya da (cephadm shell -- ceph orch host label add ceph-yonetici mgr)]
Aşağıdaki komutlar ile cluster‘ın durumunu inceleyebilirsiniz.
sudo ceph -s
sudo ceph orch host ls
sudo ceph orch device ls
sudo ceph orch ps
Şimdi diğer host‘ları(OSD) cluster‘a dahil edeceğiz ama öncesinde public key‘i dağıtalım. $USER parametresi anlık kullanıcı ile değiştirin.
ssh-copy-id -f -i /etc/ceph/ceph.pub $USER@ceph-osdx
ssh-copy-id -f -i /etc/ceph/ceph.pub $USER@ceph-osdy
ssh-copy-id -f -i /etc/ceph/ceph.pub $USER@ceph-osdz
Host‘ları dahil edelim.
sudo ceph orch host add ceph-osdx 10.10.10.145 osd
sudo ceph orch host add ceph-osdy 10.10.10.146 osd
sudo ceph orch host add ceph-osdz 10.10.10.147 osd
Şimdi tekrar cluster‘ın durumunu inceleyin.
sudo ceph -s
sudo ceph orch host ls
sudo ceph orch device ls
sudo ceph orch ps
Şimdi ise device ls ile OSD node‘lerinde listelediğimiz diskleri OSD olarak aynı anada ekleyelim.
sudo ceph orch apply osd --all-available-devices
Ya da özellikle işaret ederek de ekleyebiliriz.
sudo ceph orch daemon add osd <host>:<device-path>
Object storage kullanımı için Rados GW‘yi aktif edelim. rgw default port’u 80’dir ve yine default’ta 2 daemon up eder.
sudo ceph orch apply rgw ceph-yonetici [ya da sudo ceph orch apply rgw ceph-yonetici '--placement=label:rgw count-per-host:1' --port=7480]
sudo ceph orch host label add ceph-yonetici rgw
Ek olarak monitor, manager ve radosgw daemon eklemek isterseniz,
# sudo ceph orch apply mon --placement="ceph-yonetici,ceph-osdx,ceph-osdy"
# sudo ceph orch apply mgr --placement="ceph-yonetici,ceph-osdx,ceph-osdy"
# sudo ceph orch apply rgw --placement="ceph-yonetici,ceph-osdx,ceph-osdy"
Daemon - Servis silmek isterseniz,
# sudo ceph orch rm rgw.ceph-yonetici
# sudo ceph orch daemon rm rgw.ceph-osdx
Ceph Dashboard‘dan ve API‘den radosgw‘ye erişebilmek için kullanıcı oluşturabilirsiniz fakat default‘ta var olarak gelir. Changed $ACCESS_KEY and $SECRET_KEY
sudo ceph dashboard set-rgw-credentials
sudo radosgw-admin user create --uid="cephdash" --display-name="Ceph DashBoard2" --system
sudo /usr/sbin/cephadm shell --fsid d0232fa8-6d5b-11ec-8fba-23b487996ad5 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
echo $ACCESS_KEY > /tmp/access_key
echo $SECRET_KEY > /tmp/secret_key
sudo ceph dashboard set-rgw-api-access-key -i /tmp/access_key
sudo ceph dashboard set-rgw-api-secret-key -i /tmp/secret_key
Pool‘umuzu oluşturalım.
sudo ceph osd crush rule ls
sudo ceph osd pool create default.rgw.buckets.data 32 32 replicated replicated_rule
sudo ceph osd pool application enable default.rgw.buckets.data rgw
Swift user oluşturuyorum, siz isterseniz s3 user oluşturabilirsiniz.
sudo radosgw-admin --uid "ceph-demo" --display-name "Ceph Demo Kurulum Kullanıcısı" --subuser=ceph-demo:swift --key-type swift --access full user create
sudo radosgw-admin --uid "ceph-demo" --max-buckets=0 user modify
Uygulama bağlantısı için kullanılabilecek bilgiler
ceph.username = ceph-demo:swift
ceph.password = $SECRET_KEY
ceph.endpoint = http://10.10.10.144:7480/swift/v1
ceph.auth.url = http://10.10.10.144:7480/auth/1.0
Kullanışlı komutlar,
sudo ceph osd pool ls / sudo ceph osd pool ls detail
sudo ceph df detail
sudo ceph osd status
sudo ceph health detail
sudo ceph -s
sudo radosgw-admin user list
sudo radosgw-admin user info --uid=ceph-demo
cluster:
id: d0232fa8-6d5b-11ec-8fba-23b487996ad5
health: HEALTH_OK
services:
mon: 4 daemons, quorum ceph-yonetici,ceph-osdx,ceph-osdy,ceph-osdz (age 19h)
mgr: ceph-yonetici.uwijtu(active, since 19h), standbys: ceph-osdx.znrgdv
osd: 9 osds: 9 up (since 13h), 9 in (since 13h)
rgw: 1 daemons active (1 hosts, 1 zones)
data:
pools: 6 pools, 137 pgs
objects: 240 objects, 6.1 KiB
usage: 892 MiB used, 89 GiB / 90 GiB avail
pgs: 137 active+clean
ref:
https://docs.ceph.com/en/pacific/cephadm/install/#enable-ceph-cli
https://chowdera.com/2021/04/20210411052419702x.html
https://dev.to/akhal3d96/exploring-ceph-in-a-multi-node-setup-3c8h
https://achchusnulchikam2.medium.com/deploy-ceph-cluster-with-cephadm-on-centos-8-257b300e7b42