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)
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.
3. Criação do Usuário
Configuração do usuário Ceph
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
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.
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
Crie o pool rbd que não vem criado por padrão.
[root@mon3 ~]# ceph osd pool create rbd 256
pool 'rbd' created
Deixe um comentário