version: '2.1'
services:
pg-0:
image: docker.io/bitnami/postgresql-repmgr:14
ports:
- 5433:5432
volumes:
- ./pg_0_data:/bitnami/postgresql
environment:
- POSTGRESQL_POSTGRES_PASSWORD=888888 //对应postgres用户的密码
- POSTGRESQL_USERNAME=kevin //自定义数据库用户名称
- POSTGRESQL_PASSWORD=888888 //自定义数据库用户密码
- POSTGRESQL_DATABASE=ha //初始化数据库
- POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS=1 //replicas数量,你可以启动多个replica,跟nodes保持一致
- REPMGR_PRIMARY_HOST=pg-0 // 主数据库
- REPMGR_PARTNER_NODES=pg-1,pg-0 // 集群中数据库的节点
- REPMGR_NODE_NAME=pg-0 // 集群中数据库的标识
- REPMGR_NODE_NETWORK_NAME=pg-0 // 集群中数据库的网络标识
- REPMGR_USERNAME=repmgr // 做数据备份用的用户,这个image自带的,如果需要修改,需要修改pg_hba.conf,然后创建一个新的用户
- REPMGR_PASSWORD=repmgrpassword // 备份数据用户的密码,同上。
pg-1:
image: docker.io/bitnami/postgresql-repmgr:14
ports:
- 5434:5432
volumes:
- ./pg_1_data:/bitnami/postgresql
environment:
- POSTGRESQL_POSTGRES_PASSWORD=888888
- POSTGRESQL_USERNAME=kevin
- POSTGRESQL_PASSWORD=888888
- POSTGRESQL_DATABASE=ha
- POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS=1
- REPMGR_PRIMARY_HOST=pg-0
- REPMGR_PARTNER_NODES=pg-0,pg-1
- REPMGR_NODE_NAME=pg-1
- REPMGR_NODE_NETWORK_NAME=pg-1
- REPMGR_USERNAME=repmgr
- REPMGR_PASSWORD=repmgrpassword
pgpool:
image: docker.io/bitnami/pgpool:4
ports:
- 5432:5432
environment:
- PGPOOL_BACKEND_NODES=0:pg-0:5432,1:pg-1:5432 // 节点列表,需要加上端口
- PGPOOL_SR_CHECK_USER=kevin // 用来检测节点状态的用户。
- PGPOOL_SR_CHECK_PASSWORD=888888
- PGPOOL_ENABLE_LDAP=no
- PGPOOL_POSTGRES_USERNAME=postgres // postgresql的用户
- PGPOOL_POSTGRES_PASSWORD=888888
- PGPOOL_ADMIN_USERNAME=admin // 管理员用户
- PGPOOL_ADMIN_PASSWORD=888888
- PGPOOL_ENABLE_LOAD_BALANCING=yes // 有多个read的节点的时候的配置
- PGPOOL_POSTGRES_CUSTOM_USERS=kevin // 应用程序中的使用的用户
- PGPOOL_POSTGRES_CUSTOM_PASSWORDS=888888
healthcheck:
test: [ "CMD", "/opt/bitnami/scripts/pgpool/healthcheck.sh" ] // 节点健康检查
interval: 10s // 检查间隔
timeout: 5s // 超时时间
retries: 5 // 检测次数,当超过检测次数的时候,如果主节点不可用,会自动切换到下一个节点,slave节点不可用的时候 会被移除。
评论