我以前使用过 Heroku 和 AWS,现在正在使用 App Engine 和 Cloud SQL (Postgres) 在 Google Cloud 平台上设置服务。
我们尝试使用 12 要素原则构建应用程序。
事实证明,设置是如此乏味,以至于我开始怀疑我是否只是从根本上错过了某些东西。
以下是让我感到困惑的事情:
我是否错过了服务器管理方面的一些重大发展,这些发展已成为最佳实践?刚刚发现#3 和#4 后,我真的开始认为我一定在我的设置中做了一些根本性的错误。我有没有?
我们有一个从办公室到 Google Cloud 的 VPN 隧道。它工作正常,我们能够访问虚拟机和容器(kubernetes)。
问题是无法使用此隧道访问 SQL 实例。您可以跳过虚拟机实例,但无法直接连接。显然,问题在于 SQL 实例没有直接连接到 VPC 子网。我们尝试在 VPC 的“Cloud Router”上强制路由,但没有成功。我们尝试为所有 VPC 范围添加“允许所有”防火墙规则,但事实并非如此。
知道如何通过 VPN 隧道到达 SQL 实例吗?
我无法使用数据库的私有 IP 从 GKE 集群访问运行 Postgres 的 Cloud SQL 实例。我找到的所有文档都建议使用支持 VPC 的集群来完成此操作,但我仍然无法访问数据库。
具体来说,我可以从集群中的节点访问数据库,但我无法从节点上的容器内访问数据库,除非我使用主机的网络运行 docker 容器。这让我相信我对 GCP VPC 和 Kubernetes 的网络组件如何相互交互存在误解。
我的 VPC 有一个子网和两个次要范围:
IP 范围:10.0.0.0/16
次要范围 - pod: 10.1.0.0/16
次要范围 - 服务: 10.2.0.0/16
这是使用以下 Terraform 配置创建的:
resource "google_compute_subnetwork" "cluster" {
ip_cidr_range = "10.0.0.0/16"
name = "cluster"
network = google_compute_network.vpc.self_link
secondary_ip_range {
ip_cidr_range = "10.1.0.0/16"
range_name = "pods"
}
secondary_ip_range {
ip_cidr_range = "10.2.0.0/16"
range_name = "services"
}
}
Run Code Online (Sandbox Code Playgroud)
我的云 SQL 数据库运行 Postgres 11 并配置为仅允许通过私有 IP 进行连接。我已与一组全局计算地址建立了对等连接,以允许从我的 VPC …
google-cloud-sql google-cloud-platform google-kubernetes-engine vpc-peering
我有一个使用 Auto Scaling 和负载平衡设置的实例组。我也在 MySQL 服务器上使用 Google Cloud SQL。
每当实例组向上扩展并添加另一个实例时,该实例都会获得一个新的 IP 地址。问题是该实例不再具有访问 Google SQL 实例的权限(因为 SQL 实例需要预先配置授权网络)。我该怎么办?
我目前通过将以下 IP 添加到 SQL 管理器中的授权 IP 来接受大多数 IP 到我的 SQL 服务器:
100.0.0.0/6
104.0.0.0/5
112.0.0.0/4
google google-compute-engine google-cloud-sql google-cloud-platform
我遵循的步骤:
gcloud compute networks create stg-vpc \
--subnet-mode custom
gcloud beta compute addresses create google-managed-services-stg-vpc \
--global \
--purpose=VPC_PEERING \
--description="peering range for psql" \
--addresses=10.20.0.0 \
--prefix-length=16 \
--network=stg-vpc
在 Cloud SQL Web 控制台中,我创建了一个新的 Postgres 实例。在连接选项中,我启用了私有 IP,并将其配置stg-vpc为 IP 范围google-managed-services-stg-vpc。
这将创建具有 IP 的 Cloud SQL Postgres 实例10.20.0.3。
gcloud compute networks subnets create stg-vpc-us-central1 \ …
google-cloud-sql google-cloud-platform google-kubernetes-engine vpc-peering
我正在寻找一种解决方案来备份我的 Cloud SQL 架构(和 Cloud Storage 文件)。
起初,我尝试使用 Cloud Scheduler 调用 googleapi ( https://cloud.google.com/sql/docs/postgres/import-export/exporting ) 以导出数据库。问题是我需要特定的备份参数,并且需要导出 PostgreSQL 数据库中的特定模式。我的每个客户都有一个模式,我希望能够在不恢复整个数据库的情况下恢复模式。Googleapis 似乎还不支持导出特定模式,这就是我想直接调用 pg_dump 的原因。
在 Cloud SQL 中使用自动备份也存在同样的问题。我无法恢复数据库中的特定架构,并且需要将备份保留至少一个月。
但是,我还没有找到使用云函数等调用 pg_dump 的方法。所以目前我正在考虑使用我自己的 Windows 10 笔记本电脑来调用 pg_dump 并在 Windows 中设置日常任务。我更愿意使用 Google Cloud,而不是我自己的笔记本电脑。
如果有人对如何构建备份基础设施有任何想法,我们将不胜感激。
postgresql backup export google-cloud-sql google-cloud-platform
我四处寻找,并竭尽全力找出为什么 systemctl 无法启动我的单元。
\n\n我正在尝试将 GCP 的 cloud-sql-proxy 作为 systemd 服务启动。这就是我的cloud-sql-proxy.service样子。
[Install]\nWantedBy=multi-user.target\n\n[Unit]\nDescription=Cloud SQL Proxy\nRequires=networking.service\nAfter=networking.service\n\n[Service]\nType=simple\nWorkingDirectory=/opt\nExecStart=/opt/cloud_sql_proxy -instances=pupa=tcp:5432 -credential_file=/etc/pupa-240309-5336639b0c06.json\nRestart=always\nStandardOutput=journal\nUser=root\nRun Code Online (Sandbox Code Playgroud)\n\n我跑sudo systemctl enable cloud-sql-proxy成功了。然后当我执行时sudo systemctl start cloud-sql-proxy.service失败并显示以下消息:
Failed to start cloud-sql-proxy.service: Unit not found.\nRun Code Online (Sandbox Code Playgroud)\n\n以下是更多信息:
\n\n$ ll -al /etc/systemd/system/cloud-sql-proxy.service\n-rw-r--r--. 1 root root 327 May 22 10:56 /etc/systemd/system/cloud-sql-proxy.service\n\n$ sudo systemctl list-unit-files\n...\ncloud-sql-proxy.service enabled\n...\n\n$ systemctl status cloud-sql-proxy\n\xe2\x97\x8f cloud-sql-proxy.service - Cloud SQL Proxy\n Loaded: loaded (/etc/systemd/system/cloud-sql-proxy.service; enabled; vendor preset: disabled)\n Active: failed (Result: resources) since Sun 2019-05-19 …Run Code Online (Sandbox Code Playgroud)