Como AWS cociña os seus servizos elásticos. Escalado da rede

A escala da rede de Amazon Web Services é de 69 zonas en todo o mundo en 22 rexións: Estados Unidos, Europa, Asia, África e Australia. Cada zona contén ata 8 centros de datos: centros de procesamento de datos. Cada centro de datos ten miles ou centos de miles de servidores. A rede está deseñada de forma que se teñan en conta todos os escenarios de interrupción improbables. Por exemplo, todas as rexións están illadas unhas das outras e as zonas de accesibilidade están separadas en distancias de varios quilómetros. Aínda que corte o cable, o sistema cambiará ás canles de copia de seguridade e a perda de información suporá uns poucos paquetes de datos. Vasily Pantyukhin falará sobre que outros principios está construída a rede e como se estrutura.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Vasily Pantyukhin comezou como administrador de Unix en empresas .ru, traballou en hardware de gran tamaño Sun Microsystem durante 6 anos e predicou un mundo centrado nos datos durante 11 anos en EMC. Evolucionou naturalmente a nubes privadas, despois pasou a outras públicas. Agora, como arquitecto de Amazon Web Services, ofrece asesoramento técnico para axudar a vivir e desenvolverse na nube de AWS.

Na parte anterior da triloxía de AWS, Vasily afondou no deseño de servidores físicos e no escalado de bases de datos. Tarxetas Nitro, hipervisor personalizado baseado en KVM, base de datos Amazon Aurora: todo isto no material "Como AWS cociña os seus servizos elásticos. Escalado de servidores e bases de datos" Le para contexto ou mira cinta de vídeo discursos.

Esta parte centrarase no escalado da rede, un dos sistemas máis complexos de AWS. A evolución dunha rede plana a unha Virtual Private Cloud e o seu deseño, os servizos internos de Blackfoot e HyperPlane, o problema dun veciño ruidoso e, ao final, a escala da rede, a columna vertebral e os cables físicos. Sobre todo isto baixo o corte.

Descargo de responsabilidade: todo a continuación é a opinión persoal de Vasily e pode non coincidir coa posición de Amazon Web Services.

Escalado da rede

A nube AWS lanzouse en 2006. A súa rede era bastante primitiva, cunha estrutura plana. O rango de enderezos privados era común a todos os inquilinos da nube. Ao iniciar unha nova máquina virtual, recibiu accidentalmente un enderezo IP dispoñible deste intervalo.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Este enfoque foi fácil de implementar, pero limitaba fundamentalmente o uso da nube. En particular, foi bastante difícil desenvolver solucións híbridas que combinasen redes privadas no terreo e en AWS. O problema máis común foi a superposición de intervalos de enderezos IP.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Nube privada virtual

A nube resultou ser demandada. Chegou o momento de pensar na escalabilidade e na posibilidade do seu uso por decenas de millóns de inquilinos. A rede plana converteuse nun gran obstáculo. Polo tanto, pensamos en como illar os usuarios uns dos outros a nivel de rede para que puidesen escoller de forma independente os intervalos de IP.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Cal é o primeiro que se che ocorre cando pensas no illamento da rede? Certamente VLAN и VRF - Enrutamento e reenvío virtual.

Desafortunadamente, non funcionou. A ID de VLAN é de só 12 bits, o que nos proporciona só 4096 segmentos illados. Incluso os interruptores máis grandes poden usar un máximo de 1-2 mil VRF. Usar VRF e VLAN xuntos ofrécenos só uns poucos millóns de subredes. Isto definitivamente non é suficiente para decenas de millóns de inquilinos, cada un dos cales debe poder usar varias subredes.

Tamén simplemente non podemos permitirnos o luxo de comprar o número necesario de caixas grandes, por exemplo, de Cisco ou Juniper. Hai dúas razóns: é moi caro e non queremos estar a mercé das súas políticas de desenvolvemento e parche.

Só hai unha conclusión: fai a túa propia solución.

En 2009 anunciamos VPC - Nube privada virtual. O nome quedou atascado e agora moitos provedores de nube tamén o usan.

VPC é unha rede virtual SDN (Rede definida por software). Decidimos non inventar protocolos especiais nos niveis L2 e L3. A rede funciona con Ethernet e IP estándar. Para a transmisión pola rede, o tráfico da máquina virtual encápsulase no noso propio envoltorio de protocolo. Indica o ID que pertence ao VPC do inquilino.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Parece sinxelo. Non obstante, hai varios retos técnicos serios que deben superarse. Por exemplo, onde e como almacenar os datos sobre a asignación de enderezos MAC/IP virtuais, ID VPC e MAC/IP físico correspondente. A escala de AWS, esta é unha táboa enorme que debería funcionar con atrasos de acceso mínimos. Responsable disto servizo de cartografía, que se espalla nunha capa fina por toda a rede.

Nas máquinas de nova xeración, a encapsulación realízase mediante tarxetas Nitro a nivel de hardware. En casos máis antigos, a encapsulación e a decapsulación baséanse en software. 

Como AWS cociña os seus servizos elásticos. Escalado da rede

Imos descubrir como funciona en termos xerais. Imos comezar co nivel L2. Supoñamos que temos unha máquina virtual con IP 10.0.0.2 nun servidor físico 192.168.0.3. Envía datos á máquina virtual 10.0.0.3, que vive en 192.168.1.4. Xérase unha solicitude ARP e envíase á tarxeta Nitro de rede. Para simplificar, supoñemos que ambas as máquinas virtuais viven no mesmo VPC "azul".

Como AWS cociña os seus servizos elásticos. Escalado da rede

O mapa substitúe o enderezo de orixe polo seu propio e envía a trama ARP ao servizo de cartografía.

Como AWS cociña os seus servizos elásticos. Escalado da rede

O servizo de cartografía devolve a información necesaria para a transmisión pola rede física L2.

Como AWS cociña os seus servizos elásticos. Escalado da rede

A tarxeta Nitro na resposta ARP substitúe o MAC na rede física por un enderezo no VPC.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Ao transferir datos, envolvemos o MAC e o IP lóxicos nun envoltorio VPC. Todo isto transmitimos pola rede física utilizando as tarxetas IP Nitro de orixe e destino adecuadas.

Como AWS cociña os seus servizos elásticos. Escalado da rede

A máquina física á que está destinado o paquete realiza a comprobación. Isto é necesario para evitar a posibilidade de suplantación de enderezos. A máquina envía unha solicitude especial ao servizo de cartografía e pregunta: “Da máquina física 192.168.0.3 recibín un paquete destinado a 10.0.0.3 no VPC azul. É lexítimo? 

Como AWS cociña os seus servizos elásticos. Escalado da rede

O servizo de mapeo verifica a súa táboa de asignación de recursos e permite ou denega o paso do paquete. En todos os casos novos, incorpórase unha validación adicional nas tarxetas Nitro. É imposible evitalo incluso teoricamente. Polo tanto, a suplantación de recursos noutro VPC non funcionará.

Como AWS cociña os seus servizos elásticos. Escalado da rede

A continuación, os datos envíanse á máquina virtual á que están destinados. 

Como AWS cociña os seus servizos elásticos. Escalado da rede

O servizo de mapeo tamén funciona como un enrutador lóxico para transferir datos entre máquinas virtuais en diferentes subredes. Todo é conceptualmente sinxelo, non vou entrar en detalles.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Resulta que ao transmitir cada paquete, os servidores recorren ao servizo de mapeo. Como facer fronte aos atrasos inevitables? Almacenamento en caché, por suposto.

A beleza é que non precisa almacenar na caché toda a enorme mesa. Un servidor físico alberga máquinas virtuais dun número relativamente pequeno de VPC. Só precisa almacenar na memoria caché a información destes VPC. A transferencia de datos a outras VPC na configuración "predeterminada" aínda non é lexítima. Se se usa unha funcionalidade como o peering de VPC, a información sobre as VPC correspondentes cárgase adicionalmente na caché. 

Como AWS cociña os seus servizos elásticos. Escalado da rede

Resolvemos a transferencia de datos ao VPC.

Pé negro

Que facer nos casos en que o tráfico necesite transmitirse ao exterior, por exemplo a Internet ou a través dunha VPN ao chan? Axúdanos aquí Pé negro - Servizo interno de AWS. Está desenvolvido polo noso equipo sudafricano. É por iso que o servizo leva o nome dun pingüín que vive en Sudáfrica.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Blackfoot decapsula o tráfico e fai o necesario con el. Os datos envíanse a Internet tal e como están.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Os datos son decapsulados e volven envolver en IPsec cando se usa unha VPN.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Cando se utiliza a conexión directa, o tráfico é etiquetado e enviado á VLAN adecuada.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Hiperplano

Este é un servizo de control de fluxo interno. Moitos servizos de rede requiren supervisión estados de fluxo de datos. Por exemplo, ao usar NAT, o control de fluxo debe garantir que cada par IP:porto de destino teña un porto de saída único. No caso dun equilibrador NLB - Balanceador de carga de rede, o fluxo de datos debe dirixirse sempre á mesma máquina virtual de destino. Security Groups é un firewall con estado. Monitoriza o tráfico entrante e abre implicitamente portos para o fluxo de paquetes saíntes.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Na nube de AWS, os requisitos de latencia de transmisión son moi altos. Por iso Hiperplano fundamental para o rendemento de toda a rede.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Hyperplane está construído en máquinas virtuais EC2. Aquí non hai maxia, só astucia. O truco é que se trata de máquinas virtuais con gran memoria RAM. As operacións son transaccionais e realízanse exclusivamente na memoria. Isto permítelle conseguir atrasos de só decenas de microsegundos. Traballar co disco mataría toda a produtividade. 

Hyperplane é un sistema distribuído dun gran número de tales máquinas EC2. Cada máquina virtual ten un ancho de banda de 5 GB/s. En toda a rede rexional, isto proporciona terabits incribles de ancho de banda e permite o procesamento millóns de conexións por segundo.

HyperPlane só funciona con fluxos. A encapsulación de paquetes VPC é completamente transparente para iso. Unha vulnerabilidade potencial neste servizo interno impediría aínda que se rompa o illamento da VPC. Os niveis seguintes son responsables da seguridade.

Veciño ruidoso

Aínda hai un problema veciño ruidoso - veciño ruidoso. Supoñamos que temos 8 nodos. Estes nodos procesan os fluxos de todos os usuarios da nube. Todo parece estar ben e a carga debe estar distribuída uniformemente en todos os nodos. Os nodos son moi poderosos e é difícil sobrecargalos.

Pero construímos a nosa arquitectura baseándonos incluso en escenarios improbables. 

Baixa probabilidade non significa imposible.

Podemos imaxinar unha situación na que un ou máis usuarios xerarían demasiada carga. Todos os nodos de HyperPlane están implicados no procesamento desta carga e outros usuarios poderían experimentar algún tipo de impacto no rendemento. Isto rompe o concepto da nube, no que os inquilinos non teñen capacidade de influír entre eles.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Como resolver o problema dun veciño ruidoso? O primeiro que se me ocorre é a fragmentación. Os nosos 8 nodos están loxicamente divididos en 4 fragmentos de 2 nodos cada un. Agora un veciño ruidoso molestará só a un cuarto de todos os usuarios, pero molestará moito.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Fagamos as cousas doutro xeito. Asignaremos só 3 nodos a cada usuario. 

Como AWS cociña os seus servizos elásticos. Escalado da rede

O truco é asignar aleatoriamente nodos a diferentes usuarios. Na imaxe de abaixo, o usuario azul cruza os nós cun dos outros dous usuarios: verde e laranxa.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Con 8 nodos e 3 usuarios, a probabilidade de que un veciño ruidoso se cruce cun dos usuarios é do 54%. É con esta probabilidade que un usuario azul influirá noutros inquilinos. Ao mesmo tempo, só unha parte da súa carga. No noso exemplo, esta influencia será, polo menos dalgún xeito, perceptible non para todos, senón para só un terzo de todos os usuarios. Este xa é un bo resultado.

Número de usuarios que se cruzarán

Probabilidade en porcentaxe

0

18%

1

54%

2

26%

3

2%

Acheguemos a situación á realidade: levemos 100 nodos e 5 usuarios en 5 nodos. Neste caso, ningún dos nodos se cruzará cunha probabilidade do 77%. 

Número de usuarios que se cruzarán

Probabilidade en porcentaxe

0

77%

1

21%

2

1,8%

3

0,06%

4

0,0006%

5

0,00000013%

Nunha situación real, cun gran número de nodos e usuarios de HyperPlane, o impacto potencial dun veciño ruidoso sobre outros usuarios é mínimo. Este método chámase mestura de fragmentos - barallar fragmentos. Minimiza o efecto negativo da falla do nodo.

Moitos servizos están construídos en base a HyperPlane: Network Load Balancer, NAT Gateway, Amazon EFS, AWS PrivateLink, AWS Transit Gateway.

Escala de rede

Agora imos falar da escala da propia rede. Para outubro de 2019, AWS ofrece os seus servizos en 22 rexións, e están previstos 9 máis.

  • Cada rexión contén varias Zonas de Dispoñibilidade. Hai 69 en todo o mundo.
  • Cada AZ consta de centros de procesamento de datos. Non son máis de 8 en total.
  • O centro de datos alberga un gran número de servidores, algúns con ata 300.

Agora fagamos unha media de todo isto, multipliquemos e obtengamos unha cifra impresionante que reflicta Escala na nube de Amazon.

Hai moitas conexións ópticas entre as Zonas de Dispoñibilidade e o centro de datos. Nunha das nosas rexións máis grandes, establecéronse 388 canles só para a comunicación entre AZ e os centros de comunicación con outras rexións (centros de tránsito). En total isto dá unha tolemia 5000 Tbit.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Backbone AWS está construído específicamente e optimizado para a nube. Construímolo nas canles 100 GB / s. Controlámolos por completo, con excepción das rexións de China. O tráfico non se comparte coas cargas doutras empresas.

Como AWS cociña os seus servizos elásticos. Escalado da rede

Por suposto, non somos o único provedor de nube cunha rede troncal privada. Cada vez son máis as grandes empresas que seguen este camiño. Isto é confirmado por investigadores independentes, por exemplo de Telegeografía.

Como AWS cociña os seus servizos elásticos. Escalado da rede

O gráfico mostra que a proporción de provedores de contido e provedores de nube está crecendo. Debido a isto, a porcentaxe de tráfico de Internet dos provedores de backbone está a diminuír constantemente.

Vou explicar por que ocorre isto. Anteriormente, a maioría dos servizos web eran accesibles e consumíanse directamente desde Internet. Hoxe en día, cada vez máis servidores están situados na nube e son accesibles a través CDN - Rede de distribución de contidos. Para acceder a un recurso, o usuario pasa por Internet só ata o CDN PoP máis próximo - Punto de presenza. A maioría das veces está nalgún lugar preto. Logo abandona a Internet pública e voa por unha columna vertebral privada a través do Atlántico, por exemplo, e chega directamente ao recurso.

Pregúntome como vai cambiar Internet en 10 anos se esta tendencia continúa?

Canles físicas

Os científicos aínda non descubriron como aumentar a velocidade da luz no Universo, pero fixeron grandes avances nos métodos de transmisión a través da fibra óptica. Actualmente utilizamos cables de fibra 6912. Isto axuda a optimizar significativamente o custo da súa instalación.

Nalgunhas rexións temos que usar cables especiais. Por exemplo, na rexión de Sidney usamos cables cun revestimento especial contra as termitas. 

Como AWS cociña os seus servizos elásticos. Escalado da rede

Ninguén é inmune aos problemas e ás veces as nosas canles danan. A foto da dereita mostra cables ópticos nunha das rexións americanas que foron rasgadas polos traballadores da construción. Como consecuencia do accidente, só se perderon 13 paquetes de datos, o que é sorprendente. Unha vez máis: só 13! O sistema cambiou literalmente instantáneamente ás canles de copia de seguridade: a escala funciona.

Galopamos por algúns dos servizos e tecnoloxías na nube de Amazon. Espero que teñas polo menos unha idea da escala das tarefas que os nosos enxeñeiros teñen que resolver. Persoalmente, paréceme moi emocionante. 

Esta é a parte final da triloxía de Vasily Pantyukhin sobre o dispositivo AWS. EN o primeiro as partes describen a optimización do servidor e o escalado da base de datos, e en segundo — funcións sen servidor e Firecracker.

En HighLoad++ en novembro Vasily Pantyukhin compartirá novos detalles do dispositivo Amazon. El vai contar sobre as causas dos fallos e o deseño de sistemas distribuídos en Amazon. O 24 de outubro aínda é posible Reservar billete a bo prezo, e pagar máis tarde. Agardámoste en HighLoad++, ven falar!

Fonte: www.habr.com

Engadir un comentario