如何使用多可用区将 Node Sequelize 连接到 Amazon RDS MySQL

问题描述 投票:0回答:3

我正在使用具有多可用区支持的 Amazon RDS 托管 MySQL。只是找不到任何有关如何正确将 Sequelize 连接到 Amazon RDS 以便 Sequelize 相应地处理故障转移等的信息?

我只是使用以下配置,但不知道这是否足够或推荐?

sequelizeConfig = {
  logging: false,
  pool: { maxConnections: 5, maxIdleTime: 30},
  sequelizeConfig[dialectOptions] = {
    ssl: 'Amazon RDS'
  }
}

将 Amazon RDS 与多可用区结合使用我认为以下几点很重要:

  1. 如果连接丢失,请尝试重新连接,直到再次可用
  2. 不要缓存 mysql 服务器 IP 地址太长(亚马逊建议少于 1 分钟)

Amazon Docs 没有编写任何有关连接处理和池的内容。

mysql node.js amazon-web-services sequelize.js amazon-rds
3个回答
18
投票

以下是我与 RDS 连接的方式:

 var config = require(__dirname + '/../config/config.json')[env];
 // your config file will be in your directory
 var sequelize = new Sequelize(config.database, config.username, config.password, {
    host: '****.****.us-west-1.rds.amazonaws.com',
    port: 5432,
    logging: console.log,
    maxConcurrentQueries: 100,
    dialect: 'postgres',
    dialectOptions: {
        ssl:'Amazon RDS'
    },
    pool: { maxConnections: 5, maxIdleTime: 30},
    language: 'en'
})

1
投票

之前的答案对我不起作用,经过一番研究,这个选项对象做到了:

var options = {
  host: settings.database.host,
  port: settings.database.port,
  logging: console.log,
  maxConcurrentQueries: 100,
  dialect: 'mysql',
  ssl: 'Amazon RDS',
  pool: { maxConnections: 5, maxIdleTime: 30 },
  language: 'en',
}

我在同一个默认 VPC 中运行 RDS MySQL 和 EC2 实例,当使用 Sequelize 将 EC2 中的节点应用程序与 RDS 连接时,此选项对象起作用。


0
投票

ssl: 'Amazon RDS'
对我不起作用。

经过一番挖掘,这有效了:

var options = {
  host: settings.database.host,
  port: settings.database.port,
  logging: console.log,
  dialect: 'mysql',
  "dialectOptions": {
        "ssl": {
            "ca": fs.readFileSync('./eu-central-1-bundle.pem')
        }
    }
}

其中 eu-central-1-bundle.pem 是连接到 mysql rds 数据库所需的 aws CA 证书。

© www.soinside.com 2019 - 2024. All rights reserved.