ist*_*au2 4 postgresql amazon-ec2 amazon-web-services
我们有一个应用程序,该应用程序在不同可用区的 AWS EC2 实例上安装了多个 postgres 数据库(保证同步)。我想将它们抽象到单个 DNS 之后,这样,如果其中一个 EC2 实例崩溃,客户端仍然可以访问数据库。我想知道是否可以使用 AWS 网络负载均衡器对我的数据库进行负载均衡?为什么或者为什么不?如果没有,是否还有其他标准的、易于实施的解决方案可供我使用?(例如,我知道http://www.pgpool.net/mediawiki/index.php/Main_Page。但是,我对使用我必须自己设置的东西持怀疑态度,特别是因为我还必须复制 pgpool 实例...)
自己刚刚尝试过,似乎您可以设置一个网络负载平衡器来对您的数据库进行负载平衡。我的生产设置使用patoni来管理故障转移,patoni 提供了一个用于健康检查的HTTP API。主节点返回 200 响应,而副本返回 503。这适用于我的用例,其中副本仅用于故障转移,而不用于复制读取。我假设您可以想出一些代码,根据您的需要返回健康检查的成功响应。
我将负载均衡器配置为侦听端口 5432,并将运行状况检查配置为在端口 8008 上进行连接。我修改了 postgres 实例的安全组以允许来自我的 VPC 的 IP 范围的连接,因为 NLB 没有安全组。通过 psql 连接到 NLB 的 DNS 名称按预期工作。
虽然它有效,但我想我会坚持我当前的设置,它有一个 PgBouncer 在每个应用程序实例上运行(因此无需担心管理一个 Bouncer 实例池),使用 consul-template 更新 pgbouncer.ini 并重新加载 PgBouncer领事的关键变化。
| 归档时间: |
|
| 查看次数: |
4481 次 |
| 最近记录: |