LXD

Tutorial LXD

Tutorial LXD

LXD Basics: O que é? E como usar?

A conteinerização LXD não ganhou o centro das atenções que o Docker, mas está, na verdade, muito mais perto da ideia central de virtualização de sistema operacional. Mas antes de chegarmos lá, vamos falar sobre a virtualização de nível de hardware contemporânea.

Virtualização de hardware

A maneira tradicional com a qual VMware, VirtualBox, KVM e tecnologias semelhantes funcionam é esta - você tem um computador de nível de servidor, digamos, um processador Xeon de ponta com 512 GB de RAM, conhecido como bare metal. Você instala um sistema operacional nele, que então executa VMware, Virtualbox ou KVM.

Estes são vários hipervisores, e o sistema operacional que os executa é o sistema operacional host.

Agora, o que o hipervisor oferece é isso - ele emula CPU, interfaces de rede, discos de armazenamento, memória, E / S e outros recursos de forma que um novo sistema operacional possa ser instalado em cima deste conjunto de hardware virtual. Este novo sistema operacional é o sistema operacional convidado e roda em hardware virtual, como se fosse instalado em uma máquina física, mas há um problema.

Se você está pensando: “Mas emular vários dispositivos de hardware usando o hardware real parece ineficiente e lento.“Você está absolutamente correto. A virtualização de nível de hardware é lenta e ineficiente.

Além disso, os próprios sistemas operacionais são malucos por controle. Se você alocar um sistema operacional convidado de 1 GB de RAM e 2 núcleos de CPU, ele ficará feliz em usar todos os recursos, mesmo que os aplicativos em execução dentro dele usem apenas uma fração deles. Esses recursos ficarão indisponíveis para o hipervisor usar em outro lugar.

Isso limita severamente o número de VMs que podem ser executadas em cima de um hipervisor. Se você é um provedor de hospedagem em nuvem, isso significa que seus resultados serão gravemente afetados.


A forma de contêiner de fazer as coisas

A ideia de hardware virtualizado é jogada para fora da janela quando começamos a falar sobre contêineres e, especificamente, LXD. Em vez de emular recursos de hardware individuais, o que tentamos fazer é virtualizar o sistema operacional.

Quando um contêiner LX é girado, o SO oferece a si mesmo (ou seja, o kernel, as bibliotecas, todos os recursos disponíveis para ele) para os aplicativos executados dentro do contêiner. Os usuários e aplicativos dentro deste contêiner não saberão dos aplicativos e pacotes em execução fora dele e vice-versa.

No que diz respeito à alocação de recursos, você pode simplesmente anotar para não permitir que um contêiner específico use mais do que, digamos, 2 GB de RAM e 2 CPUs. Dessa forma, quando os aplicativos em execução dentro de um contêiner não fazem nada intensivo, os recursos podem ser alocados em outro lugar no ambiente de host.

No entanto, quando os aplicativos estão sendo executados sob carga pesada, eles obtêm o desempenho bare metal!

A desvantagem óbvia disso é que você não pode executar nenhum sistema operacional arbitrário como convidado. Porque diferentes sistemas operacionais têm diferentes arquiteturas completamente. Felizmente para usuários GNU / Linux, o kernel Linux oferece uma compatibilidade ABI tão rígida que você pode emular diferentes distribuições no mesmo kernel. Assim, você pode executar binários CentOS e aplicativos Ubuntu no mesmo metal, apenas em contêineres diferentes.


LXD init

A containerização LX é uma tecnologia bem testada e robusta para sistemas operacionais baseados em Linux. Ele tem dois componentes principais, um é o LXC, que gerencia as configurações do contêiner, arquivos de imagem, etc, e o LXD, que é o daemon em execução em seu host, garantindo que todas as políticas definidas para a contêinerização sejam seguidas.

Ele vem instalado por padrão no Ubuntu Server 16.04 LTS, se você estiver usando a distribuição desktop, execute:

$ apt install lxd lxd-client

Feito isso, você deve inicializar vários parâmetros. O seguinte comando o conduziria por meio deles:

$ lxd init

Você pode selecionar as opções padrão daqui em diante.  A coisa mais envolvida seria configurar interfaces de rede. Quando perguntado sobre a configuração de rede LXD, selecione a opção padrão sim.

1 Responda sim, novamente, quando solicitado para configurar a rede

A próxima janela pedirá o nome da interface de rede (como visto no host), deixe-o com o valor padrão lxdbr0.

A configuração da sub-rede IPv4 viria depois disso. Isso permitiria que diferentes contêineres LX conversassem entre si como se fossem computadores diferentes em uma rede local. Selecione sim para isso.

Em seguida, haverá vários 10.202.X.Endereços X mostrados, cada um com uma função diferente nesta sub-rede. Você pode pressionar Enter sem a necessidade de ajustar as opções. Quando solicitado pela configuração de NAT, selecione sim.

Isso permite que seus contêineres obtenham conectividade com a internet, usando o IP público do host, da mesma forma que seu laptop e outros dispositivos fazem por meio do roteador doméstico (com encaminhamento de porta).

A última opção sobre a sub-rede IPv6 é totalmente opcional e eu recomendo que você a omita por agora. Dizer não, quando solicitado pelas opções IPv6.


Rodando os contêineres

Para executar uma nova instância de, digamos, Ubuntu 16.04, execute o seguinte comando:

$ lxc lança ubuntu: 16.04 name_of_your_container

Como esta é a primeira vez que você está executando um servidor Ubuntu, demorará algum tempo para recuperar a imagem do contêiner dos repositórios remotos. Depois de fazer isso, você pode ver os detalhes sobre o contêiner iniciado, executando o comando:

lista $ lxc

Neste exemplo, o nome do contêiner é cont1.

Se você quiser entrar no contêiner, execute o comando;

$ lxc exec name_of_your_container bash

Isso o deixará cair no shell bash rodando dentro desse contêiner. Teria o cheiro e a sensação de uma nova instalação do Ubuntu 16.04 e você pode instalar livremente pacotes dentro dele e fazer vários experimentos que você não arriscaria sua instalação principal.

Agora que você tem o arquivo de imagem armazenado localmente em seu sistema host, pode ativar os contêineres do Ubuntu muito rapidamente e usá-los como sistemas descartáveis.

Para parar e excluir um contêiner LX, execute;

$ lxc stop Container_name $ lxc delete container_name 

Use o comando lxc launch, como você fez da primeira vez para ativar novos contêineres.


Para onde ir a partir daqui

Agora que você sabe qual é a arquitetura do LXD, você pode começar a explorar tópicos como rede e armazenamento para contêineres e como configurá-los para atender à sua carga de trabalho.

Você também pode querer aprender sobre as principais diferenças entre Docker e LXD e o que pode realmente atender melhor às suas necessidades. Se você quiser usar o ZFS como backend de armazenamento (como você deve!) você pode querer verificar este tutorial sobre os fundamentos do ZFS.

Controle e gerencie o movimento do mouse entre vários monitores no Windows 10
Gerenciador de mouse com tela dupla permite que você controle e configure o movimento do mouse entre vários monitores, diminuindo seus movimentos pert...
WinMouse permite que você personalize e melhore o movimento do ponteiro do mouse no PC com Windows
Se você quiser melhorar as funções padrão do ponteiro do mouse, use um freeware WinMouse. Ele adiciona mais recursos para ajudá-lo a obter o máximo do...
O botão esquerdo do mouse não funciona no Windows 10
Se você estiver usando um mouse dedicado com seu laptop ou computador desktop, mas o o botão esquerdo do mouse não funciona no Windows 10/8/7 por algu...