Conectividade direta do gRPC

A conectividade direta permite que as bibliotecas de cliente do Cloud de Confiance by S3NS compatíveis façam conexões de rede gRPC autenticadas diretamente com o Cloud Storage, o que reduz a latência e a sobrecarga de conexão. Quando você usa o gRPC com conectividade direta, as solicitações da biblioteca de cliente ignoram os Google Front Ends (GFEs) e são roteadas diretamente para o Cloud Storage.

A conectividade direta está disponível apenas 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 só fica disponível 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 da Application Layer Transport Security.

  • As VMs do Compute Engine que interagem com um bucket do Cloud Storage precisam estar no mesmo local 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 do local multirregional ou birregional. Por exemplo, se um bucket estiver localizado na multirregião us, a VM poderá estar localizada 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 chegue a 34.126.0.0/18 e o tráfego IPv6 chegue a 2001:4860:8040::/42. Evite restringir as portas de destino nas regras de firewall, já que todas as portas são usadas para veiculação. Além disso, o tráfego precisa ter permissão para alcançar os endpoints storage.googleapis.com:443 e directpath-pa.googleapis.com:443.

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

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

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

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

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

    Para ver o nome da conta que a 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 do Go e precisar verificar se a conta do S3NS usada para autenticação 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 S3NS .

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. Nesta seção, descrevemos 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 do IAM storage.buckets.get no bucket, que pode ser concedida usando o papel de Leitor de bucket legado do Storage (roles/storage.legacyBucketReader).

  2. O comando gcloud alpha storage diagnose só está disponível 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 for possível estabelecer uma conexão, 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 as instruções abaixo para garantir que as configurações de rede permitam que o tráfego passe das VMs para os endpoints necessários.

A conectividade direta requer um serviço hospedado em directpath-pa.googleapis.com:443 e em storage.googleapis.com:443. Para verificar se é possível estabelecer 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 for possível estabelecer uma conexão, você vai receber uma resposta vazia sem erros:

curl: (52) Empty reply from server

Se não for possível estabelecer 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.

Solução de problemas

Nesta seção, apresentamos detalhes e soluções para erros que podem ocorrer ao usar a conectividade direta do gRPC.

Muitos arquivos abertos

Problema: ao usar a conectividade direta do gRPC, seu aplicativo pode manter um número maior de conexões simultâneas com o Cloud Storage do que as APIs REST. Em ambientes com alto paralelismo, isso pode exceder o limite do descritor do arquivo do sistema operacional, resultando em um erro too many open files. Esse erro pode ocorrer quando você está usando a Google Cloud CLI.

Solução: para resolver esse problema, escolha um dos seguintes métodos:

  • Defina o número máximo de arquivos abertos para o processo usando ulimit -n $(ulimit -Hn).

  • Diminua o número de tarefas simultâneas permitidas usando o comando gcloud config set com as propriedades storage/process_count e storage/thread_count. Recomendamos um valor máximo de 12 tarefas. Para mais detalhes, consulte a referência de gcloud config set. A redução do número de tarefas simultâneas permitidas reduz o paralelismo e pode afetar o desempenho.