應用引擎配置:
instance_class: F1
automatic_scaling:
min_idle_instances: automatic
max_idle_instances: automatic
min_pending_latency: automatic
max_pending_latency: automatic
NodeJs 應用程式正在運行:(i) Apollo 服務器,(ii) Express,(iii) Knex
腳步:
- 獲取 Cloud SQL 實體的公網 IP 地址
- 獲取 Cloud SQL 實體的連接名稱
- 在中設定 Cloud SQL 實體的連接名稱
app.yaml
index.ts
在客戶端設定 Cloud SQL 實體的公網 IP 地址
index.ts
// @note Using Knex
const db = await initDatabase({
client: 'pg',
connection: {
host: args['blockchain-db-host'],
port: args['blockchain-db-port'],
database: args['blockchain-db-database'],
user: args['blockchain-db-user'],
password: args['blockchain-db-pass'],
},
})
NB 也得到Username
, Password
, 并將它們設定在,index.ts
也用作Cloud SQL 實體是 Postgres 資料庫。Port
index.ts
5432
app.yaml
beta_settings:
cloud_sql_instances: <project>:<region>:<sql-instance>=tcp:5432
注意,beta_settings
一旦部署通過gcloud app deploy
不會反映在 Google App Engine 上的組態檔中。另外,我不熟悉 Unix 套接字方法,我假設在設定 App 引擎的云代理連接時5432
也應該使用它。PORT
uj5u.com熱心網友回復:
我建議按照檔案中的說明進行操作:Connecting to Cloud SQL from App Engine (Flex)。
特別是您的app.yaml
,您需要連接172.17.0.1:PORT
,其中 PORT 是您指定的埠 ( 5432
)。這是因為 Cloud SQL Auth 代理正在偵聽 172.17.0.1 以加密和轉發與您的 Cloud SQL 實體的連接。
uj5u.com熱心網友回復:
即使應用程式是彈性環境,App Engine 也可以通過以下方式連接到 Cloud SQL:(i) TCP 和 (ii) Unix Socket
注意在我的情況下,我建議將 與Unix Socket
結合使用Connection Instance
,否則,使用 IP 地址通常需要白名單和其他配置。
如果您使用Connection Instance Name
Cloud SQL 實體提供的,您應該使用該Unix Socket
方法來建立連接。
在這種情況下,app.yaml
必須有:
beta_settings:
cloud_sql_instances: <project>:<region>:<sql-instance>=tcp:5432
并且index.ts
必須類似于:
const db = await initDatabase({
client: 'pg',
connection: {
host: `/cloudsql/${args['blockchain-sql-connection-name']}`,
port: args['blockchain-db-port'],
database: args['blockchain-db-database'],
user: args['blockchain-db-user'],
password: args['blockchain-db-pass'],
},
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507759.html
標籤:Google Cloud Collective 谷歌应用引擎 云 谷歌云 sql
上一篇:AppEngineFlaskApp:由于超過了請求截止日期,行程終止。(錯誤代碼123)
下一篇:com.google.cloud.datastore.DatastoreException:重試資料存盤失敗200次