datacenter na nuvem
Post on 05-Jul-2015
207 Views
Preview:
DESCRIPTION
TRANSCRIPT
Um Workshop.
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
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
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
DatacenterO que é?
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
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
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
AWS EC2Servidores virtuais
Quando un servidor é gerado, uma IP elástica é assinada.
O servidor é clonado a partir de uma AMI.
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
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
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
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
Hands on
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.
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
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
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
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
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
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?)
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
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
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.
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.
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.
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
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
Security Group
• Proxies: VPN/VPC access + HTTP access
• Frontend: VPN/VPC access
• Backend: Backend access
• Fora da VPC: VPN/VPC + SSH access
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
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)
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.
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
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’;
ConclusõesE perguntas
top related