Conectividade direta do gRPC

A conectividade direta é uma solução de conexão que permite conexões de rede gRPC diretas, autenticadas e de alto desempenho entre uma biblioteca de cliente Google Cloud e o Cloud Storage, resultando em menor latência e sobrecarga de conexão. Quando você usa o gRPC para se conectar ao Google Cloud usando conectividade direta, as solicitações iniciadas pelas bibliotecas de cliente Google Cloud compatíveis são encaminhadas diretamente para o Cloud Storage, ignorando os Google Front Ends (GFEs).

A conectividade direta só está disponível para solicitações feitas de máquinas virtuais (VMs) do Compute Engine.

Requisitos para conectividade direta

A conectividade direta é ativada por padrão quando você usa bibliotecas de cliente do Cloud Storage compatíveis para se conectar ao Cloud Storage, mas fica disponível somente se todas as condições a seguir forem atendidas:

  • As VMs do Compute Engine que interagem com o Cloud Storage precisam ter uma conta de serviço anexada, mesmo que ela não tenha permissões. A conta de serviço é usada para representar a VM do Compute Engine no processo de handshake do Application Layer Transport Security.

  • As VMs do Compute Engine que interagem com um bucket do Cloud Storage precisam estar localizadas no mesmo lugar que o bucket. Por exemplo, se o bucket estiver em us-central1, a VM poderá estar em us-central1-a. Se o bucket estiver em um local multirregional ou birregional, a VM precisará estar localizada em uma região que faça parte desse local. Por exemplo, se um bucket estiver na multirregião us, a VM poderá estar em us-east4-c.

    Para mais informações sobre locais de bucket, consulte Locais.

  • Suas rotas e regras de firewall permitem que o tráfego IPv4 alcance 34.126.0.0/18 e o tráfego IPv6 alcance 2001:4860:8040::/42. Além disso, o tráfego precisa ser permitido para alcançar os endpoints storage.googleapis.com:443 e directpath-pa.googleapis.com:443.

    Para saber como verificar se é possível fazer uma conexão com esses endpoints, consulte Verificar configurações de rede. Para informações sobre como configurar rotas, consulte Configurar rotas.

  • As bibliotecas de cliente do Cloud Storage têm requisitos específicos de credenciais para autenticar aplicativos no Cloud Storage e ter conectividade direta disponível:

    • A biblioteca de cliente Java exige credenciais de conta de usuário ou de conta de serviço.

    • A biblioteca de cliente C++ exige credenciais de conta de serviço.

    • A biblioteca de cliente Go exige credenciais de conta de serviço. As versões anteriores a 1.52.0 exigem as credenciais da conta de serviço padrão da VM que acessa seu bucket.

    Para conferir o nome da conta que sua VM usa para autenticar no Cloud Storage, use o comando gcloud auth list:

    gcloud auth list --filter=status:ACTIVE --format="value(account)"
    

    Se você estiver usando a biblioteca de cliente Go e precisar verificar se a conta Google usada para autenticar corresponde à conta de serviço padrão da VM, use o comando gcloud compute instances describe:

    gcloud compute instances describe INSTANCE_NAME --format='yaml(serviceAccounts)'
    

    Substitua INSTANCE_NAME pelo nome da instância.

    Para mais informações sobre autenticação, consulte Visão geral do gerenciamento de identidade do Google .

Verificar a conectividade usando a Google Cloud CLI

A CLI do Google Cloud pode testar os diagnósticos de conectividade direta no seu bucket emitindo uma chamada GET para o bucket usando gcloud storage buckets describe gs://example-bucket. Esta seção descreve como realizar um teste de diagnóstico para conectividade direta usando a Google Cloud CLI.

Antes de começar

  1. Verifique se você tem a permissão storage.buckets.get do IAM no bucket, que pode ser concedida usando o papel de leitor do bucket legado do Storage (roles/storage.legacyBucketReader).

  2. O comando gcloud alpha storage diagnose está disponível apenas na versão 531.0.0 ou mais recente da Google Cloud CLI. Para usar esse comando, recomendamos fazer upgrade para a versão mais recente da Google Cloud CLI.

Executar o diagnóstico

Para verificar se a conectividade direta está disponível, execute gcloud alpha storage diagnose com o argumento --test-type=DIRECT_CONNECTIVITY:

gcloud alpha storage diagnose --test-type=DIRECT_CONNECTIVITY gs://BUCKET_NAME

Substitua:

  • BUCKET_NAME: o nome do bucket. Por exemplo, my-bucket.

Se uma conexão puder ser feita, você vai receber uma resposta semelhante a esta:

Using my-bucket bucket for the diagnostic tests.
Bucket location : US
Bucket storage class : STANDARD
Running diagnostic: Direct Connectivity Diagnostic...
WARNING: This diagnostic is experimental. The output may change, and checks may be added or removed at any time. Please do not rely on the diagnostic being present.
Finished running diagnostic: Direct Connectivity Diagnostic
Generating diagnostic report...
NAME
Direct Connectivity Diagnostic
    ┌────────────────────────────┬─────────────────────────────────────────────────────────────────────────┬──────────┐
    │            NAME            │                           PAYLOAD_DESCRIPTION                           │  RESULT  │
    ├────────────────────────────┼─────────────────────────────────────────────────────────────────────────┼──────────┤
    │ Direct Connectivity Call   │ Able to get bucket metadata using Direct Connectivity network path.     │ Success. │
    └────────────────────────────┴─────────────────────────────────────────────────────────────────────────┴──────────┘

Verificar as configurações de rede

Se você encontrar um erro Unable to connect to Traffic Director ao verificar a conectividade direta usando a Google Cloud CLI, siga estas instruções para garantir que as configurações de rede permitam a passagem do tráfego das VMs para os endpoints necessários.

A conectividade direta exige um serviço hospedado em directpath-pa.googleapis.com:443 e em storage.googleapis.com:443. Para verificar se é possível fazer uma conexão com o serviço, faça uma chamada curl para directpath-pa.googleapis.com:443 ou storage.googleapis.com:443. Exemplo:

curl directpath-pa.googleapis.com:443

Se uma conexão puder ser feita, você vai receber uma resposta vazia sem erros:

curl: (52) Empty reply from server

Se não for possível fazer uma conexão, você vai receber um erro semelhante a este:

curl: (56) Recv failure: Connection reset by peer

Limitações

A conectividade direta não é compatível com o Private Service Connect.