Ceph – Armazenamento Distribuído

O Ceph Storage é um sistema de armazenamento distribuído de código aberto que oferece escalabilidade, confiabilidade e desempenho para ambientes de armazenamento de dados em grande escala.

Utilizaremos a ISO do CentOS 9 Stream

https://mirror.team-cymru.com/centos-stream/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-dvd1.iso

Hosts

Sistema OperacionalIPHOSTNAMESSDOBS
CentOS 9 Stream192.168.0.10ceph.jrf.local20GB (Sistema)
30GB
30GB
Ceph (Manager)
CentOS 9 Stream192.168.0.20ceph02.jrf.local20GB
30GB
30GB
CentOS 9 Stream192.168.0.30ceph03.jrf.local20GB
30GB
30GB
Ubuntu 22.04192.168.0.100ubuntu.jrf.local1TBCliente

Update

dnf -y update

Verifique se você tem o pacote ‘gnupg2’ instalado

yum list installed | grep gnupg2

Edite o arquivo /etc/chrony.conf

pool a.st1.ntp.br iburst
pool b.st1.ntp.br iburst
pool c.st1.ntp.br iburst
pool a.ntp.br iburst
pool b.ntp.br iburst
pool c.ntp.br iburst

Salve o arquivo e inicie o serviço

systemctl enable --now chronyd

Agora vamos instalar o Podman

dnf install podman -y

Vamos ajustar a versão do Python para 3.6 (selecione a opção 2)

dnf module -y install python36 && alternatives --config python

CEPH

dnf install --assumeyes centos-release-ceph-pacific.noarch
dnf install --assumeyes cephadm

Ajustando o arquivos hosts

vim /etc/hosts
127.0.0.1       localhost
192.168.0.10	ceph.jrf.local
192.168.0.20	ceph02.jrf.local
192.168.0.30	ceph03.jrf.local

Apenas no servidor principal, execute o seguinte comando

bash <<'EOF'
cephadm bootstrap \
--cluster-network 192.168.0.0/24 \
--mon-ip 192.168.0.10 \
--dashboard-password-noupdate \
--initial-dashboard-user admin \
--initial-dashboard-password ceph \
--allow-fqdn-hostname \
--single-host-defaults
EOF

Configurando o CEPH

cephadm shell

Status

ceph -s

Configurando o disco

lsblk

Dica: ceph orch apply osd –all-available-devices (adiciona todos os discos automaticamente não recomendado)

fdisk -l

Obtendo o nome do host (para inclusão dos discos)

ceph orch host ls

Adicionando os discos

ceph orch daemon add osd ceph.jrf.local:/dev/nvme0n2
ceph orch daemon add osd ceph.jrf.local:/dev/nvme0n3

O comando “ceph -s” é utilizado para exibir o estado geral de um cluster Ceph. Ele fornece informações sobre a saúde, status e estatísticas de vários componentes dentro do cluster Ceph. O resultado do comando deve ser algo como ” health: HEALTH_OK

Criando um pool

ceph osd pool create rbd
ceph osd lspools
ceph osd pool application enable rbd rbd

No momento, o comando “rbd list“, virá sem resultados (volumes). Então podemos criar os volumes:

rbd create VMs --size 5G
exit

Agora iremos adicionar os hosts ao cluster, mas antes iremos fazer um backup do arquivo .pub:

cp /etc/ceph/ceph.pub /etc/ceph/ceph.pub.bkp
ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.0.20
ssh 'root@192.168.0.20
ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.0.30
ssh 'root@192.168.0.30

Agora sim, podemos adicionar

cephadm shell
ceph orch host add ceph02.jrf.local
ceph orch host add ceph03.jrf.local

Vamos configurar os OSD em cada host

ceph orch daemon add osd ceph02.jrf.local:/dev/nvme0n2
ceph orch daemon add osd ceph02.jrf.local:/dev/nvme0n3

ceph orch daemon add osd ceph03.jrf.local:/dev/nvme0n2
ceph orch daemon add osd ceph03.jrf.local:/dev/nvme0n3

Verificando o status

ceph -s

Configurando o cliente

Vamos copiar as configurações do servidor

cat /etc/ceph/ceph.keyring && cat /etc/ceph/ceph.conf

No cliente

Iremos instalar o pacote ceph-common usando o apt em um sistema Linux baseado em Debian

sudo apt install -y ceph-common

Vamos copiar o resultado do comando cat executado no servidor e colá-lo nos locais apropriados do cliente.

sudo vim /etc/ceph/ceph.keyring

E

sudo vim /etc/ceph/ceph.conf

Agora temos os discos prontos para uso

sudo rbd list && sudo rbd map VMs

Vamos formatar os discos

sudo mkfs.ext4 /dev/rbd0

Montando os discos

sudo mount /dev/rbd0 /mnt/
*sudo umount /mnt && sudo rbd unmap /dev/rbd0

Interface WEB Ceph https://<NOME DO HOST> ou <IP>:8443