Guia passo a passo para instalar o Ceph em ambiente mononode
Houve um tempo atrás que tive que criar um Storage para um ambiente de Openstack usando o FreeNAS. Devo dizer que não encontrei uma única documentação que explicasse como seria possível fazer a integração entre os dois, por isso acabei tomando a liberdade no projeto de usar o caminho mais fácil, no caso uma que tivesse suporte total ao Openstack. Por isso minha escolha foi o Ceph: um object storage planejado para trabalhar da melhor maneira possível dentro de um cluster.
Esse post tem como intuito explicar um pouco o que é o Ceph e como fazer uma instalação em um ambiente mononode (que é possível, pois um cluster Ceph se refere à 1 ou mais discos).
O que é o Ceph
Como já dito anteriormente, o Ceph se trata de um object storage, aonde todos os dados são armazenados dentro de um pool, que seria o equivalente a um diretório aonde seus arquivos podem ser armazenados. O Ceph pode ter N pools dentro de um mesmo cluster, porém tudo depende da quantidade de Placement Groups que você ainda tem disponível.
Placement Groups é a unidade que o Ceph usa para armazenar seus dados dentro do disco – seria um equivalente a uma extent do EXT4. Cada pg irá fazer parte de algum membro do cluster, ou um OSD (object storage device). Quanto mais PGs você tiver, mais seus dados serão fragmentados, por outro lado mais rápido será a recuperação em caso de falha. Lembre-se também que o número de PGs também afeta o desempenho do disco, então em casos que seu cluster for pequeno, como no caso do nosso que terá somente dois discos e uma única máquina, dê preferência a manter os valores padrão.
Além disso o Ceph é formado por 3 serviços importantes: ceph-monitor (cmon), ceph-osd (cosd), e o ceph-admin (cmds). Ceph-monitor é responsável por manter uma cópia de como os dados estão armazenados dentro de seu cluster, já o ceph-osd é responsável por gerenciar os nodes do seu cluster, e por ultimo o ceph-admin que é o serviço de administração do seu cluster.
Instalando o Ceph Mononode
Para instalar esse ambiente, nosso cluster será baseado em discos e não em máquina, sendo que teremos somente 1 máquina com 2 discos de 2TB com o sistema operacional CentOS 7. Primeiramente precisamos instalar o repositório EPEL (Extra Packages for Enterprise Linux) para que possamos ter acesso aos pacotes de dependência do Ceph.
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
Para instalar o Ceph, abra o arquivo /etc/yum.repos.d/ceph.repo e inclua as linhas abaixo para que possamos instalar os pacotes do Ceph, como o ceph-deploy. Para essa instalação iremos usar a luminous, mas caso queira usar outra versão basta alterar no arquivo a palavra luminous para o nome da versão escolhida (como por exemplo jewel):
# cat >/etc/yum.repos.d/ceph.repo [ceph] name=Ceph packages for $basearch baseurl=https://download.ceph.com/rpm-luminous/el7/$basearch enabled=1 priority=1 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-luminous/el7/noarch enabled=1 priority=1 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=https://download.ceph.com/rpm-luminous/el7/SRPMS enabled=0 priority=1 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc
Instale o ceph-deploy na máquina, que se trata de um programa responsável por fazer a instalação e configuração do Ceph dentro de todas as máquinas do Cluster:
# yum install ceph-deploy -y
A instalação do Ceph pode ser feita com usuário administrativo, porém por questões de segurança é solicitado que tudo seja feito com um usuário sem privilégios. Sendo assim crie um usuário chamado ceph-user dentro de seu sistema antes de continuarmos com a instalação. Aproveite e também troque a senha do mesmo para que possamos fazer a troca de chaves entre os servidores, já que toda a comunicação do cluster será feita através de SSH (mesmo sendo uma única máquina):
# useradd ceph-user # passwd ceph-user
Altere para o usuário que acabou de criar e crie uma chave de SSH para o mesmo, de preferência sem senha para usar. Troque a chave entre os servidores com o comando ssh-copy-id e então valide a autenticação via SSH com chave.
# su - ceph-user $ ssh-keygen $ ssh-copy-id ceph-user@localhost $ ssh ceph-user@localhost
Para começar a instalação, inicialize o servidor atual como um node do Ceph através do comando ceph-deploy new <servidor> conforme abaixo:
$ ceph-deploy new localhost
Após o término da execução será criado um diretório chamado my-cluster no seu diretório atual. Entre nele e altere o arquivo ceph.conf para ficar conforme abaixo (ignore o fsid, pois ele é único por node):
$ vim my-cluster/ceph.conf [global] fsid = 5328cf3a-8dc4-40c9-a0c5-8cdb4d99e132 mon_initial_members = storage01 mon_host = 10.0.0.49 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx osd pool default size = 2 osd crush chooseleaf type = 0
O que faz com que o Ceph possa trabalhar com um número limitado de máquinas é a opção osd crush chooseleaf type, que é usado pelo serviço de CRUSH do Ceph para decidir quais servidores os dados serão armazenados. Por se tratar de um ambiente mononode, basta colocar a opção como 0 que esse serviço será desabilitado. Alteração feita, agora basta instalar seus serviços na nossa única máquina através do comando ceph install conforme abaixo:
$ ceph-deploy install localhost --release luminous
A opção –release serve para informarmos que queremos que seja feito a instalação da versão mais recente. Aguarde o término da instalação dos pacotes e configuração para que possamos criar o monitor. O monitor será criado através do comando abaixo:
$ ceph-deploy mon create-initial
Pronto! Feito isso temos um cluster de Ceph, porém não temos nenhum armazenamento para ele. Precisamos incluir os discos para que possamos começar a criar nossos PGs e começarmos a armazenar nossos dados. Para incluir os discos, supondo que eles se chamem sdb e sdc, execute o comando de preparação dos discos conforme abaixo:
$ ceph-deploy osd prepare localhost:sdb $ ceph-deploy osd prepare localhost:sdc
Ao término você terá duas partições em cada disco, uma que será aonde os dados serão armazenados (/dev/sdx1) e outra aonde ficará o Journaling da partição (/dev/sdx2). Ambas as partições são necessárias para consistência de escrita do Ceph, então iremos informar que ambas as partições farão parte do cluster através do comando ceph-deploy osd activate conforme abaixo:
$ ceph-deploy osd activate localhost:/dev/sdb1:/dev/sdb2 $ ceph-deploy osd activate localhost:/dev/sdc1:/dev/sdc2
Por último instale o serviço do ceph-admin e o ceph-manager para concluir a instalação:
$ ceph-deploy admin storage01 $ ceph-deploy mgr create storage01
Para validar, verifique se o comando ceph -s retorna a saúde como HEALTH_OK.
$ ceph -s cluster: id: 5328cf3a-8dc4-40c9-a0c5-8cdb4d99e132 health: HEALTH_OK services: mon: 1 daemons, quorum storage01 mgr: storage01(active) osd: 4 osds: 2 up, 2 in data: pools: 2 pools, 128 pgs objects: 9072 objects, 35427 MB usage: 73610 MB used, 3653 GB / 3725 GB avail pgs: 128 active+clean io: client: 75819 B/s wr, 0 op/s rd, 13 op/s wr
Com isso encerramos o artigo de instalação do Ceph em mononode. Para esse artigo foi usado a documentação do Ceph conforme link abaixo, e num post futuro irei retornar para explicar como será feito para criar um “pool” de armazenamento de arquivos.
- http://docs.ceph.com/docs/master/start/
About author
Você pode gostar também
Guia prático: Autenticação via SSH com a ferramenta Vault da HashiCorp
Vault é uma ferramenta desenvolvida pela HashiCorp, essa ferramenta tem como objetivo fazer um armazenamento inteligente de “segredos”, podem ser eles, chaves de ssh, dados de acesso a um banco
Tutorial: Configurando o Traefik no Docker Swarm com arquivos YAML
Neste tutorial, você aprenderá como configurar o Traefik no Docker Swarm usando arquivos YAML, uma forma fácil e eficiente de gerenciar seus aplicativos de contêineres em larga escala. Ao seguir
Descubra o poder do comando sed para manipulação de texto no Linux
No vasto universo de linha de comando, existem ferramentas extremamente versáteis e poderosas que podem ser utilizadas em diversas situações, e dentre dezenas de ferramentas, podemos facilmente destacar o sed,