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 emus-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ãous, a VM poderá estar localizada emus-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/18e o tráfego IPv6 chegue a2001: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 endpointsstorage.googleapis.com:443edirectpath-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_NAMEpelo 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
Verifique se você tem a permissão do IAM
storage.buckets.getno bucket, que pode ser concedida usando o papel de Leitor de bucket legado do Storage (roles/storage.legacyBucketReader).O comando
gcloud alpha storage diagnosesó 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 setcom as propriedadesstorage/process_countestorage/thread_count. Recomendamos um valor máximo de 12 tarefas. Para mais detalhes, consulte a referência degcloud config set. A redução do número de tarefas simultâneas permitidas reduz o paralelismo e pode afetar o desempenho.