Como configurar um cluster no Proxmox utilizando Ceph

Neste artigo irei abortar alta disponibilidade utilizando storage compartilhado através do Proxmox com Ceph. Ao final deste artigo você será capaz de configurar um cluster de Proxmox em sua infra-estrutura.



CONSIDERAÇÕES

Estou levando em consideração que já possua habilidades com Proxmox e principalmente Linux 😉 . Irei tratar de assuntos específicos, indo direto ao ponto. A versão utilizada para este artigo é a  5.3.x



INTRODUÇÃO

Alta Disponibilidade, um nome difícil de ouvir e bem complicado de se implementar a pouco tempo atrás. Mas o que é alta disponibilidade? Em resumo, é a possibilidade de um de seus hosts físicos parar de funcionar e as aplicações que rodavam nele, continuarem funcionando a partir de outro host de forma automatizada. Lindo isso não?

Iremos utilizar para esse artigo três máquinas virtuais com o sistema Proxmox 5.3 instalado. Cada máquina desta deve ter no mínimo duas placas de rede, pois irmos utilizar uma destas placas para formar uma rede privada de comunicação entre os storages (Hds). Não vou postar o link do download do Proxmox aqui, isso porque sei que se você chegou até aqui, já tem alguma vivência com ele, e certamente já o instalou, afinal Cluster com Ceph já e algo bem mais avançado.

Vou tentar ser bem sucinto, para passar a essência da configuração e espero que lhe ajude.



1) INSTALE O PROXMOX

Como informado antes, você precisa baixar o Proxmox no site oficial e instala-lo em suas três máquinas físicas no qual irão fazer parte do Cluster. Ou se quiser testar a funcionalidade do Ceph, utilize máquinas virtuais, como no exemplo aqui exposto.



2) CONFIGURAÇÕES PRELIMINARES

Assim que os três Proxmox estiverem instalados é hora de configurarmos as placas de rede. Estas configurações podem ser feitas diretamente em /etc/network/interfaces, ou utilizar a própria interface web do Proxmox, selecionando o host e clicando na opção Rede, como demostrado abaixo.

Edite uma de suas placas de rede e adicione uma outra máscara de IPs para ela, faça isso nos três hosts. Após adicionar as informações reinicie os hosts e teste se as placas estão comunicando entre si.

OBS: Essas placas terão seu uso exclusivo para trocar informações entre hosts, não utilize essa placa para VMs. Sugiro criar uma VLAN exclusiva no seu switch, caso o mesmo possua este recurso, para otimizar o máximo a comunicação entre elas.



3) INSTALANDO O CEPH.

Agora com nossos três hosts em funcionamento e com as placas exclusivas configuradas, vamos a instalação do Ceph. Para isso, execute o comando conforme ilustrado abaixo:

				
					pveceph install -version luminous
				
			

A versão utilizada do Ceph será a luminous, versão padrão adotada pelo Proxmox e que se encontra no repositório próprio.



4) CONFIGURANDO O CEPH

Para configurarmos nosso Ceph precisamos primeiramente entender alguns termos, no quais são eles:

Monitores: Um Ceph Monitor ( ceph-mon) mantém mapas do estado do cluster, incluindo o mapa do monitor, o mapa do gerenciador, o mapa OSD e o mapa CRUSH. Esses mapas são um estado de cluster crítico necessário para que os daemons do Ceph se coordenem entre si. Os monitores também são responsáveis ​​por gerenciar a autenticação entre daemons e clientes. Pelo menos três monitores são normalmente necessários para redundância e alta disponibilidade. (Fonte: http://docs.ceph.com).

Gerentes: Um daemon do Ceph Manager ( ceph-mgr) é responsável por acompanhar as métricas de tempo de execução e o estado atual do cluster do Ceph, incluindo a utilização do armazenamento, as métricas de desempenho atuais e o carregamento do sistema. Os daemons do Ceph Manager também hospedam plugins baseados em python para gerenciar e expor informações de cluster do Ceph, incluindo um painel baseado na Web e uma API REST . Pelo menos dois gerentes são normalmente necessários para alta disponibilidade.

OSDs: Um Ceph OSD (daemon de armazenamento de objetos ceph-osd) armazena dados, manipula a replicação de dados, recuperação, rebalanceamento e fornece algumas informações de monitoramento para os Monitores e Gerentes do Ceph, verificando outros Daemons Ceph OSD por uma pulsação. Pelo menos 3 Ceph OSDs são normalmente necessários para redundância e alta disponibilidade.

MDSs: Um Ceph Metadata Server (MDS ceph-mds) armazena metadados em nome do Ceph Filesystem (ou seja, Ceph Block Devices e Ceph Object Storage não usam MDS). Ceph metadados Servers permitir que os usuários do sistema de arquivos POSIX possam executar comandos básicos (como ls, find, etc.) sem colocar um enorme fardo sobre o Ceph Storage Cluster.

Agora que entendemos os termos vamos a prática:

Após realizarmos a instalação precisamos inicializar o Ceph. Para isso, iremos executar um comando em nosso host 1. Lembrando que só precisaremos executar este comando em um único nó (host) do cluster. Execute o comando no host 1, como ilustrado abaixo.

				
					pveceph init --network 10.0.0.0/24
				
			

Repare que a rede informada é a mesma rede que definimos para ser utilizada pela placa de rede secundária. Através deste comando estamos dizendo que o Ceph utilizará essa rede para realizar a comunicação dos OSDs. Ela será nossa rede (back-side).

Comando executado precisamos então acessar nosso cluster via browser para finalizar as configurações. Perceba que selecionando um de nossos hosts e navegando até a opção discos de cada um deles, podemos observar um disco vazio para ser utilizado. Iremos utilizar esses discos vazios para ser utilizados em nosso armazenamento distribuído.


4.1) CONFIGURANDO MONITORES

O primeiro passo para habilitamos nosso Ceph e a configuração dos monitores, como vimos acima, os monitores são peças fundamentais para nossa configuração. Cada hosts do Cluster terá o papel de monitor, além de também disponibilizar seu OSDs. Selecione um host do cluster e no menu lateral navegue até a opção Ceph>Monitor, e clique na opção Criar, conforme imagem ilustrada abaixo.


4.2) CONFIGURANDO OSDs

Agora precisamos configurar nos OSDs, precisamos dizer ao Ceph, quais são os discos disponíveis para utilização em cada Host. Para isso, selecione um host do cluster e no menu lateral navegue até a opção Ceph>OSD, e clique na opção Criar: OSD, conforme imagem ilustrada abaixo.

Será exibida uma tela de criação, bem semelhante com a de criação do monitor, porém com mais opções, que são elas:

Disk: Selecione o disco do host acessado. Nesta opção aparecerá os discos disponíveis do seu host selecionado.

Journal/BD Disk: Esta opção é utilizada para ganho de performance,  caso possua um disco SSD adicional em seu host. Utilize para armazenamento de journal e banco de dados do disco.

Bluestore: Novo sistema de arquivos próprio utilizado pelo Ceph, disponível a partir da versão luminous, possui um ganho de velocidade comparado ao ZFS utilizado nas versões anteriores.

OBS: É importante salientar que, o Ceph permite a configuração de vários OSDs por disco, como também possuir vários discos por host. A recomendação é que se utilize uma OSD por disco, e que a cada 1 Tb de armazenamento de disco, tenha 1Gb de memória extra disponível para suporta-lo. Lembre-se de dividir a capacidade de armazenamento entre os nós do cluster, caso tenha dois discos para utilização no Ceph em um único host, disponha também a mesma quantidade nos demais nós do cluster, assim estará garantindo a alta disponibilidade caso um host venha a parar.


4.3) CONFIGURANDO POOL

Agora com nossos Monitores e OSDs criados, vamos criar um Pool de armazenamento que será o suporte para armazenar nosso dados. As informações gravadas no pool, serão replicadas para todos os OSDs que fazem parte dele. Para criamos um pool selecione um host do cluster e no menu lateral navegue até a opção Ceph>Pools, e clique na opção Criar, conforme imagem ilustrada abaixo.

Será exibida uma tela de criação, bem semelhante com a de criação do monitores e OSDs, porém com mais opções, que são elas:

Nome: Define o nome que deseja chamar o pool

Tamanho: Este tamanho define a quantidade de replicações que seu pool irá fazer, a regra é: Se possui três hosts com três OSDs então o tamanho seria três. Este tamanho está relacionado aos OSDs, mas lembre-se da quantidade de hosts como explicado acima, não adianta ter dois discos em um host e somente um disco em outro, se caso perder este host com dois discos, seu sistema será degradado.

Min. Size: Tamanho minimo de replicações.

Crush Rule: Regra utilizada pelo pool, no caso replicated_rule.

pg_num: tamanho do grupo de veiculação entre os OSDs utilizados na replicação. Para definição deste número leva-se em consideração uma pequena regra:

  • Menos de 5 OSDs configurados pg_num para 128.
  • Entre 5 e 10 OSDs configurados pg_num para 512.
  • Entre 10 e 50 OSDs configurados pg_num para 1024.
  • Se você tem mais de 50 OSDs, você precisa entender os trade-offs e como calcular o pg_num valor sozinho.

Add Storage: Marcando essa opção, automaticamente ao criar o pool, será disponibilizado dentro do nosso cluster um storage de armazenamento para utilização.

Crie um pool e marque a opção add storage.



5) TESTE DE DESEMPENHO DO CEPH

Também através do prompt de comando, podemos realizar alguns testes que são muito uteis quando estamos trabalhando com CEPH. Através do comando abaixo é possível realizar um benchmark de leitura e gravação, podendo a partir dos resultados analisar e melhorar a performance de seus hosts ou do cluster em geral.

Teste Gravação:

				
					rados -p bench 10 write --no-cleanup
				
			

Teste Leitura:

				
					rados -p bench 10 seq
				
			


CONCLUSÃO

Através deste artigo foi possível demostrar de uma forma clara e expositiva a criação e utilizado de um armazenamento distribuído com Ceph Luminous dentro do Proxmox 5.3.

Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.

Att,
Rafael Oliveira
SysAdmin

Você pode compartilhar esse artigo.

Siga o Blog Via E-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 46 outros assinantes

Sobre o Autor

Rafael Oliveira Maria - Linux

Rafael Oliveira

Bacharel em Sistemas de Informação, SysAdmin, Professor, Blogueiro e Entusiasta Linux.

Certificados:

LPIC-1-Large
LPIC-2
LinuxPlus Logo Certified
itil-foundation-digital-badge

Gostou do conteúdo? Ajude-me a manter o blog.

PicPay - Linux

Aceitamos pagamentos e doações via PicPay link picpay.me/rafaeloliveimar

Ficou com dúvida? Alguma Sugestão ou Elogio? Deixe seu comentário!