postgresql - postgreSQL kubernetes helm安装——从slave读取
问题描述
我已经继续并使用postgres helm 版本在本地 kubernetes 集群上安装了一个小型“集群”。安装进行得很顺利——我们有一个主实例和两个从属实例,数据正在复制到其中(下面看到的单次重启是可以的,因为它是手动完成的测试)。
prod-postgres-postgresql-master-0 2/2 Running 0 15h
prod-postgres-postgresql-slave-0 1/1 Running 0 16h
prod-postgres-postgresql-slave-1 1/1 Running 1 9d
这些 pod 带有它们各自的服务(我使用的是 NodePort,因为没有云提供商可以将外部 IP 添加到 LoadBalancer):
prod-postgres-postgresql NodePort 10.96.119.67 <none> 5432:31920/TCP 9d
prod-postgres-postgresql-headless ClusterIP None <none> 5432/TCP 9d
prod-postgres-postgresql-metrics ClusterIP 10.106.163.49 <none> 9187/TCP 9d
prod-postgres-postgresql-read ClusterIP 10.97.58.56 <none> 5432/TCP 9d
用于安装的值与 repo 上的生产值相同,只是对密码和存储类进行了少量更改(为此我手动提供了所需的 PV)
我的问题:
我现在如何使用这个数据库部署来读取所有 postgres 节点?
我明白那个:
- 只是主人写道
- 一旦 master 死亡(例如 pod 出于某种原因处于崩溃退避状态),此掌舵图不提供任何形式的故障转移。
- master有自己的服务:
prod-postgres-postgresql
- 奴隶有自己的服务:
prod-postgres-postgresql-read
由于服务不同,我如何告诉我的应用程序允许读取的不仅仅是主服务器?
如果不支持,那么这个舵图的“要点”是什么?随着缺乏故障转移,从站似乎毫无意义。
解决方案
说实话我也有这个问题。该文档没有明确说明如何处理/启用它。我能够提出的唯一解决方案,我认为这不是最佳的,我也不知道它是否是“正确”的方法是,在应用程序端(不是 k8s),连接到右边K8s 服务(主(db-postgresql
)用于读/写和从(db-postgresql-read
)用于只读)基于预期的 DB 操作类型。当然也希望在这里获得更多指导。我一直在寻找Stolon作为替代方案。
推荐阅读
- ios - Xamarin.iOS 中的 OneSignal - 屏幕锁定时没有通知声音
- python - Dask read_parquet 添加了一个额外的列 dir0
- javascript - 如何从外部修改 Angular 生成的 DOM(无需访问源代码)?
- c# - C#如何将条件语句设置为用户输入除外?
- reactjs - 错误“EventSource failed loading: GET”http://localhost:8016/_next/webpack-hmr?page=/”是否导致我在 Next.js 中的 Link 组件出现问题?
- arrays - 如何快速返回tableView numberOfRowsInSection中的不同数组计数
- tensorflow - 将 TensorFlow 从 1.15 降级到 1.14 不起作用
- date - SAS--如何识别连续三年发生的事件?
- r - 如何使用 Reticulate 识别 Conda 以安装 SpacyR
- flutter-layout - D/skia (8919): Shader 编译错误_帮我解决这个问题