Quando executa uma pilha de aplicações em recursos distribuídos na nuvem, o tráfego de rede tem de ser encaminhado de forma eficiente para os recursos disponíveis em várias localizações. Esta parte do Google Cloud guia de fiabilidade da infraestrutura descreve as técnicas de gestão de tráfego e de carga que pode usar para ajudar a melhorar a fiabilidade das suas cargas de trabalho na nuvem.
Planeamento de capacidade
Para garantir que a sua aplicação implementada no Google Cloud tem recursos de infraestrutura adequados, tem de estimar a capacidade necessária e gerir a capacidade implementada. Esta secção fornece diretrizes para ajudar a planear e gerir a capacidade.
Preveja o carregamento da aplicação
Quando prevê a carga, considere fatores como o número de utilizadores e a taxa à qual a aplicação pode receber pedidos. Nas suas previsões, tenha em conta as tendências de carga históricas, as variações sazonais, os picos de carga durante eventos especiais e o crescimento impulsionado por alterações empresariais, como a expansão para novas geografias.
Estime os requisitos de capacidade
Com base na arquitetura de implementação e tendo em conta os objetivos de desempenho e fiabilidade da sua aplicação, estime a quantidade de Google Cloud recursos necessários para processar a carga esperada. Por exemplo, se planear usar grupos de instâncias geridas (GIGs) do Compute Engine, decida o tamanho de cada GIG, o tipo de máquina da VM e o número, o tipo e o tamanho dos discos persistentes. Pode usar a Google Cloud calculadora de preços para estimar o custo dos Google Cloud recursos.
Planeie uma redundância adequada
Quando estimar os requisitos de capacidade, forneça redundância adequada para cada componente do conjunto de produtos da aplicação. Por exemplo, para alcançar a redundância N+1, todos os componentes na pilha de aplicações têm de ter, pelo menos, um componente redundante além do mínimo necessário para processar a carga de previsão.
Teste de referência da aplicação
Execute testes de carga para determinar a eficiência dos recursos da sua aplicação. A eficiência dos recursos é a relação entre a carga na aplicação e os recursos, como a CPU e a memória, que a aplicação consome. A eficiência dos recursos de uma aplicação pode deteriorar-se quando a carga é excecionalmente elevada, e a eficiência pode mudar ao longo do tempo. Realize os testes de carga para condições de carga normais e máximas, e repita os testes de referência a intervalos regulares.
Faça a gestão de quotas
AsGoogle Cloud quotas de serviços são limites por projeto que ajudam a controlar o consumo de recursos da nuvem. As quotas são de dois tipos: as quotas de recursos são os recursos máximos que pode criar, como o número de clusters do Google Kubernetes Engine (GKE) regionais numa região. As quotas de taxa limitam o número de pedidos de API que podem ser enviados para um serviço num período específico. As quotas podem ser zonais, regionais ou globais. Reveja as quotas de recursos atuais e as quotas de taxa de API para os serviços que planeia usar nos seus projetos. Certifique-se de que as quotas são suficientes para a capacidade de que precisa. Quando necessário, pode pedir um valor de quota mais elevado.
Reserve capacidade de computação
Para garantir que a capacidade dos recursos do Compute Engine está disponível quando necessário, pode criar reservas. Uma reserva oferece capacidade garantida numa zona específica para um número especificado de VMs de um tipo de máquina à sua escolha. Uma reserva pode ser específica de um projeto ou partilhada por vários projetos. Para mais informações sobre reservas, consulte o artigo Escolha um tipo de reserva.
Monitorize a utilização e reavalie os requisitos periodicamente
Depois de implementar os recursos necessários, monitorize a utilização da capacidade. Pode encontrar oportunidades para otimizar os custos removendo recursos inativos. Reavalie periodicamente os requisitos de capacidade e considere quaisquer alterações no comportamento, no desempenho e nos objetivos de fiabilidade da aplicação, na carga do utilizador e no seu orçamento de TI.
Escala automática
Quando executa uma aplicação em recursos distribuídos por várias localizações, a aplicação permanece disponível durante interrupções numa das localizações. Além disso, a redundância ajuda a garantir que os utilizadores têm um comportamento consistente da aplicação. Por exemplo, quando existe um pico na carga, os recursos redundantes garantem que a aplicação continua a ter um desempenho a um nível previsível. No entanto, quando a carga na aplicação é baixa, a redundância pode resultar numa utilização ineficiente dos recursos da nuvem.
Por exemplo, o componente do carrinho de compras de uma aplicação de comércio eletrónico pode ter de processar pagamentos para 99,9% das encomendas no prazo de 200 milissegundos após a confirmação da encomenda. Para cumprir este requisito durante períodos de carga elevada, pode aprovisionar capacidade de computação e armazenamento redundantes. No entanto, quando a carga na aplicação é baixa, uma parte da capacidade aprovisionada pode permanecer não utilizada ou subutilizada. Para remover os recursos não utilizados, tem de monitorizar a utilização e ajustar a capacidade. A escala automática ajuda a gerir a capacidade da nuvem e a manter o nível de disponibilidade necessário sem a sobrecarga operacional da gestão de recursos redundantes. Quando a carga na sua aplicação aumenta, a escalabilidade automática ajuda a melhorar a disponibilidade da aplicação através do aprovisionamento automático de recursos adicionais. Durante períodos de carga baixa, a escala automática remove recursos não usados e ajuda a reduzir os custos.
Determinados Google Cloud serviços, como o Compute Engine, permitem-lhe configurar a escala automática para os recursos que aprovisiona. Os serviços geridos, como o Cloud Run, podem dimensionar a capacidade automaticamente sem que tenha de configurar nada. Seguem-se alguns exemplos de Google Cloud serviços que suportam o dimensionamento automático. Esta lista não é exaustiva.
- Compute Engine: os GIGs permitem-lhe dimensionar automaticamente as aplicações sem estado implementadas em VMs do Compute Engine para corresponder à capacidade com a carga atual. Para mais informações, consulte o artigo Grupos de escalamento automático de instâncias.
- GKE: pode configurar clusters do GKE para redimensionar automaticamente os conjuntos de nós de modo a corresponderem à carga atual. Para mais informações, consulte o artigo Cluster autoscaler. Para clusters do GKE que aprovisiona no modo Autopilot, o GKE dimensiona automaticamente os nós e as cargas de trabalho com base no tráfego.
- Cloud Run: os serviços que aprovisiona no Cloud Run são dimensionados automaticamente para o número de instâncias de contentores necessárias para processar a carga atual. Quando a aplicação não tem carga, o serviço é automaticamente dimensionado no número de instâncias de contentores para zero. Para mais informações, consulte o artigo Acerca do dimensionamento automático de instâncias de contentores.
- Funções do Cloud Run: cada pedido a uma função é atribuído a uma instância da função. Se o volume de pedidos recebidos exceder o número de instâncias de funções existentes, as funções do Cloud Run iniciam automaticamente novas instâncias da função. Para mais informações, consulte o artigo Ambiente de execução das funções do Cloud Run.
- Bigtable: quando cria um cluster numa instância do Bigtable, pode configurar o cluster para ser dimensionado automaticamente. O Bigtable monitoriza a carga da CPU e do armazenamento e ajusta o número de nós no cluster para manter as taxas de utilização alvo que especificar. Para mais informações, consulte o artigo Ajuste de escala automático do Bigtable.
- Google Cloud Sem servidor para Apache Spark: quando envia uma carga de trabalho em lote do Apache Spark,o serviço sem servidor para Apache Spark dimensiona dinamicamente os recursos da carga de trabalho, como o número de executores, para executar a carga de trabalho de forma eficiente. Google Cloud Para mais informações, consulte o artigo Google Cloud Sem servidor para o Apache Spark para o dimensionamento automático do Spark.
Balanceamento de carga
O equilíbrio de carga ajuda a melhorar a fiabilidade das aplicações encaminhando o tráfego apenas para os recursos disponíveis e garantindo que os recursos individuais não ficam sobrecarregados.
Considere as seguintes recomendações de design relacionadas com a fiabilidade quando escolher e configurar balanceadores de carga para a sua implementação na nuvem.
Equilibre a carga do tráfego interno
Configure o balanceamento de carga para o tráfego entre os níveis da pilha de aplicações, bem como para o tráfego entre os clientes externos e a aplicação. Por exemplo, numa pilha de aplicações Web de 3 camadas, pode usar um equilibrador de carga interno para uma comunicação fiável entre as camadas Web e de apps.
Escolha um tipo de balanceador de carga adequado
Para equilibrar a carga do tráfego externo para uma aplicação distribuída por várias regiões, pode usar um balanceador de carga global ou vários balanceadores de carga regionais. Para mais informações, consulte o artigo Vantagens e riscos do balanceamento de carga global para implementações em várias regiões.
Se os back-ends estiverem numa única região e não precisar das funcionalidades do balanceamento de carga global, pode usar um balanceador de carga regional, que é resiliente a interrupções de zonas.
Quando escolhe o tipo de balanceador de carga, considere outros fatores além da disponibilidade, como o controlo geográfico sobre a terminação de TLS, o desempenho, o custo e o tipo de tráfego. Para mais informações, consulte o artigo Escolha um balanceador de carga.
Configure verificações de funcionamento
O dimensionamento automático ajuda a garantir que as suas aplicações têm recursos de infraestrutura adequados para processar a carga atual. No entanto, mesmo quando existem recursos de infraestrutura suficientes, uma aplicação ou partes da mesma podem não responder. Por exemplo, todas as VMs que alojam a sua aplicação podem estar no estado RUNNING
. No entanto, o software de aplicação implementado em algumas das VMs pode ter falhado.
As verificações de funcionamento do balanceamento de carga garantem que os balanceadores de carga encaminham o tráfego de aplicações apenas para os back-ends que respondem. Se os seus back-ends forem MIGs, pondere configurar uma camada adicional de verificações de funcionamento para reparar automaticamente as VMs que não estão disponíveis. Quando a autorrecuperação está configurada para um MIG, as VMs indisponíveis são eliminadas proativamente e são criadas novas VMs.
Limitação de velocidade
Por vezes, a sua aplicação pode registar um aumento rápido ou sustentado na carga. Se a aplicação não estiver concebida para processar o aumento da carga, a aplicação ou os recursos que utiliza podem falhar, o que torna a aplicação indisponível. O aumento da carga pode ser causado por pedidos maliciosos, como ataques de negação de serviço distribuída (DDoS) baseados na rede. Um aumento súbito na carga também pode ocorrer devido a outros motivos, como erros de configuração no software cliente. Para garantir que a sua aplicação consegue processar uma carga excessiva, considere aplicar mecanismos de limitação de taxa adequados. Por exemplo, pode definir quotas para o número de pedidos de API que um Google Cloud serviço pode receber.
As técnicas de limitação de taxa também podem ajudar a otimizar o custo da sua infraestrutura de nuvem. Por exemplo, ao definir quotas ao nível do projeto para recursos específicos, pode limitar a faturação que o projeto pode incorrer para esses recursos.
Nível de serviço de rede
Google Cloud Níveis de serviço de rede permitem otimizar a conetividade entre sistemas na Internet e as suas Google Cloud cargas de trabalho. Para aplicações que atendem utilizadores a nível global e têm back-ends em mais do que uma região, escolha o nível Premium. O tráfego da Internet entra na rede Google de alto desempenho no ponto de presença (PoP) mais próximo do sistema de envio. Na rede Google, o tráfego é encaminhado do PoP de entrada para o recurso adequado, como uma VM do Compute Engine. Google Cloud O tráfego de saída é enviado através da rede da Google, saindo no PoP mais próximo do destino. Este método de encaminhamento ajuda a melhorar a perceção da disponibilidade dos utilizadores, reduzindo o número de saltos de rede entre os utilizadores e os PoPs mais próximos.