DevSecOps

30 mai, 2016

Persistindo dados – Flocker

Publicidade

Olá!

Hoje vamos abordar mais uma forma de como você pode persistir os dados de sua aplicação, garantindo maior disponibilidade para seu ambiente. Hoje o assunto é sobre o Flocker.

A proposta do Flocker é muito parecida com as demais soluções para sistema de arquivos distribuídos. A grande diferença está no foco que a ClusterHQ (desenvolvedora da solução) está dando para o projeto, pois o objetivo tem sido tornar o Flocker cada vez mais especializado em Docker, ou seja, o objetivo do Flocker não é atender a qualquer tipo de problema, mas sim, atender muito bem uma das deficiências que há no Docker , que é a persistência de dados – tanto que o Flocker em si já é um plugin de volumes oficial do Docker.

Veja abaixo uma imagem que ilustra muito bem o que o Flocker se propõem a atender:

diagram-1

Atualmente, quando você instancia um container em outro host, você precisa cuidar para que o volume de onde está sua aplicação também tenha mapeamento nesse novo host. O, o objetivo do Flocker é abstrair esse tipo de preocupação e garantir que quando um container for movido de um lado para o outro, os dados que estavam mapeados nele também acompanhem esse movimento.

Veja abaixo como é a arquitetura dessa plugin:

diagram-4

Note que, diferentemente do GlusterFS, você precisa ter um ambiente mais complexo, envolvendo basicamente 3 camadas: Flocker Plugin, que é responsável pela comunicação entre o Docker e o Flocker; Flocker Conrol, responsável pelo monitoramento dos volumes, e controle sob o funcionamento do ambiente; Flocker Agent, responsável por executar as ações de criação, remoção e demais ações do Flocker no host que faz parte do ambiente.

Novamente, e o Docker?

Como já falamos em artigos anteriores, a intenção não é mostrar a vocês como realizar a instalação e configuração do cluster de Flocker, mas, sim, seu uso final, juntamente com o Docker. Talvez, daqui a pouco possamos montar um material com isso.

Mãos na massa:

Primeiro vamos criar o volume Docker utilizando o plugin do Flocker, para isso:

$ docker volume create --name volume-1 -d flocker

Agora basta mapear esse volume criado aos containers que desejar:

$ docker run -v volume-1:/data -it centos /bin/bash

Basta criar algum arquivo ou pasta no diretório /data do container e essa informação será salva no volume Flocker que você criou, para ter certeza de que o dado estará nesse volume. Crie outro container mapeando esse volume e você verá que no /data desse novo container estará o arquivo/pasta que você criou no primeiro.

Fácil, né? O mais interessante no Flocker é que você não perde os dados caso dê algum problema no host. O volume será criado no cluster Flocker que você montou, e isso é o que garante a disponibilidade da informação.

Abraço!