Usar contêineres com o SQL Server no Linux

Concluído

Os contêineres ajudam as organizações a criar instalações flexíveis e escaláveis do SQL Server.

A Wide World Importers suporta algumas cargas de trabalho de banco de dados de grande escala que exigem uma arquitetura de hospedagem flexível e escalável. Você deseja avaliar a possibilidade de hospedar o SQL Server em ambientes virtuais, como máquinas virtuais (VMs) e contêineres.

Aqui, você aprenderá a escolher entre contêineres e VMs para um banco de dados.

Comparando VMs e contêineres

A virtualização é uma técnica que os administradores usam para hospedar vários servidores virtuais em um único servidor físico. Ao usar a virtualização, você pode facilmente implantar instâncias extras, por exemplo, do SQL Server sem comprar e instalar hardware extra. Há duas abordagens comuns para a virtualização:

  • VMs: Quando você usa VMs, cada instância é um servidor virtual completo com seu próprio sistema operacional e hardware.
  • Contêineres: Quando você usa contêineres, cada instância compartilha um sistema operacional e recursos de hardware com o computador host.

Tanto VMs quanto contêineres fornecem um ambiente isolado no qual aplicativos como o SQL Server são executados como se estivessem em um computador físico separado.

As VMs são maiores e levam mais tempo para serem criadas, mas, como têm seu próprio sistema operacional, usam uma configuração e hardware diferentes do computador host. Você também pode misturar VMs com sistemas operacionais diferentes no mesmo host. Por exemplo, em um host Linux, você pode instalar uma VM executando Linux e Apache para hospedar um site. Também pode haver outra VM executando o Windows e o SQL Server para hospedar um banco de dados.

Os contêineres são menores, por isso carregam muito mais rapidamente do que as VMs. No entanto, se o seu host executa o Linux Ubuntu, por exemplo, todos os contêineres nesse computador devem executar a mesma versão do Ubuntu. Em um host Linux, você pode instalar um contêiner executando Linux e Apache, mas seu contêiner de banco de dados também deve executar Linux. Isso é possível desde que você execute o SQL Server 2017 ou posterior.

Diagram comparing the layers of software required to run VMs versus Containers.

Na máquina host, você deve instalar software como Hyper-V ou VirtualBox para hospedar VMs. Para contêineres, você pode usar o sistema Docker, CRI-O, rkt e outros hosts de contêiner.

Razões para usar máquinas virtuais

Ainda há situações para as quais os contentores não são a melhor solução. Como os contêineres são executados em um único sistema operacional e compartilham recursos do sistema, a segurança é uma preocupação. Se um invasor ganhar privilégios de superusuário , alguns vetores podem levar à obtenção de acesso aos aplicativos. Em contêineres, os aplicativos precisam ser executados no mesmo sistema operacional do computador host. Não é possível executar aplicativos baseados em Linux em contêineres no Windows. Com VMs, você hospeda uma máquina Linux no Windows ou uma máquina Windows no macOS, oferecendo maior flexibilidade. As VMs permitem que você hospede vários aplicativos com integração total em uma única VM. Tradicionalmente, os contêineres hospedam apenas aplicativos únicos.

As VMs são menos eficientes do que os contêineres. Em um determinado conjunto de hardware, você pode executar pelo menos o dobro do número de aplicativos em contêineres do que com VMs. Uma VM usa mais recursos, porque precisa de uma cópia completa do sistema operacional e versões virtualizadas de todo o hardware para suportar o sistema operacional convidado.

Razões para utilizar contentores

Os contêineres são mais leves em comparação e permitem que você empacote aplicativos em um espaço menor. Como um único sistema operacional está hospedando os contêineres, há menos administração. Você só precisa corrigir e atualizar um único sistema operacional, em vez de cada sistema operacional convidado em cada VM. Os contêineres são menores e mais diretos, portanto, podem ser iniciados em segundos, em vez dos minutos necessários para iniciar uma VM.

Orquestração

Você pode usar o Docker Swarm, o Kubernetes e outras soluções para orquestrar contêineres. Os orquestradores monitoram e possibilitam dimensionar aplicativos usando contêineres e fornecem um nível de recuperação de desastres. A Microsoft fornece ferramentas e exemplos de como usar o Kubernetes, por isso é uma boa opção para contentorizar o SQL Server no Linux. Há uma imagem de contêiner do SQL Server no Linux disponível para uso com o Kubernetes.

SQL Server em contêiner no Linux

Um problema com bancos de dados em execução em contêineres é o armazenamento persistente. Você deve fornecer um local de armazenamento fora do contêiner onde o banco de dados pode manter arquivos de banco de dados. As alterações ficam disponíveis para todos os contêineres em um cluster. Se você usa o Kubernetes, pode usar um volume persistente para esse local.

Diagram of the a Kubernetes cluster running SQL Server and the relationship between nodes, pods, storage, replica sets, and the service.

Primeiro, crie um volume persistente e, em seguida, adicione uma declaração de volume persistente (PVC). Crie um manifesto de implantação para o SQL Server no Linux que use a imagem de contêiner criada mssql-server-linux pela Microsoft. O manifesto também contém definições para o PVC e um balanceador de carga para o serviço para garantir um endereço IP consistente. Crie a implantação e verifique se o SQL Server está sendo executado dentro de um pod. Com essa configuração concluída, o Kubernetes inicializará uma nova instância se o nó falhar. Um teste simples é excluir esse pod e verificar se um novo é iniciado automaticamente.

Verifique o seu conhecimento

1.

Quando uma VM seria a melhor opção para hospedar um aplicativo?