Executando verificação de segurança...
10

AWS interno?

Olá a todos, esse projeto é ecossistema onde você poderá subir recursos parecidos da AWS em seu próprio datacenter, oque eu quero com isso é poder estudar mais sobre redes e DevOps, é algo que estou há anos estudando principalmente Mikrotik, Cisco e Fortigate, então eu resolvi desenvolver uma AWS(coisa bem simples kkkkk).

Para que e por quê?

O que eu quero aprender sobre esse projeto é como funciona a AWS por baixo dos panos, a questão de multi-region, VPCs, contêineres auto escalados e tudo mais. Quero desenvolver meu próprio Kubernetes para realizar o autoscaling de contêineres e de VMs

Nesse projeto, quero utilizar Docker (para os contêineres) e KVM(como hypervisor para subir as VMs), já iniciei o projeto hoje e já consegui um feito EXCEPCIONAL.

Eu consegui conectar dois contêineres em L2 em "datacenters" diferentes (obviamente foram em VMs diferentes), e como eu fiz isso, usando OVS e VXLAN.

Oque é um OVS?

OVS é uma sigla para Open Virtual Switch, ele cria uma espécie de switch virtual dentro do seu Linux, com isso você pode adicionar placas de redes lógicas e físicas dentro desse bridge, podendo fazer um canal de broadcast entre essas duas interfaces.

Docker e KVM.

Bom, para os contêineres, eu estou usando o Docker, já é queridinho dos devs para literalmente qualquer coisa. Com ele vou poder criar os serviços de contêineres gerenciáveis e algo parecido com o Lambda para criar funções serverless (bicho, isso vai dar um trabalho absurdo).

Já o KVM é um recurso do Linux de hypervisor, onde você pode virtualizar máquinas. O KVM é uma sigla para Kernel-based Virtual Machine, com ele pode compartilhar recursos da máquina host com a virtualizada (redes, discos, CPUs, memórias e muito mais).

VXLAN.

Agora, como eu consegui pingar dois contêineres diferentes em máquinas diferentes em redes diferentes, aí que entra o feitiço mais bizarro que descobri esses tempos estudando Mikrotik que é o VXLAN.

Explicando o que é esse protocolo, ele basicamente encapsula L2 em L3, tá? Se você for dev e não tem contato com redes, você deve estar moscando aí agora.

Recapitulando como funcionam redes.

Em redes você tem as camadas, que são basicamente regras onde protocolos, equipamentos e entre outros, deve seguir para que a rede funciona do jeito que é.

Então, você tem camadas de responsabilidade onde os equipamentos e protocolos atuam para que a rede seja transportada do lado A para o B, seguindo a tabela OSI, são elas:

  • Camada 7 - Aplicação: Onde ficam obviamente os softwares, e eles são que geralmente iniciam a comunicação entre as pontas.
  • Camada 6 - Apresentação: Nessa camada fica tudo relacionado ao handshake TLS de certificados de criptografia e compressão de dados.
  • Camada 5 - Sessão: Aqui ele gerencia a comunicação dos dispositivos A com o B, como, por exemplo, quando iniciar, fechar e, o mais importante, ela verifica se tudo está em certo com ambos os lados para ver se não tem falha ou algo assim.
  • Camada 4 - Transporte: Aqui, onde estão os protocolos de redes, como TCP, UDP, ICMP e por aí vai, ele gerencia quais portas usar para a comunicação na rede, exemplo HTTP = TCP/80 ou HTTPS = TCP/443.
  • Camada 3 - Rede: Aqui é onde a tomada de decisão de roteamento acontece, aqui fica tudo relacionado ao roteador, exemplo: IPs, PBR, protocolos de roteamento(OSPF, BGP), NAT, e também é responsável por conectar duas redes diferentes como, por exemplo: sua casa e a internet.
  • Camada 2 - Enlace: Aqui são a camada dos switches, por exemplo, onde ele cuida para "converter" oque vem da camada 3 para a camada 1, em empacotando as informações (que se é chamado de frame, pacotes são L3[Camada 3]), e aqui é onde é tomado a decisão de onde e qual porta enviar com base no MAC de destino e origem, os switches tem um MACTABLE que são onde ele associa MAC com porta exemplo: PORTA1:75-B8-07-5C-BB-96 e PORTA2:6A-94-7D-67-F6-2F, com base nisso ele sabe para qual porta sair o frame.
  • Camada 1 - Física: E por último, mas não menos importante, a física, ela é basicamente os cabos kkkkk apenas isso mesmo.

Voltando...

Voltando sobre o VXLAN, como eu expliquei antes ele usa a camada 3 para enviar camada 2 para outro device, como?

Ele faz isso adicionando um cabeçalho VXLAN marcando o VNI(um ID único), fazendo assim tudo que trafegar naquela VXLAN em camada 2 chegue na outra ponta por meio de roteamento, podendo fazer isso até pela internet.

Vantagem disso.

Bom, já é autoexplicativo, né? Você pode literalmente conectar um cabo virtual em duas pontas remotas e para meu projeto isso faz todo o sentido já que, dependendo do projeto, você precisa que os dois contêineres ou VMs precisem estar na mesma rede "fisicamente".

Conclusão

Bom o AWS local é um projeto que está longe de acabar, então vou atualizando todos por aqui.
Desculpe se teve erro de português e também o post longo, é meu primeiro post e eu quis explicar tudo para que todos entendam o projeto.

Caso queira perguntar mais sobre esse, é meu LinkedIn: https://www.linkedin.com/in/jo%C3%A3o-pedro-de-oliveira-marcos-69202919b/

Até 👋

Carregando publicação patrocinada...
2

Cara.
Parabéns pelo post, mas acima de tudo pelos estudos!
Rede não é meu forte, mas curto ver a combinação do fisico com o virtual!
Esse projeto pode facilmente virar um canal no YT.
Topo ate ajudar se precisar...rs

0
1

Meus 2 cents:

Se voce quer criar sua 'private cloud', existem algumas alternativas interessantes:

  • Proxmox
  • OpenShift
  • OpenStack
  • Nutanix

Particulamente gosto do Proxmox - tem opcao de HA e cluster, aceita ZFS (FS poderoso baseado em CoW, com opcao para snapshots e copia a quente via syncoid)

Criar seu proprio AWS eh interessante para estudo e entender como funciona debaixo do capo - mas recomendo tambem estudar estas alternativas para ver como resolveram uma serie de questoes, alem de melhorar seu portfolio.

1

Então eu ja uso proxmox eu um cliente que eu presto consultoria, minha idéia é criar uma rede AWS para entender não só como funciona mas saber como eles pensa, não só redes mas os serviços basicos que eles oferecem tipo EC2, S3, Lambda, Apps em containers e por ai vai, é mais um passa tempo mesmo kkk