Use o ALB para balancear a carga de tráfego gRPC e fornecer uma entrada unificada para a comunicação de serviços de backend. O ALB oferece suporte a conexões de frontend criptografadas por HTTPS com grupos de servidores de backend gRPC via HTTP/2.
Informações básicas
O gRPC é um framework de chamada de procedimento remoto de código aberto e alto desempenho. Ele usa Protocol Buffers como Linguagem de Definição de Interface (IDL) e se comunica por HTTP/2.
O gRPC resolve problemas de comunicação entre serviços em diferentes linguagens. Sua IDL fornece código gerado automaticamente para definir e invocar serviços remotos. Com codificação binária e multiplexação HTTP/2, o gRPC oferece alto desempenho, baixa latência e transferência eficiente de dados.
Esse protocolo é ideal para arquiteturas de microsserviços, comunicação entre linguagens distintas e sistemas distribuídos em grande escala. Ele suporta chamadas unárias, solicitações e respostas em streaming, além de streaming bidirecional.
Para obter mais informações sobre o gRPC, consulte a documentação oficial do gRPC.
Cenário
Uma empresa implanta serviços gRPC em uma Virtual Private Cloud (VPC) na região China (Hangzhou). Nessa VPC, há uma instância ALB e um grupo de servidores habilitado para gRPC. A instância ALB tem um listener HTTPS configurado com HTTP/2 ativado, e o grupo de servidores está configurado com verificações de integridade gRPC.
Os clientes precisam acessar os serviços gRPC implantados na VPC por meio da instância ALB.
Pré-requisitos
Crie uma instância ALB. Para mais detalhes, consulte Criar e gerenciar uma instância ALB.
Prepare os servidores de backend e implante os serviços gRPC neles. Para orientações de implantação, consulte a documentação oficial do gRPC.
Registre um nome de domínio e conclua o registro ICP obrigatório. Para mais informações, consulte Registrar um nome de domínio Alibaba Cloud e Processo de registro ICP.
Adquira um certificado SSL ou carregue um certificado de terceiros no Certificate Management Service. O certificado deve estar associado ao seu nome de domínio. Para saber como criar um certificado, consulte Habilitar acesso HTTPS para um serviço web usando um certificado comercial.
Etapa 1: Criar um grupo de servidores
Faça login no console ALB.
Na barra de navegação superior, selecione a região onde a instância ALB está implantada.
No painel de navegação à esquerda, escolha .
Na página Server Groups, clique em Create Server Group.
-
Na caixa de diálogo Create Server Group, configure os parâmetros abaixo e clique em Create.
Este tópico descreve apenas os parâmetros relevantes para este cenário. Para os demais, use os valores padrão ou configure-os conforme necessário.
Parâmetro
Descrição
Server Group Type
Selecione um tipo de grupo de servidores. Neste exemplo, Server está selecionado.
VPC
Selecione a VPC da sua instância ALB. Apenas servidores nesta VPC podem ser adicionados ao grupo de servidores.
Backend Server Protocol
Neste exemplo, selecione gRPC.
Health Check
Ative este recurso.
Health Check Settings
Clique em Modify e defina as configurações de verificação de integridade:
-
Health Check Protocol: Neste exemplo, selecione gRPC.
-
Health Check Method: Neste exemplo, selecione POST.
-
Health Check Status Codes: Escolha o código de status que indica uma resposta íntegra. Esse valor deve corresponder ao código retornado pelo seu serviço gRPC. Neste exemplo, o código é
12.
-
Na página Server Groups, localize o grupo de servidores criado e clique no respectivo ID.
Clique na aba Backend Servers e, em seguida, clique em Add Backend Server.
No painel Add Backend Server, selecione as instâncias ECS criadas e clique em Next.
-
Na etapa Ports/Weights, defina a porta e o peso de cada instância ECS e clique em OK.
NotaA porta configurada para uma instância ECS deve corresponder à porta usada pelo serviço gRPC. Além disso, garanta que as regras do grupo de segurança da instância permitam tráfego nessa porta.
Etapa 2: Configurar um listener HTTPS
Faça login no console Application Load Balancer (ALB).
Na barra de navegação superior, selecione a região onde sua instância está implantada.
No painel de navegação à esquerda, clique em Instances.
Na página Instances, encontre a instância desejada e clique em Create Listener na coluna Actions.
-
Na página Configure Listener, defina os parâmetros a seguir. Mantenha os valores padrão para os outros parâmetros ou ajuste-os conforme necessário. Em seguida, clique em Next.
Parâmetro
Descrição
Listener Protocol
Selecione HTTPS.
Listener Port
Neste exemplo, a porta 443 é usada.
NotaSe o protocolo de backend de um grupo de servidores estiver definido como gRPC, o protocolo do listener deverá ser HTTPS.
O gRPC se comunica pelo protocolo HTTP/2. Quando o protocolo de backend de um grupo de servidores for gRPC, o listener HTTPS deve ter o HTTP/2,0 habilitado. O ALB ativa esse recurso por padrão. Certifique-se de que o recurso Enable HTTP/2 esteja ativado e não o desative.
-
Na página Configure SSL Certificate, configure o parâmetro abaixo. Use os valores padrão para os demais ou ajuste-os conforme necessário. Depois, clique em Next.
Parâmetro
Descrição
Server Certificate
Selecione o certificado SSL preparado.
-
Na página Select Server Group, configure o seguinte parâmetro. Use os valores padrão para os outros ou defina-os conforme sua necessidade. Em seguida, clique em Next.
Parâmetro
Descrição
Server Group
Selecione o grupo de servidores gRPC criado.
Na página Configuration Review, verifique a configuração. Se tudo estiver correto, clique em Submit e aguarde a criação do listener.
Etapa 3: Configurar a resolução DNS
Para ambientes de produção, recomenda-se mapear um nome de domínio personalizado para o nome de domínio da instância ALB criando um registro CNAME.
No painel de navegação à esquerda, escolha .
Na página Instances, copie o nome DNS da instância ALB criada.
-
Siga estas etapas para adicionar um registro CNAME.
NotaSe o seu nome de domínio foi registrado por um provedor diferente da Alibaba Cloud, adicione-o ao console Alibaba Cloud DNS antes de configurar a resolução DNS. Para mais informações, consulte Gerenciar nomes de domínio. Caso o domínio esteja registrado na Alibaba Cloud, prossiga com as etapas a seguir.
Faça login no console Alibaba Cloud DNS.
Na página Authoritative DNS Resolution, localize o nome de domínio alvo e clique em Settings na coluna Operations.
Na página Settings, clique em Add Record.
-
No painel Add Record, configure o registro CNAME definindo os parâmetros a seguir e clique em OK.
Parâmetro
Descrição
Record Type
Selecione CNAME na lista suspensa.
Hostname
Prefixo do seu nome de domínio. Este tutorial usa @.
NotaPara usar um domínio raiz, defina o hostname como
@.Query Source
Selecione Default.
Record Value
Insira o nome DNS da instância ALB copiado.
TTL
O tempo de vida (TTL) é a duração durante a qual um registro DNS permanece em cache no servidor DNS. Use o valor padrão.
Etapa 4: Verificar a conectividade
Após concluir as etapas anteriores, os clientes poderão acessar os serviços gRPC por meio do ALB. Use uma ferramenta como o grpcurl para testar a conectividade.
Não é possível acessar diretamente um serviço gRPC a partir de um navegador web. Recomendamos o uso de ferramentas como o grpcurl para validar a conexão.
No cliente, execute o comando grpcurl -insecure -v <Domain name>:<Listener port> <gRPC service name>/<Method> para acessar o serviço gRPC na instância ECS.
Uma resposta semelhante à abaixo confirma que os clientes conseguem acessar o serviço gRPC via ALB.
[root@iZbp1xxx.0Z ~]# grpcurl -insecure -v xxx.com:443 helloworld.Greeter/SayHello
Resolved method descriptor:
rpc SayHello ( .helloworld.HelloRequest ) returns ( .helloworld.HelloReply );
Request metadata to send:
(empty)
Response headers received:
accept-encoding: identity,gzip
content-type: application/grpc
date: Mon, 04 Jul 2022 08:53:01 GMT
grpc-accept-encoding: identity,deflate,gzip
vary: Accept-Encoding
Response contents:
{
"message": "remoteip:47.xxx.xxx.195 x-forwarded-for:47.xxx.xxx.xx5 user-agent:grpcurl/v1.8.0 grpc-go/1.30.0 hostname:iZbp12xxx0kZ server addr:192.168.1.239 "
}
Response trailers received:
(empty)
Sent 0 requests and received 1 response
Documentos relacionados
Para mais detalhes sobre parâmetros e considerações de listeners HTTPS, consulte Adicionar um listener HTTPS.
Saiba mais sobre parâmetros e cuidados com grupos de servidores em Criar e gerenciar grupos de servidores.
Informações adicionais sobre parâmetros e aspectos importantes das verificações de integridade estão disponíveis em Verificações de integridade do ALB.