Ceph : Deploy do Luminous na versão Filestore

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 Filestore.

FileStore é a abordagem legada para armazenar objetos no Ceph. Ele se baseia em um sistema de arquivos padrão (normalmente XFS) em combinação com um banco de dados chave / valor (tradicionalmente LevelDB) para alguns metadados.



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 .

 ceph-deploy install controller mon1 mon2 mon3 osd1 osd2 osd3



Após da instalação do ambiente crie o as chaves do Ceph .

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



Execute a preparação dos discos de journal e dados em cada host OSD.

# journal 
parted /dev/sdb --script -- mklabel gpt 
parted --script /dev/sdb mkpart primary 0MB 2420MB 
parted --script /dev/sdb mkpart primary 2421MB 4842MB 
sgdisk --zap-all --clear --mbrtogpt -g -- /dev/sdb1
sgdisk --zap-all --clear --mbrtogpt -g -- /dev/sdb2
ceph-volume lvm zap /dev/sdb1
ceph-volume lvm zap /dev/sdb2 

# data 
dd if=/dev/zero of=/dev/sdc  bs=1M count=1000
dd if=/dev/zero of=/dev/sdd  bs=1M count=1000



Deploy das OSDs.

ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdc --journal /dev/sdb1 <OSD HOST> 
ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdd --journal /dev/sdb2 <OSD HOST> 


6. Deploy do Ceph

Configure os arquivos de configuração e chaves com o comando abaixo.

ceph-deploy admin controller mon1 mon2 mon3 osd1 osd2 osd3


Valide instalação executando o comando abaixo.

[root@mon1 ~]# ceph -s
  cluster:
    id:     40de64cc-7e71-45fb-a892-15361b18e227
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum mon1,mon2,mon3
    mgr: mon1(active), standbys: mon3, mon2
    osd: 50 osds: 5 up, 5 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   433 MiB used, 20 GiB / 20 GiB avail
    pgs:     

Referência
https://cephbrasil.com/ceph-filestore-deploy-do-luminous/

Translate »