Docker stack deploy postgresql slave container 在几分钟内重启
Docker stack deploy postgresql slave container restart in few minutes
运行 这个 YML 与 docker 堆叠在一起。 Docker 用于创建 Postgresql 的堆栈文件 master/slave 设置有 2 个从站。
从属容器将在几分钟内重新启动,重复并重复....
如何解决?
docker stack deploy -c docker-stack-postgresql.yml post
docker-stacl-postgresql.yml
<pre>version: "3"
services:
db1:
image: bitnami/postgresql:latest
ports:
- "127.0.0.1:5432:5432"
networks:
- awesomenet
deploy:
placement:
constraints: [node.hostname == node-docker-1]
volumes:
- pgdata:/bitnami/postgresql
env_file: .env.master
db2:
image: bitnami/postgresql:latest
depends_on:
- db1
ports:
- "127.0.0.1:5433:5432"
networks:
- awesomenet
deploy:
placement:
constraints: [node.hostname == node-docker-2]
volumes:
- pgdata:/bitnami/postgresql
env_file: .env.slave
db3:
image: bitnami/postgresql:latest
depends_on:
- db1
ports:
- "127.0.0.1:5434:5432"
networks:
- awesomenet
deploy:
placement:
constraints: [node.hostname == node-docker-3]
volumes:
- pgdata:/bitnami/postgresql
env_file: .env.slave
volumes:
pgdata:
networks:
awesomenet:
driver: overlay
driver_opts:
encrypted: "true"
</pre>
master 的 env 文件:.env.master
<pre>
POSTGRESQL_REPLICATION_MODE=master
POSTGRESQL_REPLICATION_USER=replication_user
POSTGRESQL_REPLICATION_PASSWORD= replication_password
POSTGRESQL_USERNAME=postgres
POSTGRESQL_PASSWORD=password
POSTGRESQL_DATABASE=monkey_db
</pre>
环境文件:.env.slave
<pre>
POSTGRESQL_REPLICATION_MODE=slave
POSTGRESQL_REPLICATION_USER=replication_user
POSTGRESQL_REPLICATION_PASSWORD= replication_password
POSTGRESQL_MASTER_HOST=db1
POSTGRESQL_MASTER_PORT=5432
</pre>
PostgreSQL 日志文件:
<pre>
nami INFO Initializing postgresql
postgre INFO This installation requires no credentials.
nami INFO postgresql successfully initialized
</pre>
PostgreSQL error.log
<pre>
2018-01-16T00:22:47.426512118Z Starting postgresql...
2018-01-16T00:26:11.369732522Z ERROR Unable to start com.bitnami.postgresql: pg_ctl: directory "/opt/bitnami/postgresql/data" is not a database cluster directory
</pre>
这对我有用:
version: "3"
services:
db1:
image: bitnami/postgresql:latest
volumes:
- pgdata:/bitnami/postgresql
env_file: .env.master
db2:
image: bitnami/postgresql:latest
env_file: .env.slave
db3:
image: bitnami/postgresql:latest
env_file: .env.slave
volumes:
pgdata:
所以您可能试图对所有三个服务使用相同的卷。因此,要么 1. 为每个创建一个不同的命名卷,要么 2. 不要为 db2/3 使用卷,因为它们只是主卷的副本。
此外,不需要使用 depends_on,它在 Swarm Stacks 中不起作用。
运行 这个 YML 与 docker 堆叠在一起。 Docker 用于创建 Postgresql 的堆栈文件 master/slave 设置有 2 个从站。
从属容器将在几分钟内重新启动,重复并重复....
如何解决?
docker stack deploy -c docker-stack-postgresql.yml post
docker-stacl-postgresql.yml
<pre>version: "3"
services:
db1:
image: bitnami/postgresql:latest
ports:
- "127.0.0.1:5432:5432"
networks:
- awesomenet
deploy:
placement:
constraints: [node.hostname == node-docker-1]
volumes:
- pgdata:/bitnami/postgresql
env_file: .env.master
db2:
image: bitnami/postgresql:latest
depends_on:
- db1
ports:
- "127.0.0.1:5433:5432"
networks:
- awesomenet
deploy:
placement:
constraints: [node.hostname == node-docker-2]
volumes:
- pgdata:/bitnami/postgresql
env_file: .env.slave
db3:
image: bitnami/postgresql:latest
depends_on:
- db1
ports:
- "127.0.0.1:5434:5432"
networks:
- awesomenet
deploy:
placement:
constraints: [node.hostname == node-docker-3]
volumes:
- pgdata:/bitnami/postgresql
env_file: .env.slave
volumes:
pgdata:
networks:
awesomenet:
driver: overlay
driver_opts:
encrypted: "true"
</pre>
master 的 env 文件:.env.master
<pre>
POSTGRESQL_REPLICATION_MODE=master
POSTGRESQL_REPLICATION_USER=replication_user
POSTGRESQL_REPLICATION_PASSWORD= replication_password
POSTGRESQL_USERNAME=postgres
POSTGRESQL_PASSWORD=password
POSTGRESQL_DATABASE=monkey_db
</pre>
环境文件:.env.slave
<pre>
POSTGRESQL_REPLICATION_MODE=slave
POSTGRESQL_REPLICATION_USER=replication_user
POSTGRESQL_REPLICATION_PASSWORD= replication_password
POSTGRESQL_MASTER_HOST=db1
POSTGRESQL_MASTER_PORT=5432
</pre>
PostgreSQL 日志文件:
<pre>
nami INFO Initializing postgresql
postgre INFO This installation requires no credentials.
nami INFO postgresql successfully initialized
</pre>
PostgreSQL error.log
<pre>
2018-01-16T00:22:47.426512118Z Starting postgresql...
2018-01-16T00:26:11.369732522Z ERROR Unable to start com.bitnami.postgresql: pg_ctl: directory "/opt/bitnami/postgresql/data" is not a database cluster directory
</pre>
这对我有用:
version: "3"
services:
db1:
image: bitnami/postgresql:latest
volumes:
- pgdata:/bitnami/postgresql
env_file: .env.master
db2:
image: bitnami/postgresql:latest
env_file: .env.slave
db3:
image: bitnami/postgresql:latest
env_file: .env.slave
volumes:
pgdata:
所以您可能试图对所有三个服务使用相同的卷。因此,要么 1. 为每个创建一个不同的命名卷,要么 2. 不要为 db2/3 使用卷,因为它们只是主卷的副本。
此外,不需要使用 depends_on,它在 Swarm Stacks 中不起作用。