Ako pripraviť vývojové alebo testovacie Ceph prostredie
Keď používate Ceph v produkcii, je dôležité mať prostredie, kde môžete testovať svoje budúce upgrady, konfiguračné zmeny, integráciu nových klastrov alebo akékoľvek iné významné zmeny bez toho, aby ste sa dotkli samotných produkčných klastrov. Takéto prostredie je možné vybudovať pomocou nástroja Vagrant, ktorý dokáže veľmi rýchlo vybudovať virtualizované prostredie popísané v jednom relatívne jednoduchom konfiguračnom súbore.
V Linuxe používame Vagrant s doplnkami libvirt a hostmanager. Libvirt je súprava nástrojov na správu virtuálnych počítačov Linux KVM. Vagrant môže tiež vytvárať virtualizované siete na prepojenie týchto VMs a úložných zariadení, takže v prípade potreby môžete mať takmer identickú kópiu svojho produkčného klastra.
V našom príklade vytvoríme 5 uzlov Ceph klastra. Prvé 3 uzly budú vyhradené pre daemons riadiacich uzlov, všetky uzly budú tiež OSD uzly (štandardne 2 x 10 GB disky na každom uzle) a jeden uzol bude klientsky uzol. Klientske uzly možno použiť na testovanie prístupu ku klastrovým službám ako sú mapovanie obrazov rbd, pripojenie súborových systémov CephFS, prístup k RGW bucketom alebo čokoľvek, čo sa vám páči. Hostiteľským strojom, na ktorom beží virtualizované prostredie, môže byť akýkoľvek stroj s Linuxom (v našom prípade Ubuntu 22.04) s povolenou virtualizáciou KVM.
user@hostmachine:~/$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Nainštalujte požadované balíčky:
sudo apt-get install qemu libvirt-daemon-system libvirt-clients ebtables dnsmasq-base
sudo apt-get install libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev
sudo apt-get install libguestfs-tools
sudo apt-get install build-essential
Nainštalujte Vagrant podľa krokov na oficiálnej inštaláčnej stránke: https://developer.hashicorp.com/vagrant/downloads
Potom musíme nainštalovať Vagran pluginy:
vagrant plugin install vagrant-libvirt vagrant-hostmanager
Ak v ~/.ssh nie je žiadny pár kľúčov ssh, vygenerujte ho. Tento pár kľúčov sa vloží do VMs, pretože cephadm, ktorý použijeme na nasadenie Ceph, potrebuje konektivitu ssh medzi VMs a tento pár kľúčov sa použije na autentifikáciu ssh medzi uzlami.
ssh-keygen
Teraz by sme mali byť pripravení spustiť vaše virtuálne prostredie.
mkdir ceph-vagrant; cd ceph-vagrant
wget https://gist.githubusercontent.com/kmadac/171a5b84a6b64700f163c716f5028f90/raw/1cd844197c3b765571e77c58c98759db77db7a75/Vagrantfile
vagrant up
Keď vagrant up skončí bez chyby, Ceph bude inštalovaný na pozadí ešte niekoľko minút. Priebeh nasadenia môžete skontrolovať prístupom k ceph shell na node0:
vagrant ssh vagrant ssh ceph1-node0
vagrant@ceph1-node0:~$ sudo cephadm shell
root@ceph1-node0:/# ceph -W cephadm –watch-debug
Na konci by ste mali získať zdravý Ceph cluster s 3 deamonmi MON a 6 deamonmi OSD:
root@ceph1-node0:/# ceph -s
cluster:
id: 774c4454-7d1e-11ed-91a2-279e3b86d070
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph1-node0,ceph1-node1,ceph1-node2 (age 13m)
mgr: ceph1-node0.yxrsrj(active, since 21m), standbys: ceph1-node1.oqrkhf
osd: 6 osds: 6 up (since 12m), 6 in (since 13m)
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 33 MiB used, 60 GiB / 60 GiB avail
pgs: 1 active+clean
Teraz je váš klaster v prevádzke a môžete nainštalovať ďalšie služby ako CephFS alebo RGW, môžete sa hrať s pridávaním/odstraňovaním uzlov a aktualizáciou na ďalšiu verziu. Zmenou premennej CLUSTER_ID v súbore Vagrantfile a skopírovaním súboru Vagrantfile do iného adresára môžete nasadiť druhý klaster a pokúsiť sa nastaviť replikáciu (rbd-mirror, cephfs-mirror, konfigurácia viacerých zón RGW) medzi klastrami. Fantázií sa medze nekladú.
Keď skončíte s testami, môžete vaše prostredie jednoducho zničiť pomocou
vagrant destroy -f
Autor
Kamil Madáč
Grow2FIT Modren Infrastructure Consultant
Kamil je Senior Cloud / Infrastructure konzultant s viac ako 20-ročnou praxou a silným know-how v oblasti návrhu, implementácie a administrácie private cloud riešení (primárne postavenými nad OpenSource riešeniami ako OpenStack). Má dlhoročné skúsenosti s vývojom aplikácií v Pythone a aktuálne aj s vývojom v Go. Disponuje silným know-how v oblasti SDS (Software-defined storages), SDN (Software-defined networking), dátových úložísk (Ceph, NetApp), administrácie Linux serverov a prevádzky nasadených riešení.
Kamil je pravidelný prispievateľ do OpenSource projektov (OpenStack, Kuryr, Requests Lib – Python).
Celý konzultačný tím Grow2FIT: Náš tím