SequelizeConnectionError: connect ETIMEDOUT Google Cloud Run

SequelizeConnectionError: connect ETIMEDOUT Google Cloud Run

我必须构建一个平台来从另一台主机上的 sql 数据库检索数据,对于这个项目,我使用带有 sequels.Locally 的 js 节点 我可以使用数据库中的 id 毫无问题地连接并且允许访问我的静态 ip,使用以下代码实例。

const sequelize = new Sequelize(
config.DB,
config.DBUSER,
config.DBPASSWORD,
{
    host:'DB IP ADRESS',
    dialect:mysql,

    pool:{
        max:config.pool.max,
        min:config.pool.min,
        acquire:config.pool.acquire,
        idle:config.pool.idle
    }
 }
)

sequelize.authenticate()

https://sequelize.org/docs/v6/other-topics/dialect-specific-things/

当我在 google 云平台上上传项目时出现问题,在云中 运行 我得到一个保存在我的主机上的 ip 地址可以访问,但问题如下,该IP地址不断变化。

ErrorSequelizeConnectionError: Host '107.178.333.70' is not allowed to connect to this MariaDB server

当然,我阅读并有兴趣使用 VM 并从 google 购买固定 ip。 但是在网上看了一些论坛后,我会有一个疑问,是否可以连接到sql而不是ip来使用dns记录?

或者使用主机名?

我试着按照 sequel 的文档,方言特定的东西,我已经集成了繁琐的模块,我找到了这个 mssql 的例子:

const sequelize = new Sequelize('database', null, null, {
   dialect: 'mssql',
   dialectOptions: {
       authentication: {
        type: 'ntlm',
        options: {
           domain: 'yourDomain',
           userName: 'username',
           password: 'password'
        }
      },
     options: {
         instanceName: 'SQLEXPRESS'
     }
  }
 })

为什么我要尝试使用主机名,因为在 php 中我管理了这种连接类型:

'hostname' => 'domain.com',
'username' => 'dbUserName',
'password' => 'dbPassword',
'database' => 'db',

我想要的是发现通过 ip 地址、dns 记录或主机名连接的替代方法,以防我不能选择购买固定 ip 地址的最后一个选项。

我的建议是:创建一个 VPC Network Peering ( allows internal IP address connectivity across two Virtual Private Cloud (VPC) networks regardless of whether they belong to the same project or the same organization ) between your VPC and your on-prem network where your MySQL Postgres is hosted and then use Serverless VPC Access 以将云 运行 服务直接连接到您的 VPC 网络。

Serverless VPC Access connectors make it possible for you to connect directly to your Virtual Private Cloud network from serverless environments such as Cloud Run, App Engine, or Cloud Functions. Configuring Serverless VPC Access allows your serverless environment to send requests to your VPC network using internal DNS and internal IP addresses (as defined by RFC 1918 and RFC 6598).

这里是documentation,解释了如何设置它。