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节点不可用的时候 会被移除。
评论