View
185
Download
1
Category
Preview:
Citation preview
São Paulo
Cloud Ninja:
Rede para Faixa-Preta
Fabio Alves Moreira, Arquiteto da Bcash
Alex Coqueiro, Arquiteto de Soluções para o Setor Público
Desafios para Arquitetura de Redes
• Rede como habilitar o negócio– Velocidade, inovação, flexibilidade, capacidade elástica
• Rede controlada– Previsível, uniforme, padronizada
• Rede suportando requisitos de aplicações legadas– IP estático, Multicast
Agenda
• Automação
• Manipulação de IP’s
– Virtual IP
– Multicast
• Experiência da Bcash
Automação
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
Maturidade na Automação de Rede
• Automação Básica– Automação na construção de VPC e seus respectivos
componentes
• Automação Intermediária– Sofisticação da automação indo além da construção inicial da
rede
• Automação Avançada– Configuração Dinâmica
Automação Básica de Rede
aws ec2 create-vpc --cidr-block 10.0.0.0/16
aws ec2 replace-route --route-table-id $ROUTE_TABLE_ID
--destination-cidr-block 0.0.0.0/0
--instance-id $INSTANCE_ID
aws ec2 attach-network-interface --network-interface-id $ENI
--instance-id $INSTANCE_ID
--device-index 1
aws ec2 assign-private-ip-addresses --network-interface-id $ENI
--private-ip-addresses 10.0.0.100
• AWS CLI
DemoCriação de VPC e Subnet
com CLI
Automação Básica de Rede
#!/bin/sh
export AWS_DEFAULT_REGION="us-east-1"
VPC_ID=`aws ec2 create-vpc --cidr-block 10.0.0.0/16 --output text | awk '{print $6;}'`
SUBNET_ID=`aws ec2 create-subnet --vpc-id $VPC_ID --cidr-block 10.0.1.0/24 --output text | awk '{print $6;}'`
echo "Created $VPC_ID & $SUBNET_ID"
#Clean up
aws ec2 delete-subnet --subnet-id $SUBNET_ID
aws ec2 delete-vpc --vpc-id $VPC_ID
• Scripts customizados
Automação Básica de Rede
#!/usr/bin/python
import boto.vpc
Region=“us-east-1”
conn = boto.vpc.VPCConnection(Region)
vpc = conn.create_vpc(‘10.0.0.0/16’)
subnet = conn.create_subnet(vpc.id ‘10.0.1.0/24’)
Print "Created “+vpc.id+” & “+subnet.id
#Clean up
conn.delete_subnet(subnet.id)
conn.delete_vpc(vpc.id)
• Amazon SDK
Automação Básica de Rede
#Powershell script
Initialize-AWSDefaults -Region 'us-east-1'
#Create new VPC
$vpc = New-EC2Vpc -CidrBlock '10.0.0.0/16'
$subnet = New-EC2Subnet -VpcId $vpc.VpcId -CidrBlock '10.0.1.0/24' -AvailabilityZone 'us-east-1d'
Write-Host “Created VPC: " $vpc.VpcId " subnet: " $subnet.SubnetId
#Clean up VPC
Remove-EC2Subnet $subnet.subnetId -Force
Remove-EC2Vpc $vpc.VpcId -Force
• Amazon SDK
Automação Básica de Rede
• Permite que a rede seja:– Automatizada
– Tracking
– Versionada
• Ótimo Inicio!– Aspiração de diversos clientes
Automação Intermediária de Rede
• Gestão de mudanças da rede
• Gerenciando a extensão da rede– Peering e VPN
– NAT e VPN
• Automatizar configurações específicas de rede– EIPs, secondary IP, roteamento de IP’s virtuais (VIPs)
Exemplo de Topologia com NAT
Public Subnet 1
SA-east-1
Availability Zone 1 Availability Zone 2
NAT
Public Subnet 2
NAT
Private Subnet 1 Private Subnet 2
Automação Intermediária de Rede
"Resources" : {
"VPC" : {
"Type" : "AWS::EC2::VPC",
"Properties" : {
"CidrBlock" : “10.0.0.0/16”,
"Tags" : [ { "Key" : “Name", "Value" : “VPCName“ } ]
}
},
"PublicSubnet" : {
"Type" : "AWS::EC2::Subnet",
"Properties" : {
"VpcId" : { "Ref" : "VPC" },
"CidrBlock" : “10.0.1.0/24”,
"Tags" : [ { "Key" : "Network", "Value" : "Public" } ]
}
}
• AWS CloudFormation
DemoUso de CloudFormation
para Topologia de NAT
Automação Intermediária de Rede
• Controlar as mudanças na rede via CloudFormation– Templates controlados e versionados
– UpdateStack
• Adiciona e remove recursos
• Modifica regras de security group
– Eventos são acompanhados no CloudFormation
Automação Intermediária de Rede
• Expansão In-region com VPC peering– Peering handshake pode ser automatizado via script
– CloudFormation “AWS::EC2::VPCPeeringConnection”
• Expansão Cross-region– VPC, routes, VPN instances podem ser automatizados
– Vpc2vpc é um exemplo
https://github.com/vinayselvaraj/vpc2vpc
vpc2vpc create 10.1.0.0/16 10.2.0.0/16 10.3.0.0/16
Script para expansão de rede (Peering)
"Resources": {
"PeeringConnection": {
"Type": "AWS::EC2::VPCPeeringConnection",
"Properties": {
"VpcId": {"Ref": "VPC1"},
"PeerVpcId": {"Ref": "VPC2"}
}
}
Adequação de Rotas
"Resources": {
"PeeringConnection": {
"Type": "AWS::EC2::VPCPeeringConnection",
"Properties": {
"VpcId": {"Ref": "VPC1"},
"PeerVpcId": {"Ref": "VPC2"}
}
}
"PeeringRoute1" : {
"Type" : "AWS::EC2::Route",
"Properties" : {
"DestinationCidrBlock": "172.16.0.0/16",
"RouteTableId" : { "Ref" : "RouteTable1" },
"VpcPeeringConnectionId" : { "Ref" : "PeeringConnection" }
}
},
}
Automação Intermediária de Rede
#!/bin/sh
NAT_ID=“i-12345”
NAT_RT_ID=“rtb-22574640”
REGION=“us-east-1”
…
# So we can monitor the other NAT instance
NAT_IP=`aws ec2 describe-instances --instance-id $NAT_ID --region $REGION |
grep PrivateIpAddress -m 1 | awk '{print $2;}' | sed -re 's/[",]//g'`
…
aws ec2 replace-route --route-table-id $NAT_RT_ID --instance-id $Instance_ID
--destination-cidr-block 0.0.0.0/0 --region $REGION
• Gerenciamento de componentes (Ex: HA em NAT)
https://aws.amazon.com/articles/2781451301784570
DemoTeste de HA com NAT
Novo Cenário de NAT
Public Subnet 1
SA-east-1
Availability Zone 1 Availability Zone 2
NAT
Public Subnet 2
Private Subnet 1 Private Subnet 2
Auto Scaling Group
Automação Avançada Rede
• Automação Dinâmica: Responde dinâmicamente
quando uma condição da aplicação ou rede é
modificada
• Exemplos– Bootstraping de instâncias
– VIP sendo reassociados com base na resposta do Auto Scaling
– Novas subnets com rotas dinâmicas
– Criar VPN’s quando novas regiões estão online
Automação Avançada Rede
• Abordagem Dinâmica– Armazenamento de informações dinâmicas em um repositório
(external store)
• Repositórios Padrões– Amazon S3, Amazon DynamoDB, Configuration Management Tool
– Tags
Automação Avançada Rede
• Network tagging– Tags para Route table
• NAT = true
• NATAZ = [any, us-east-1a]
Exemplo de Tag com Múltiplos NAT’s
Public Subnet 1
SA-east-1
Availability Zone 1 Availability Zone 2
NAT
Public Subnet 2
NAT
Private Subnet 1 Private Subnet 2
TAG
NATAZ
AZ1
TAG
NATAZ
AZ2
Exemplo de TAG com Regiões Diferentes
Public Subnet 1
SA-East-1
Availability Zone 1 Availability Zone 1
Public Subnet 2
Private Subnet 1 Private Subnet 2
US-East-2
TAG
VPN
EIP
TAG
VPN
true
TAG
VPN
true
TAG
VPN
EIP
Script para NAT dinâmica
#!/bin/bash
INSTANCE_ID=`curl --silent http://169.254.169.254/latest/meta-data/instance-id`
AZ=`curl --silent http://169.254.169.254/latest/meta-data/placement/availability-zone`REGION="${AZ%?}"
MAC=`curl --silent http://169.254.169.254/latest/meta-data/network/interfaces/macs/`
VPC_ID=`curl --silent http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC/vpc-id`
Script para NAT dinâmica
#!/bin/bash
INSTANCE_ID=`/usr/bin/curl --silent http://169.254.169.254/latest/meta-data/instance-id`
AZ=`/usr/bin/curl --silent http://169.254.169.254/latest/meta-data/placement/availability-zone`
REGION="${AZ%?}"
MAC=`curl --silent http://169.254.169.254/latest/meta-data/network/interfaces/macs/`
VPC_ID=`curl --silent http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC/vpc-id`
ROUTE_TABLES=`aws ec2 describe-route-tables --region $REGION --output text
--filters "Name=tag:NATAZ,Values=any,$AZ" | grep ROUTETABLES | awk '{print $2}'`
Script para NAT dinâmica#!/bin/bash
INSTANCE_ID=`/usr/bin/curl --silent http://169.254.169.254/latest/meta-data/instance-id`
AZ=`/usr/bin/curl --silent http://169.254.169.254/latest/meta-data/placement/availability-zone`
REGION="${AZ%?}"
MAC=`curl --silent http://169.254.169.254/latest/meta-data/network/interfaces/macs/`
VPC_ID=`curl --silent http://169.254.169.254/latest/meta-data/network/interfaces/macs/$MAC/vpc-id`
ROUTE_TABLES=`aws ec2 describe-route-tables --region $REGION --output text
--filters "Name=tag:NATAZ,Values=any,$AZ" | grep ROUTETABLES | awk '{print $2}'`
# Parse through RouteTables that need to be modified
for MY_RT_ID in $ROUTE_TABLES; do
aws ec2 replace-route --route-table-id $MY_RT_ID --destination-cidr-block 0.0.0.0/0 --instance-id $INSTANCE_ID` --region $REGION
done
Automação Avançada Rede
• Scripts simples podem ser bem poderosos– Criação dinânica e resiliênte de rede e seus componentes
– Responder as aplicações ou aos seus requisitos de negócio
Manipulação de IP
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
Manipulação de IP
• Endereçamento de Virtual IP (VIP)– Suporte a casos de uso menos amigáveis ao paradigma de
nuvem
• Multicast– Suporte ao legado com dependência de Multicast
Abordagem tradicional com IP’s virtuais
• Elastic IP
10.0.0.55
72.44.63.250
10.0.1.79
SA-east-1
aws ec2 associate-address –network-interface-id eni-abc123d4
--allocation-id [EIP Allocation ID] --allow-reassociation
Availability Zone Availability Zone
eni-abc123d4
Abordagem tradicional com IP’s virtuais
• IP Secundário
10.0.0.55
72.44.63.250
10.0.0.79
SA-east-1
aws ec2 assign-private-ip-addresses --private-ip-addresses 10.0.0.10
--network-interface-id eni-123abcde --allow-reassignment
10.0.0.10
Availability Zone
Outra Abordagem com IP’s virtuais
• Roteamento de IP virtual
10.0.0.55
192.168.0.10
10.0.1.79
AWS Region
#ifconfig eth0:1 192.168.0.10/32 up
aws ec2 replace-route --route-table-id [Route Table ID]
--destination-cidr-block 192.168.0.10/32
--instance-id [Instance ID]
Availability Zone Availability Zone
Passo-a-Passo
• Configurar sua instância com outro IP
• Desabilitar “SRC/DST checking”
• Usar API replace-route para direcionar tráfego
# ifconfig eth0:1 192.168.0.10/32 up
aws ec2 replace-route --route-table-id [Route Table ID]
--destination-cidr-block 192.168.0.10/32
--instance-id [Instance ID]
aws ec2 modify-instance-attribute --instance-id [Instance ID]
–no-source-dest-check
Comparativo das abordagens
Abordagem Pros Contras
EIP Multi-AZ Somente IP Público
Secondary IP IP Público e/ou
Privado
Single AZ
Roteamento do VIP Multi-AZ Somente IP Privado
Acessível somente na VPC
Multicast
• Algumas aplicações legadas requerem multicast– Descoberta de Nós (Node discovery)
– Gerenciamento de Sessão (Session management)
– Failover automático
Multicast na AWS
• Não suportado diretamente
• Pode ser implementado com Overlay Network• Túneis GRE ou L2TP, ou com ferramentas como Ntop’s N2N
10.0.0.54
10.0.0.79
10.0.1.132
Subnet 10.0.0.0/24 Subnet 10.0.1.0/24
10.0.1.18310.0.0.41
Automatizando GRE multicast overlay
• Configuração de GRE pode ser automatizada– Configuração de Multicast armazenada em tags
• Novos membros checados periodicamente (60 segundos)
172.31.16.124
172.31.28.164
172.31.47.71
Subnet 172.31.16.0/20 Subnet 172.31.32.0/20
TAG: multicast
App1,192.168.0.12/24
TAG: multicast
App1,192.168.0.11/24
TAG: multicast
App1,192.168.0.10/24
192.168.0.0/24 Overlay
Community: App1
DemoGRE Overlay Multicast
Considerações sobre Multicast
• Tecnicamente não é multicast– Pacotes Multicast são empacotados em Unicast
• Não é uma solução para escalar unicast
– Overhead adicional
• GRE adicional 38 bytes (MTU de 1500 irá efetivamente ser 1462)
• Adequado para clusters menores (Legado)– App server node discover
– Baixo volume de tráfego
Scripts Utilizados Nesta Demo
• Disponível para download
https://s3.amazonaws.com/reinvent-arc401/index.html
Experiência da Bcash
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
“As soluções da AWS quebraram paradigmas em TI, onde
agora nossos Especialistas pensam não apenas em TI,
mas em como atingir as metas do nosso negócio.”
• Bcash é a solução completa
para quem compra ou vende em
lojas virtuais, blogs e websites,
desenvolvida para transações
rápidas e seguras na internet.
• Mais de 7 milhões de
compradores ativos
• Sistema Anti-fraude com Rede
Neurais da Fcontrol integrado
“A AWS simplificou
como implementar uma
solução de Alta
Disponibilidade e
CUSTOS baixos.”
- Fábio Alves Moreira,
Head of IT
Ter uma infraestrutura que suporte meu
crescimento rapido, disponibilidade e ROI baixo.
• Escalabilidade para suportar a expansão dos negócios;
• Segurança é essencial para nossomercado.
• Ter um ambiente de redecomplexo, com implementaçãosimples.
• Alta Disponibilidade e Custos quesão condizentes com minharealidade.
Arquitetura Bcash
Dificuldades e Erro de Planejamento
• VPN entre Regiões
• E aí?
• VPC muito pequena
• Nova VPC
• VPC peering
Obrigado
São Paulo
Recommended