• Nenhum resultado encontrado

Cloud Ninja: Rede para Faixa-Preta. Fabio Alves Moreira, Arquiteto da Bcash Alex Coqueiro, Arquiteto de Soluções para o Setor Público

N/A
N/A
Protected

Academic year: 2021

Share "Cloud Ninja: Rede para Faixa-Preta. Fabio Alves Moreira, Arquiteto da Bcash Alex Coqueiro, Arquiteto de Soluções para o Setor Público"

Copied!
52
0
0

Texto

(1)
(2)

Cloud Ninja:

Rede para Faixa-Preta

Fabio Alves Moreira, Arquiteto da Bcash

(3)

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

(4)

Agenda

• Automação

• Manipulação de IP’s

– Virtual IP

– Multicast

• Experiência da Bcash

(5)

Automação

(6)

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

(7)

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

(8)

Demo

Criação de VPC e Subnet

com CLI

(9)

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

(10)

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

)

(11)

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

(12)

Automação Básica de Rede

• Permite que a rede seja:

– Automatizada

– Tracking

– Versionada

• Ótimo Inicio!

(13)

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

(14)

Exemplo de Topologia com NAT

Public Subnet 1

SA-east-1

Availability Zone 1 Availability Zone 2

NAT

Public Subnet 2

NAT

(15)

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" } ]

}

}

(16)

Demo

Uso de CloudFormation

para Topologia de NAT

(17)

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

(18)

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

(19)

Script para expansão de rede (Peering)

"

Resources

": {

"

PeeringConnection

": {

"

Type

": "AWS::EC2::

VPCPeeringConnection

",

"

Properties

": {

"

VpcId

": {"Ref": "

VPC1

"},

"

PeerVpcId

": {"Ref": "

VPC2

"}

}

(20)

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

" }

}

},

}

(21)

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)

(22)

Demo

(23)

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

(24)

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

(25)

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

(26)

Automação Avançada Rede

• Network tagging

– Tags para Route table

NAT

= true

(27)

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

(28)

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

(29)

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/`

(30)

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}'`

(31)

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

(32)

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

(33)

Manipulação de IP

(34)

Manipulação de IP

• Endereçamento de Virtual IP (VIP)

– Suporte a casos de uso menos amigáveis ao paradigma de

nuvem

• Multicast

(35)

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

(36)

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

(37)

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]

(38)

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]

(39)

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

(40)

Multicast

• Algumas aplicações legadas requerem multicast

– Descoberta de Nós (Node discovery)

– Gerenciamento de Sessão (Session management)

– Failover automático

(41)

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.183 10.0.0.41

(42)

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

(43)

Demo

(44)

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

(45)

Scripts Utilizados Nesta Demo

• Disponível para download

(46)

Experiência da Bcash

(47)

“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,

(48)

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 nosso

mercado.

• Ter um ambiente de rede

complexo, com implementação

simples.

• Alta Disponibilidade e Custos que

são condizentes com minha

(49)
(50)

Dificuldades e Erro de Planejamento

• VPN entre Regiões

• E aí?

• VPC muito pequena

• Nova VPC

• VPC peering

(51)
(52)

Referências

Documentos relacionados

Desta forma, além de retardar a oxidação lipídica, o preparado desenvolvido apresentou benefícios como estabilização da cor e manutenção das características sensoriais

Conforme artigo 6º do Decreto Municipal nº 2997/2018, “As pessoas físicas e as pessoas jurídicas de direito público ou privado, interessadas em celebrar termo de parceria

Desenvolvimento de atividades de reforço escolar, onde os licenciandos auxiliarão os estudantes do Ensino Médio, de modo que dúvidas possam ser sanadas, utilizando- se, como uma

A aplicação de parafina em raízes de mandioca tem sido eficiente para prolongar o seu período de conservação.. Este efeito é atribuído à diminuição da permeabilidade ao

A partir das análises realizadas no que tange às articulações entre processo formativo que enfatizou a ressignificação e aplicação, inferimos que a aplicação da SEA replanejada no

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a

Biblioteca Informa nº 2.342 1° de fevereiro – 7 de fevereiro, 2015 Destaques • Concessão de permanência de caráter provisório, a título especial, a estrangeiros

[r]