Este artigo abordará como configurar dois nós em um cluster ativo/passivo através da ferramenta DRBD Manage. Entretanto, teremos um volume DRBD em modo primário/primário em ambos os hosts.
Deste modo, todos os dados gravados no nó Ativo serão replicados para o nó Passivo, dados esses que irão compor um volume de dados que poderá ser utilizado por um ou mais containers que serão provisionados através da tecnologia Docker.
O container que iremos provisionar utilizará a imagem oficial da Microsoft para disponibilizar o serviço de Banco de Dados
Microsoft SQL Server.
Para a criação do volume de dados replicado no
Docker utilizaremos o plugin
drbdmanage.
Realizaremos operações no container em execução no primeiro nó do cluster e em seguida, pararemos a execução do container no primeiro nó e inicializaremos ele no segundo nó, permitindo demonstrar que os dados não só irão persistir após a finalização do container como será replicado para o segundo nó do Cluster.
Um pouco de história
Docker
Docker é um projeto open source que permite automatizar o desenvolvimento, distribuição e execução de aplicações em
Linux containers.
Um Linux container é um método para executar isoladamente um ou mais binários em um único host (hospedeiro), sem a necessidade de um hipervisor (que demandaria a instalação de um sistema operacional convidado).
O projeto Docker pode ser instalado e configurado com facilidade não apenas em sistemas
GNU/Linux, mas também em sistemas como Windows e Mac OS/X.
Diferentemente de uma tecnologia de virtualização como Linux KVM, VMWare vSphere, Xen e Hyper-V que demandam a instalação de um sistema operacional convidado, compartilham apenas o Kernel do host no qual estão sendo executados, onde binários e bibliotecas dentro de cada container são a priori restritos ao ambiente de execução de cada container.
Deste modo, cada aplicação/serviço em execução dentro de um container poderá ter seus binários e bibliotecas atualizados sem a preocupação de prejudicar outros containers.
Docker é baseado na tecnologia LXC (Linux Containers), mas temos outras tecnologias de containers como o Jails de sistemas BSD, assim como, temos tecnologias muito mais simples para criação de sandbox (que é base para a idéia empregada em Linux Containers), por exemplo, chroot, onde é possível isolar serviços como o Web Service Apache e o DNS Service Bind.
O Docker foi desenvolvido inicialmente como uma API de alto nível que complementaria o LXC , mas a partir da versão 0.9 introduziu sua própria biblioteca, desenvolvida utilizando a linguagem GO.
Através do Docker é possível executar aplicações diversas como, por exemplo, servidores de banco de dados, web application service, servidores de banco de dados (alvo deste artigo).
Supondo que temos um host com Debian, é possível executarmos containers que disponibilize um sistema/distribuição Ubuntu, SuSE ou CentOS, pois toda a árvore de filesystem contendo binários, arquivos de configuração, bibliotecas (dinâmicas e estáticas) particulares para cada distribuição estarão isoladas em cada container, onde o único elemento utilizado em comum por cada container é o kernel.
DRBD
DRBD é um software compatível com o Sistema Operacional Linux desenvolvido pela empresa Linbit que permite estabelecer um sistema de armazenamento distribuído e replicado.
Ele foi implementado como módulo do Kernel Linux, bem como, oferece diversas ferramentas e scripts para gerenciamento dos volumes replicados.
DRBD é tradicionalmente utilizado em Cluster de Computador com finalidade de complementar sistemas de Alta Disponibilidade. Entretanto, desde a versão 9 ele também vem sendo utilizado para criação de grande estruturas para armazenamento de dados baseados no conceito de SDS (Software Defined Storage), bem como, vem evoluindo com grande foco na integração com tecnologias de Cloud Computing.
É possível utilizar dois modos de operação: Ativo/Passivo (modo que iremos utilizar neste artigo) e o modo Ativo/Ativo, que permite que tanto o primeiro nó do Cluster como o segundo possar ler e gravar dados no volume replicado. Entretanto, o uso do modo Ativo/Ativo demanda tecnologias complementares para gerenciamento do acesso concorrente aos dados, neste caso, sistemas de arquivos para clusters, como por exemplo, GFS2 e OCFS, bem como, é possível utilizar uma variação da tecnologia LVM, o Cluster LVM (CLVM), que permite alocar volumes lógicos de dados (que representam partições de disco) de maneira simultânea em ambos os nós do Cluster.