SequelizeConnectionError: connect ETIMEDOUT Google Cloud Run



我必须建立一个平台,从另一台主机上的sql数据库检索数据,对于这个项目,我使用带有续集的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/

当我在谷歌云平台上上传项目时,问题发生了,在云运行中,我得到了一个ip地址,我保存在我的主机上可以访问,但问题是以下,该ip地址不断变化。

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

当然,我读了,并有兴趣与虚拟机和从谷歌购买一个固定的ip工作。但是在阅读了互联网上的一些论坛后,我会有一个问题,如果有可能连接到sql而不是ip使用dns记录?

还是使用主机名?

我尝试遵循文档从续集,方言特定的东西,我已经集成了繁琐的模块,我发现这个例子为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和你的MySQL Postgres所在的本地网络之间创建一个VPC网络对等(允许内部IP地址连接跨越两个虚拟私有云(VPC)网络,无论它们是否属于同一项目或同一组织),然后使用无服务器VPC访问将Cloud Run服务直接连接到你的VPC网络。

无服务器VPC访问连接器使您可以从无服务器环境(如Cloud Run、App Engine或Cloud Functions)直接连接到虚拟私有云网络。配置无服务器VPC访问允许您的无服务器环境通过内部DNS和内部IP地址(由RFC 1918和RFC 6598定义)向VPC网络发送请求。

下面是解释如何设置的文档。

最新更新