Ceph : Deploy do Luminous na versão bluestore

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/

Translate »