A saga do homelab #2

Capítulo de hoje: plataforma

Montar um homelab é como construir seu próprio pequeno datacenter pessoal. Isso significa que todas as vantagens e desafios de se planejar e gerenciar um datacenter moderno também existirão no seu ambiente particular, porém em menor escala.

Entretanto, antes de falarmos sobre os datacenters contemporâneos, é de suma importância entendermos a evolução dos datacenters ao longo do tempo. Afinal de contas, para o nosso homelab andar, alguns outros pioneiros da tecnologia tiveram que correr 🏃

Essa linha do tempo foi criada com base em dezenas de artigos da Wikipedia, que estão devidamente ligados aos termos pesquisados. Você pode conferir cada um dos itens, mas os mais importantes para a nossa trajetória são a década de 70 (a Era dos Mainframes) e os anos 2000 (Consolidação e Profissionalização).

IBM System/360, o mais famoso Mainframe do mundo!

    • Enormes salas dedicadas a computadores como o ENIAC (1946)

    • Máquinas ocupavam ambientes inteiros, com válvulas e sistemas de refrigeração rudimentares

    • Operação manual, com técnicos trocando cabos e válvulas fisicamente

    • Capacidade de processamento extremamente limitada (kilobytes de memória)

    • Surgimento dos datacenters centralizados com mainframes IBM e outros

    • Instalações especializadas com ar condicionado e piso elevado

    • Gestão manual de fitas e cartões perfurados para armazenamento

    • Acesso restrito a especialistas treinados (comumente chamados de “monges”)

    • Sistemas operacionais primitivos para gerenciamento

    • Computadores menores permitem descentralização parcial

    • Surgimento das primeiras redes locais (LANs)

    • Início do conceito de "sala de servidores" empresariais

    • Operação ainda majoritariamente manual

    • Padronização dos servidores em formato rack (19 polegadas)

    • Expansão da internet comercial e necessidade de datacenters dedicados

    • Surgimento dos primeiros provedores de hospedagem

    • Implementação de sistemas de backup mais robustos

    • Monitoramento básico de temperatura e energia

    • Grandes datacenters comerciais surgem

    • Padronização das práticas de refrigeração e energia

    • Implementação de sistemas de monitoramento automatizados

    • Início da virtualização de servidores x86 (VMware)

    • Sistemas UPS e geradores mais sofisticados

    • Adoção massiva de virtualização reduz número de servidores físicos

    • Surgimento do PUE (Power Usage Effectiveness) como métrica

    • Planejamento de datacenters focado em eficiência energética

    • Início da computação em nuvem (AWS lançado em 2006)

    • Automação básica para provisionamento

    • Datacenters dedicados a computação em nuvem de escala massiva

    • Infraestrutura definida por software

    • Containers ganham popularidade (Docker é lançado em 2013)

    • Automação avançada e orquestração de recursos

    • Refrigeração avançada (free cooling, imersão líquida)

    • Datacenters hyperscale (milhares de servidores)

    • Infraestrutura como código (Terraform, Ansible)

    • Edge computing complementa datacenters centralizados

    • Operação quase totalmente automatizada

    • IA aplicada à otimização de datacenters

    • Datacenters sustentáveis (energia renovável, reuso de calor)

    • Infraestrutura imutável e efêmera

    • Operações Zero-Touch e AIOps

    • Liquid cooling e sistemas de alta densidade

    • Arquiteturas distribuídas (multi-cloud, hybrid-cloud)

    • Orquestração via Kubernetes e outras ferramentas

    • Automação completa do ciclo de vida (provisionamento até descomissionamento)

    • Datacenters otimizados para IA e processamento de alta performance

Como podemos perceber, os anos 2000 trouxeram uma “novidade” que revolucionou os datacenters ao redor do mundo: a virtualização da baixa plataforma. Baixa plataforma é um termo usado para se referir aos servidores com arquitetura distribuída, em contraste a alta plataforma formada pelos Mainframes, Big Irons e sistemas de grande porte da década de 1970.

Reparem que eu coloquei a palavra novidade entre aspas, visto que sistemas virtualizados já existiam a pelo menos 30 anos. O pulo do gato foi a “democratização” dessa tecnologia para sistemas mais populares, em especial os baseados em processadores Intel e AMD (x86 e x86-64).

Com a virtualização, foi possível instalar em um mesmo servidor dezenas de computadores virtuais logicamente isolados entre si. Cada uma dessas instâncias possui seus próprios processadores virtuais e memória, e podem compartilhar todo o hardware do servidor através de dispositivos virtuais diversos (tais como rede, vídeo, discos, etc).

Essa abordagem também permite que os serviços possam escalar de maneira mais elástica e menos rígida. Havendo recursos disponíveis no servidor físico (host), estes podem ser alocados dinamicamente para os servidores virtuais, adicionando-se mais memória, adaptadores de rede, e discos nos sistemas convidados (guests), apenas para ficarmos nos exemplos mais comuns.

A virtualização funciona mais ou menos assim.

Hoje em dia, as tecnologias de virtualização são muito mais presentes na vida das pessoas do que elas imaginam. Por exemplo, todos os videogames modernos possuem recursos de virtualização nativos, que abstraem complexidades de hardware dos consoles e permitem que os desenvolvedores de jogos foquem em tópicos mais nobres tais como gráficos mais polidos, histórias mais envolventes e microtransações irritantes. Até mesmo o Windows possui um modo chamado Integridade de Memória, que basicamente roda o sistema operacional do seu computador em um ambiente virtualizado que melhora o modelo de ameaças do Windows e fornece proteção mais robusta contra softwares malignos que tentam explorar o kernel do Windows.

Uma vez que estamos alinhados acerca desses conceitos básicos, podemos começar a discutir a plataforma que estou utilizando no meu homelab. E como vocês já devem ter adivinhado, essa plataforma é baseada em virtualização.

Proxmox VE

Resolvi utilizar o Proxmox como plataforma para o meu homelab, que é formado por dois BOSGAME Mini PC E2. Esse mini PC vem originalmente com 16 GB de RAM (2x 8GB). Depois de uma boa pesquisada, consegui comprar quatro pentes de memória DDR4 de 16 GB e atualizei ambas as caixinhas, que agora rodam com gloriosos 32 GB de RAM cada.

O Proxmox VE (Virtual Environment) é uma plataforma de virtualização de código aberto que combina virtualização KVM (Kernel-based Virtual Machine) e contêineres LXC (Linux Containers) em uma única solução integrada. É como se fosse um "Azure para seu ambiente doméstico", permitindo gerenciar múltiplas máquinas virtuais e contêineres em um servidor físico.

As vantagens de se utilizar o Proxmox são muitas:

  • Consolidação de hardware, com a execução de múltiplos servidores virtuais em uma única máquina física, economizando energia e espaço.

  • Possui uma Interface web e uma ferramenta de linha de comando para gerenciamento do sistema

  • Clustering, ou seja, você pode conectar múltiplos servidores Proxmox para criar um ambiente de alta disponibilidade.

  • Suporte a armazenamento local, NAS, SAN e sistemas de arquivos distribuídos.

  • Recursos integrados para backup e restauração de VMs e contêineres.

  • Open source e gratuito, e ainda há opção de suporte pago.

O Proxmox é especialmente útil para homelabs porque permite experimentar com diferentes sistemas operacionais, aplicações e configurações de rede em um ambiente isolado e seguro, semelhante a como você criaria recursos em um datacenter, mas rodando localmente em seu próprio hardware.

Instalar o Proxmox é relativamente simples. Não vou me estender muito nesse tópico, até porque existem dezenas de materiais fantásticos disponíveis na Internet, tais como essa playlist do YouTube que me ajudou a entender os conceitos básicos necessários para começar os trabalhos 🧑‍🏭

Abaixo está o capítulo dois da playlist, que ensina como instalar o Proxmox em toda a sua glória 🙏

Meus servidores possuem apenas uma interface de rede, portanto tanto o painel de controle quanto o painel de dados dividem a mesma interface. Se as suas máquinas possuírem mais de uma interface de rede, você pode (e deve) definir uma interface exclusiva para gerenciamento e outra para os dados trafegados pelos nós do seu cluster.

Uma vez que os nós foram instalados e devidamente configurados, bastou acessar a interface web de gerenciamento e acessar Datacenter ➡️ Cluster ➡️ Create cluster para criar um (adivinhe) novo cluster. Depois, basta acessar os servidores que você quer adicionar no cluster e adicionar as informações de adesão (join information) para que ele seja reconhecido como um novo nó do cluster. Simples e fácil.

Cluster, cluster, baby!

Tal como todo bom hypervisor (um outro nome para esse tipo de plataforma de virtualização), o Proxmox permite que você abstraia todos os recursos computacionais do seus nós. Na imagem abaixo, podemos ver alguns itens que podem ser virtualizados tais como máquinas virtuais (virtual machines), armazenamento (storage), rede (SDN ou Software Defined Network) e nós (nodes):

This bad boy can fit so much VMs in it!

Você também deve ter percebido que além das máquinas virtuais, existe um item no menu chamado contêineres LXC (LXC Containers). LXC (Linux Containers) é uma tecnologia de virtualização no nível do sistema operacional que permite executar vários ambientes Linux isolados (chamados contêineres) em um único host Linux, sem a sobrecarga de máquinas virtuais completas.

Pensando em uma analogia, se uma máquina virtual tradicional (VM) é como ter várias casas completas (cada uma com seus próprios alicerces, encanamento e sistema elétrico), um contêiner LXC é mais como ter vários apartamentos em um único edifício. Todos compartilham a mesma estrutura fundamental (o kernel do Linux), mas cada um tem seu próprio espaço privado e isolado.

Falarei sobre contêineres LXC nas próximas postagens, portanto fiquem ligados!

Além disso, falarei um pouco sobre armazenamento e como contornei as limitações do meu ambiente e consegui configurar um pequeno dispositivo de armazenamento remoto que me permite migrar VMs e LXCs de nó para outro.

Apenas um adendo: no artigo anterior, comentei um pouco sobre a minha configuração de rede. Uma melhoria que fiz posteriormente a publicação daquele artigo foi a instalação de um switch USW Flex 2.5G 5, de modo a poder realizar alguns laboratórios focados em coisas como configurações de VLAN e roteamento. Achei que seria interessante fazer esse update acerca do meu stack de rede.

Um grande abraço e até a próxima!

Previous
Previous

Sobre backups que falham e backups que funcionam

Next
Next

25 de Abril e Software Livre: Revoluções pela Liberdade!