
Estou conectando um aplicativo Nodejs em execução no cluster GCP Kubernetes. Antes funcionava bem, quando eu habilitava o peering de VPC e estava usando a string de conexão (Privada). É recomendado no painel do Atlas:
mongodb+srv://(nome de usuário):(senha)@<cluster_name>-pri.m6tkv.gcp.mongodb.net/<database_name>?retryWrites=true&w=majority
Eu segui este tutorial para configurar:https://docs.atlas.mongodb.com/security-vpc-peering/
Não consigo entender, pois meu aplicativo está em execução há um bom tempo com essa configuração. Mas, um belo dia, o aplicativo em execução em um pod em meu cluster do GCP não consegue se conectar.
Essa é a mensagem de erro:
Connected mongodb failed MongoNetworkError: failed to connect to server [<cluster_name>-00-00-pri.m6tkv.gcp.mongodb.net:27017] on first connect [MongoNetworkError: connection timed out
at connectionFailureError (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:406:14)
at TLSSocket.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:294:16)
at Object.onceWrapper (events.js:299:28)
at TLSSocket.emit (events.js:210:5)
at TLSSocket.Socket._onTimeout (net.js:469:8)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7) {name: 'MongoNetworkError' }] at Pool.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/topologies/server.js:438:11)
at Pool.emit (events.js:210:5)
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:562:14
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:1009:9
at /app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:31:7
at callback (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:264:5)
at TLSSocket.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:294:7)
at Object.onceWrapper (events.js:299:28)
at TLSSocket.emit (events.js:210:5)
at TLSSocket.Socket._onTimeout (net.js:469:8)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7)
Voltei para a conexão antiga (Padrão), meu aplicativo funciona novamente. A cadeia de conexão:
mongodb+srv://(nome de usuário):(senha)@<cluster_name>.m6tkv.gcp.mongodb.net/<database_name>?retryWrites=true&w=majority
Portanto, a conexão via VPC Peering está com algum problema, não consegui encontrar nenhuma pista.
Responder1
Publicar esta resposta como um wiki da comunidade para melhor visibilidade.
Resolvi esse problema adicionando o intervalo de endereços do pod em meu cluster à lista de permissões de IP no Atlas.
A solução para esse problema foi adicionar o intervalo de endereços do pod à lista de permissões de IP do servidor Atlas.
Também é mencionado na documentação oficial:
Você deve adicionar o endereço do bloco CIDR da VPC (ou subconjunto) associado à VPC peer aolista brancaantes que seu novo par de VPC possa se conectar ao cluster Atlas. Para saber mais sobre os intervalos de IP do modo automático que o GCP usa, consulteIntervalos de IP do modo automático.
Você precisará seguir o link abaixo com um guia dentro: