Docker + Cluster DRBD + SQL Server - Database as a Service Utilizando Volumes Replicados
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.
Parte 6: Verificando a replicação de dados para o segundo nó do Cluster
Iremos parar o container no primeiro nó do Cluster (containernode01):
docker stop SQLServer01
Verifique também que ao finalizar a execução do Container, o volume é desmontado, verificando o atributo MountPoint que antes referenciava /run/docker/drbdmanage/mnt/volumeDatabase e agora referencia somente /.
docker volume inspect volumeDatabase
Acesse o segundo nó do Cluster (containerhost02), e crie o container utilizando o comando a seguir:
docker run -name SQLServer01 -e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=#AdminSQLServer2017' \
-p 1433:1433 -v volumeDatabase:/var/opt/mssql \
-d microsoft/mssql-server-linux
Aguarde o pull da imagem para que o container seja criado e entre em execução.
Execute o binário do cliente sqlcmd novamente:
docker exec -it SQLServer01 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P#AdminSQLServer2017
Liste os databases existentes:
SELECT Name from sys.Databases;
go
quit
O último select comprova que todos os database do SQL Server, inclusive o que database que criamos (empresa) foi replicado para o segundo nó do Cluster.
Esta abordagem permite definir um host de containers que atuará em modo stand by, permitindo que na ocorrência de falhas do primeiro nó, o segundo nó inicie os containers e os mesmo acesse a réplica realizada dos volumes.
Conforme pode ser verificado, com a replicação de dados garantimos a alta disponibilidade de dados persistentes para containers, bem como, com o uso do plugin e da ferramenta drbdmanage, podemos rapidamente não só provisionar um Cluster, mas realizar a criação de volumes no Docker com grande facilidade.
docker stop SQLServer01
Verifique também que ao finalizar a execução do Container, o volume é desmontado, verificando o atributo MountPoint que antes referenciava /run/docker/drbdmanage/mnt/volumeDatabase e agora referencia somente /.
docker volume inspect volumeDatabase
Acesse o segundo nó do Cluster (containerhost02), e crie o container utilizando o comando a seguir:
docker run -name SQLServer01 -e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=#AdminSQLServer2017' \
-p 1433:1433 -v volumeDatabase:/var/opt/mssql \
-d microsoft/mssql-server-linux
Aguarde o pull da imagem para que o container seja criado e entre em execução.
Execute o binário do cliente sqlcmd novamente:
docker exec -it SQLServer01 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P#AdminSQLServer2017
Liste os databases existentes:
SELECT Name from sys.Databases;
go
quit
O último select comprova que todos os database do SQL Server, inclusive o que database que criamos (empresa) foi replicado para o segundo nó do Cluster.
Esta abordagem permite definir um host de containers que atuará em modo stand by, permitindo que na ocorrência de falhas do primeiro nó, o segundo nó inicie os containers e os mesmo acesse a réplica realizada dos volumes.
Conforme pode ser verificado, com a replicação de dados garantimos a alta disponibilidade de dados persistentes para containers, bem como, com o uso do plugin e da ferramenta drbdmanage, podemos rapidamente não só provisionar um Cluster, mas realizar a criação de volumes no Docker com grande facilidade.