A conectividade direta é uma solução de conexão que permite conexões de rede gRPC diretas, de alta performance, autenticadas entre uma Google Cloud biblioteca de cliente e o Cloud Storage, resultando em menor latência e sobrecarga de conexão. Ao usar o gRPC para se conectar a Google Cloud usando a conectividade direta, as solicitações iniciadas por bibliotecas de cliente compatíveis Google Cloud são encaminhadas diretamente para o Cloud Storage, ignorando os front-ends do Google (GFEs).
A conectividade direta só está disponível para solicitações feitas em 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 de Application Layer Transport Security.
As VMs do Compute Engine que interagem com um bucket do Cloud Storage precisam estar colocalizadas com 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 birregional ou multirregional, a VM precisará estar em uma região que compõe o local birregional ou multirregional. Por exemplo, se um bucket estiver localizado nausmultirregião, a VM poderá estar 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. Além disso, o tráfego precisa ter permissão para acessar os endpointsstorage.googleapis.com:443edirectpath-pa.googleapis.com:443.Para saber como verificar se uma conexão pode ser feita 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 de credenciais específicos 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 à 1.52.0 exigem as credenciais de conta de serviço padrão da VM que acessa o bucket.
Para conferir 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 Go e precisar verificar se a Google conta usada para autenticar corresponde à conta de serviço padrão da VM, use o
gcloud compute instances describecomando: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 dogerenciamento de identidade. Google
Verificar a conectividade usando a Google Cloud CLI
A CLI do Google Cloud pode testar os diagnósticos de conectividade direta no 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
Verifique se você tem a permissão
storage.buckets.getdo IAM no bucket, que pode ser concedida usando o papel 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 uma conexão puder ser feita, você 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 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, use as instruções a seguir para garantir que as configurações de rede permitam que o tráfego passe 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 uma conexão pode ser feita 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ê receberá uma resposta vazia sem erros:
curl: (52) Empty reply from server
Se uma conexão não puder ser feita, você receberá um erro semelhante a este:
curl: (56) Recv failure: Connection reset by peer
Limitações
A conectividade direta não oferece suporte ao Private Service Connect.
Solução de problemas
Esta seção fornece 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 de descritor do arquivo do sistema operacional, resultando em um erro too many open files. Esse erro pode ocorrer quando você estiver 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 seu 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 agcloud config setreferência. Diminuir o número de tarefas simultâneas permitidas reduz o paralelismo e pode afetar a performance.