Neste post será apresentado como realizar o deploy do ambiente.
Ceph é uma solução de Software Defined Storage (SDS) , com o conceito de ser distrubuído e unificado foi desenhado para ter uma excelente confiabilidade, escalabilidade e performance.
Para um rápido overview vocês podem acessar o link com informações gerais sobre o conceito de object store e o Ceph como SDS.
1. Introdução
Neste lab estamos realizando deploy da versão Luminous versão Bluestore.
O BlueStore é uma implementação limpa da nossa interface interna do ObjectStore a partir dos primeiros princípios, motivada especificamente pelas cargas de trabalho.
O BlueStore é construído sobre um dispositivo de bloco subjacente bruto (ou dispositivos de bloco). Ele incorpora o banco de dados chave / valor RocksDB para gerenciar seus metadados internos. Um pequeno componente de adaptador interno chamado BlueFS implementa uma interface semelhante a um sistema de arquivos que fornece funcionalidade suficiente para permitir que o RocksDB armazene seus “arquivos” e compartilhe os mesmos dispositivos brutos com o BlueStore.

Para melhor compreensão da versão Filestore e Bluestore o link abaixo explica com detalhes .
http://docs.ceph.com/docs/mimic/rados/configuration/storage-devices/
No cenário serão deployados via Vagrant e Virtualbox as vms controller , mon1,mon2 ,mon3,osd1,osd2 e osd3.
Recursos iniciais das vms :
- Centos 7
- RAM : 512 Mb (OSD’s e Mon’s) Controller 1Gb
- 1 CPU
- 40 Gbs disco do Sistema Operacional e 5Gbs para OSD`s.
Durante o laboratório estamos utilizando :
- NTP apontando para os servidores do CentOS (0.centos.pool.ntp.org)
- FirewallD desabilitado
- SELinux desabilitado
Laboratório do site :
https://cephbrasil.com/laboratorio-do-site/
2. Deploy das VMs
Primeiro vamos baixar o repositório
cd /opt
git clone https://github.com/cephbrasil/deploy
Iremos iniciar o deploy das vms
vagrant up mon1 mon2 mon3 osd1 osd2 osd3 controller
Estamos deixando a vm controller por último , pois durante o processo dele é copiado as chaves ssh de acesso.
Segue abaixo um exemplo do momento do deploy do Vagrant.
3. Criação do Usuário
Configuração do usuário Ceph
useradd -d /home/cephuser -m cephuser
passwd cephuser
Configuração do sudo
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
Crie as chaves do usuário ceph
[vagrant@controller ~]$ su - ceph
[ceph@controller ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ceph/.ssh/id_rsa):
Created directory '/home/ceph/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ceph/.ssh/id_rsa.
Your public key has been saved in /home/ceph/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:v35gS/7YWnUPZkae6Jm9dLPDTtPCUYD/8EetlzeT7bE ceph@controller
The key's randomart image is:
+---[RSA 2048]----+
| .. |
| . . |
| .. o|
| +ooo|
| S . X*=|
| .+. X.XX|
| +.o= **@|
| o=...E=|
| .=+o oo.|
+----[SHA256]-----+
Crie o arquivo de ssh do usuário ceph
[ceph@controller ~]$ vi ~/.ssh/config
Host controller
Hostname controller
User ceph
Host mon1
Hostname mon1
User ceph
Host osd1
Hostname osd1
User ceph
Host osd2
Hostname osd2
User ceph
Host osd3
Hostname osd3
User ceph
Distribua a chave ssh entre os hosts do cluster
ssh-keyscan osd1 osd2 osd3 mon1 mon2 mon3 >> ~/.ssh/known_hosts
ssh-copy-id <HOST>
4. Preparação do Ceph
Configuração do repositório do Luminous.
sudo rpm -Uvh http://download.ceph.com/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm
sudo yum update -y && sudo yum install ceph-deploy -y
Vamos gerar a configuração dos Ceph monitors.
su - ceph
mkdir ceph
cd ceph
ceph-deploy new mon1 mon2 mon3
Vamos a ajustar a configuração do ceph.conf colocando a rede 10.10.10.0/24 , pois esta é a rede de storage para o lab e neste momento não teremos um lab com rede de replicação .
vi ceph.conf
[global]
[global]
fsid = 40de64cc-7e71-45fb-a892-15361b18e227
mon_initial_members = mon1, mon2, mon3
mon_host = 10.10.10.100,10.10.10.101,10.10.10.102
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 10.10.10.0/24
cluster network = 10.10.10.10/24
#Choose reasonable numbers for number of replicas and placement groups.
osd pool default size = 2 # Write an object 2 times
osd pool default min size = 1 # Allow writing 1 copy in a degraded state
osd pool default pg num = 256
osd pool default pgp num = 256
#Choose a reasonable crush leaf type
#0 for a 1-node cluster.
#1 for a multi node cluster in a single rack
#2 for a multi node, multi chassis cluster with multiple hosts in a chassis
#3 for a multi node cluster with hosts across racks, etc.
osd crush chooseleaf type = 1
Execute a instalação inicial dos pacotes com o comando abaixo .
cd ~ceph/ceph/ #Acesso ao diretório de deploy
ceph-deploy install controller mon1 mon2 mon3 osd1 osd2 osd3
Após da instalação do ambiente crie o as chaves do Ceph .
cd ~ceph/ceph/ #Acesso ao diretório de deploy
ceph-deploy mon create-initial
[ceph@controller ceph]$ ls -l
total 472
-rw-------. 1 ceph ceph 113 Aug 27 01:09 ceph.bootstrap-mds.keyring
-rw-------. 1 ceph ceph 113 Aug 27 01:09 ceph.bootstrap-mgr.keyring
-rw-------. 1 ceph ceph 113 Aug 27 01:09 ceph.bootstrap-osd.keyring
-rw-------. 1 ceph ceph 113 Aug 27 01:09 ceph.bootstrap-rgw.keyring
-rw-------. 1 ceph ceph 151 Aug 27 01:09 ceph.client.admin.keyring
-rw-rw-r--. 1 ceph ceph 828 Aug 27 00:48 ceph.conf
-rw-rw-r--. 1 ceph ceph 453562 Aug 27 01:14 ceph-deploy-ceph.log
-rw-------. 1 ceph ceph 73 Aug 27 00:25 ceph.mon.keyring
Se a execução falhar por algum motivo , execute novamente com o comando abaixo para reiniciar o processo:
ceph-deploy –overwrite-conf mon create-initial
Faça deploy do ceph manager , em nosso cenário será realizado no mon1.
ceph-deploy mgr create mon1 mon2 mon3
5. Deploy das OSD’s
Vamos executar o comando abaixo para checar se os discos SDB , SDC e SDD estão nas vms OSD1 , OSD2 e OSD3.
[ceph@controller ceph]$ ceph-deploy disk list osd1 osd2 osd3
...
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/ceph/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (2.0.1): /bin/ceph-deploy disk list osd1 osd2 osd3
[ceph_deploy.cli][INFO ] ceph-deploy options:
[ceph_deploy.cli][INFO ] username : None
[ceph_deploy.cli][INFO ] verbose : False
[ceph_deploy.cli][INFO ] debug : False
[ceph_deploy.cli][INFO ] overwrite_conf : False
[ceph_deploy.cli][INFO ] subcommand : list
[ceph_deploy.cli][INFO ] quiet : False
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7fd6edc7aa28>
[ceph_deploy.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] host : ['osd1', 'osd2', 'osd3']
[ceph_deploy.cli][INFO ] func : <function disk at 0x7fd6ee0c19b0>
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] default_release : False
Destrua todos os dados nos discos
cd ~ceph/ceph/ #Acesso ao diretório de deploy
ceph-deploy disk zap <OSD HOST> /dev/sdb
ceph-deploy disk zap <OSD HOST> /dev/sdc
ceph-deploy disk zap <OSD HOST> /dev/sdd
Deploy das OSDs.
cd ~ceph/ceph/ #Acesso ao diretório de deploy
ceph-deploy osd create --data /dev/sdb <OSD HOST>
ceph-deploy osd create --data /dev/sdc <OSD HOST>
ceph-deploy osd create --data /dev/sdd <OSD HOST>
6. Deploy do Ceph
Configure os arquivos de configuração e chaves com o comando abaixo.
cd ~ceph/ceph/ #Acesso ao diretório de deploy
ceph-deploy admin controller mon1 mon2 mon3 osd1 osd2 osd3
Valide instalação executando o comando abaixo.
[root@mon1 ~]# ceph health
HEALTH_OK
Referência
https://cephbrasil.com/