Datacenter na nuvem

40
Um Workshop. Datacenter na nuvem

description

A workshop on Virtual Datacenters, given at FISL15. Portuguese.

Transcript of Datacenter na nuvem

Page 1: Datacenter na nuvem

Um Workshop.

Datacenter na nuvem

Page 2: Datacenter na nuvem

O workshop

• Começaremos com uma pequena introdução onde vamos discutir os principais conceitos do trabalho

• Administração e organização interna dum centro de dados

• AWS EC2, VPN

• Automatização e orquestração

• Privacidade

Page 3: Datacenter na nuvem

Objetivos

• Que o participante ganhar familiaridade com as tecnologias vistas (openvpn, AWS, ansible) e as estrutura interna e organização geral de um centro de dados

Page 4: Datacenter na nuvem

Hands On

• Para la parte de Hands On, criaremos un datacenter desde cero, y desdobraremos una aplicación web

• Vamos nos dividir em três grupos e cada um vai executar tarefas específicas

Page 5: Datacenter na nuvem

DatacenterO que é?

Page 6: Datacenter na nuvem

Algumas desvantagens• Colocations geralmente em

locaciones remotas

• Custos em traslado pra administrar

• Esse cabo… ?

• Servidores antigos

• Falhas físicas

• Redesenho pode ser problemático: subredes, etc

Page 7: Datacenter na nuvem

Administração remota

• Mudas en hardware como tickets

• Falhas físicas são resolvidos com tickets

• Topologia de rede

• Topologia plana

• Regras de rede nos servidores

Page 8: Datacenter na nuvem

Datacenter virtualVantagens

• Exposição a falhas físicas reduzida

• Maior versatilidade para mudar hardware

• Versatilidade extrema para desenho de topologia de rede

• AMIs: clonagem

Desvantagens

• Hardware virtual

• Performance

• Bons recursos são caros

Page 9: Datacenter na nuvem

AWS EC2Servidores virtuais

Quando un servidor é gerado, uma IP elástica é assinada.

O servidor é clonado a partir de uma AMI.

Page 10: Datacenter na nuvem
Page 11: Datacenter na nuvem

AWS VPC• É o equivalente a um rack num datacenter físico

• Sem uma VPC (Nuvem Privada Virtual), as instâncias geradas estariam expostas e sem organização

• Interação via IP somente

• NAT

• Subredes, isolamento

Page 12: Datacenter na nuvem
Page 13: Datacenter na nuvem

VPN• Tradicionalmente implementado en hardware

• Isto requer conhecimento específico da plataforma

• OpenVPN: VPN por software

• Dispositivo virtual de rede nas máquinas conetadas

• Tráfego recibido no dispositivo virtual é criptografado, enviado ao servidor OpenVPN, e é encaminhado ao destino.

• No destino, o tráfego é descriptografado e encaminhado na rede local

Page 14: Datacenter na nuvem

VPN• Tradicionalmente implementado en hardware

• Isto requer conhecimento específico da plataforma

• OpenVPN: VPN por software

• Dispositivo virtual de rede nas máquinas conetadas

• Tráfego recibido no dispositivo virtual é criptografado, enviado ao servidor OpenVPN, e é encaminhado ao destino.

• No destino, o tráfego é descriptografado e encaminhado na rede local

Page 15: Datacenter na nuvem
Page 16: Datacenter na nuvem
Page 17: Datacenter na nuvem

Orquestração / Automatização

• Puppet: estilo declarativo

• Chef: estilo imperativo

• Ansible: imperativo, mas não ligado à língua

• Declarações em arquivos .yml

• Desvantagens:

• Ad-hoc

• Poucos elementos para programar

• Mas essas podem ser vantagens também

Page 18: Datacenter na nuvem

Hands on

Page 19: Datacenter na nuvem

Hands on• Criar um datacenter em uma VPC, equipado com uma

VPN pra acesso

• Subredes para front-end, back-end, e de proxy (pública)

• Desdobrar uma aplicação web, com um servidor HTTP e base de dados

• Usar ansible para executar tarefas

• Romper tudo, FORMAT C:, etc.

Page 20: Datacenter na nuvem

Parte 1: AWS VPC• Nesta parte vamos testar o acesso à consola AWS, e vamos criar três

subredes na VPC

• Vamos usar uma VPC com uma classe “B” de endereços IP: 10.100.0.0/16

• As tres subredes servirão para dividir logicamente nosso Datacenter

• Essas serão:

• Proxies/Acesso: 10.100.10.0/24

• Front-end: 10.100.20.0/24

• Back-end: 10.100.30.0/24

• Mais tarde a VPN vai existir na subrede 10.200.0.0/24

Page 21: Datacenter na nuvem

Subredes e routing tables

• As subredes precisam de saber como conetar às internets

• Internet Gateway

• NAT Instance

• Para as subredes frontend e backend, criaremos uma instância NAT

Page 22: Datacenter na nuvem

Routing tables• Toda subrede têm uma routing table por defeito

• Proxies:

• 10.100.0.0/16 -> local

• 10.200.0.0/24 -> VPN server

• default -> Internet gateway (as internets direitinho)

• Subredes privadas:

• 10.100.0.0/16 -> local

• 10.200.0.0/24 -> VPN server

• default -> instância NAT

Page 23: Datacenter na nuvem

Organização em subredes• É desejável a divisão em grupos dos servidores,

dependendo da sua função

• Uma manera de organizar é dividindo em Front-end/Back-end, e interação com as internets

• As capaz dialogam através de proxies.

• haproxy

• ProxySQL

• Acesso direito

Page 24: Datacenter na nuvem

AWS Security Groups

• Firewall muito básico

• Para a oficina, vamos usar só:

• Back-end só pode ser acessado do Front-end e a VPN

Page 25: Datacenter na nuvem

Parte 2: VPN

• OpenVPN: uma solução muito completa

• Servidor/cliente: os clientes conectam ao servidor e o servidor centraliza todo o tráfego openvpn encaminha os pacotes aos clientes ou pra fora da rede virtual

• client-to-client opcional (não vamos utilizar, ou vamos?)

Page 26: Datacenter na nuvem
Page 27: Datacenter na nuvem

Encaminhado• O servidor OpenVPN necessita de configuração de rede especial

• ip_forward = 1

• -j MASQUERADE para tudo o tráfego que vem da VPN e vai para a VPC

• openvpn faz o MASQUERADE para o tráfego que vem da VPC e vai para a VPN

• A VPC necessita saber que o tráfego para a VPN (destino 10.200.0.0/24) deve ser encaminhado pelo servidor openvpn

• Fazemos isso na consola AWS, nas Routing Tables da VPC: o tráfego para 10.200.0.0/24 é dirigido para o servidor VPN

• E mais um truco é preciso: Source/Dest check

Page 28: Datacenter na nuvem

Clientes VPN• Ou, vocês ;)

• Instale openvpn na VirtualBox, ou TunnelBlick na Mac

• Para a configuração são precisos 4 arquivos

• ca.crt

• client.conf

• Um certificado (que a gente vai criar) e a chave, firmados pelo master ca.key

Page 29: Datacenter na nuvem

Criação do certificado do cliente

• Usaremos easy-rsa

• No fedora, têm uma copia no seu home dir pra trabalhar

• No Mac OS X, abra TunnelBlick e em Utilidades -> easy-rsa

• Copie ca.crt, ca.key, dh2048.pem ao easy-rsa/keys/

• Execute ./vars

• Execute ./build-req seu-nome

• seu-nome.csr e seu-nome.key serão criados

• Para assinar o CSR, execute ./sign-req seu-nome. O certificado será criado

• Este paso é efetuado pelo administrador da rede, no seu computador. ca.key só é preciso para assinar certificados, e é um arquivo super secreto.

Page 30: Datacenter na nuvem

Conetando ao servidor openvpn

• Em linux, copie esses arquivos ao dir /etc/openvpn/

• ca.crt (desde openvpn-config/ no home dir)

• seu-nome.{crt,key} (desde easy-rsa/keys/)

• client.conf (precisa ser editado) (desde openvpn-config/)

• No Mac OS X, copie-los pra o dir indicado por TunnelBlick, logo mude o nome do dir para fisl.tblk.

• Para iniciar o serviço, em fedora execute:

• systemctl enable openvpn@client

• systemctl start openvpn@client

• No Mac OS X, é pipoca.

Page 31: Datacenter na nuvem

Parte 3: Criação das instâncias

• Nesta parte vamos a criar as instâncias EC2 que logo usaremos

• Vamos nos separar em 3 grupos:

• A subrede de proxies precisa uma instância

• Vamos alocar até 5 instâncias na subrede de backend

• As restantes vão ser criadas na subrede de frontend

• Se alguém quiser aprofundar nos conhecimentos da VPN, pode criar a instância por fora da VPC, e vamos integrá-la usando OpenVPN.

Page 32: Datacenter na nuvem

Criar uma instância EC2• Na consola EC2, use Launch Instance

• Selecione em My AMIs, FISL15 Workshop Base

• Tipo da instância: t1.micro

• Subrede:

• Proxies: 10.100.10.0/24

• Frontend: 10.100.20.0/24

• Backend: 10.100.30.0/24

• Fora da VPC: vpc 172.32.0.0/16

Page 33: Datacenter na nuvem

Nome e tag• Selecione um bom nome para a instância, para que a

gente poda reconhece-la na consola.

• frontend1, frontend2, backend1, backend2…

• O tag vai fazer possible a identificação da instância com ansible. Adicione o tag Group:

• Frontend: Group = Frontend

• Backend: Group = Backend / BackendWrite

• Proxy: Group = Proxy

Page 34: Datacenter na nuvem

Security Group

• Proxies: VPN/VPC access + HTTP access

• Frontend: VPN/VPC access

• Backend: Backend access

• Fora da VPC: VPN/VPC + SSH access

Page 35: Datacenter na nuvem

Teste acesso

• Uma vez a instância é operacional, tome nota do endereço IP e teste ssh pra ela com usuario fedora.

• A chave ssh está presente no entorno do usuario fedora da VirtualBox

Page 36: Datacenter na nuvem

Parte 4: Set up (ansible)• Nesta parte vamos fazer o set up dos

servidores, usando scripts en ansible

• Temos scripts diferentes para

• Servidores drupal (frontend)

• haproxy (proxies)

• Servidores mysql (backend)

Page 37: Datacenter na nuvem

Backend

• O backend está half-baked: o script ansible instala a mariadb, mas não instala os dados

• Após instalar, devemos nomear um dos servers o maestre. Os outros vão ser escravos daquele.

Page 38: Datacenter na nuvem

Executando os scripts

• Backend: ansible-playbook -i ec2.py db-servers.yml -e host=endereço

• Frontend: ansible-playbook -i ec2.py drupal-servers.yml -e host=endereço

• Proxy: ansible-playbook -i ec2.py proxy-servers.yml -e host=endereço

Page 39: Datacenter na nuvem

Backend• Maestre: executar o script drupal.sql.gz:

• mysql -u root -e ‘CREATE DATABASE drupal’

• zcat drupal.sql.gz | mysql -u root drupal

• Escravos:

• CHANGE MASTER TO MASTER_HOST=‘endereço_master’, MASTER_USER=‘fisl’;

Page 40: Datacenter na nuvem

ConclusõesE perguntas