我还在学习Kubernetes以及它的工作原理。目前,我正在努力理解如何使用流复制(streaming replication)来建模像PostgreSQL集群这样的东西,并进行扩展和自动故障转移/恢复 (pgpool-II
, repmgr
, 随你选)。
我的主要问题在于 PostgreSQL 实例的双重性质,配置上--它既可以是主节点也可以是冷热备份(cold/warm/hot standby)。如果我增加副本数量,我希望所有副本都能作为备份启动,因此我想单独创建一个 postgresql-standby
副本控制器以及一个 postgresql-master
pod。然而,我也希望在当前主节点失效时,其中一个备份可以成为新的主节点,所以最终它们都需要属于同一个 postgresql
副本控制器。
迄今为止,我唯一的想法是将复制配置放在外部卷上,并在容器之外管理状态和状态更改。
(对于PostgreSQL来说,配置很可能已经存在于其data
目录内部的卷上了,显然我也想要这个目录在卷上,但这并不是重点)
这是正确的方法吗,还是有其他更简洁的方式?