Install Postgres
دایرکتوری زیر را در همه نود های دیتابیس ایجاد میکنیم:
mkdir -p /home/postgres/data
یک فایل docker-compose.yaml ایجاد کرده بصورت زیر: (درصورتی که تعداد سرور ها بیش از 2 عدد است فایل را تغییر دهید)
version: "3.6"
services:
zk1:
image: {REGISTRY_IP}:{REGISTRY_PORT}/bitnami/zookeeper:3.9.1
deploy:
placement:
constraints:
- "node.labels.region==db-1"
ports:
- target: 2181
published: 2181
mode: host
- target: 2888
published: 2888
mode: host
- target: 3888
published: 3888
mode: host
networks:
db_net: null
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
- ZOO_SERVER_ID=1
- ZOO_SERVERS=0.0.0.0:2888:3888,{SECOND_SERVER_IP}:2888:3888
zk2:
image: {REGISTRY_IP}:{REGISTRY_PORT}/bitnami/zookeeper:3.9.1
deploy:
placement:
constraints:
- "node.labels.region==db-2"
ports:
- target: 2181
published: 2181
mode: host
- target: 2888
published: 2888
mode: host
- target: 3888
published: 3888
mode: host
networks:
db_net: null
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
- ZOO_SERVER_ID=2
- ZOO_SERVERS={FIRST_SERVER_IP}:2888:3888,0.0.0.0:2888:3888
pgnode1:
image: {REGISTRY_IP}:{REGISTRY_PORT}/ghcr.io/zalando/spilo-15:3.0-p1
ports:
- target: 5432
published: 5432
mode: host
deploy:
replicas: 1
placement:
constraints:
- "node.labels.region==db-1"
environment:
ZOOKEEPER_HOSTS: {FISRT_SERVER_IP}:2181,{SECOND_SERVER_IP}:2181
PGPASSWORD_STANDBY: {PASSWORD}
PGPASSWORD_ADMIN: {PASSWORD}
PGPASSWORD_SUPERUSER: {PASSWORD}
SCOPE: pgCluster
networks:
db_net: null
volumes:
- /home/postgres/data:/home/postgres/pgdata
pgnode2:
image: {REGISTRY_IP}:{REGISTRY_PORT}/ghcr.io/zalando/spilo-15:3.0-p1
ports:
- target: 5432
published: 5432
mode: host
deploy:
replicas: 1
placement:
constraints:
- "node.labels.region==db-2"
environment:
ZOOKEEPER_HOSTS: {FISRT_SERVER_IP}:2181,{SECOND_SERVER_IP}:2181
PGPASSWORD_STANDBY: {PASSWORD}
PGPASSWORD_ADMIN: {PASSWORD}
PGPASSWORD_SUPERUSER: {PASSWORD}
SCOPE: pgCluster
networks:
db_net: null
volumes:
- /home/postgres/data:/home/postgres/pgdata
networks:
db_net:
name: mavara-pgsql-network
external: true
driver: overlay
مقادیر {REGISTRY_IP} ، {REGISTRY_PORT} ، {FIRST_SERVER_IP} ، {SECOND_SERVER_IP} و {PASSWORD} را بر اساس مقادیر صحیح تنظیم کنید
روی نود Manager Swarm دستورات زیر را اجرا میکنیم
unzip postgres-cluster.zip
cd postgres-cluster
chmod +x install-postgres-cluster.sh
./install-postgres-cluster.sh {REGISTRY_IP}:{REGISTRY_PORT}
در صورت موفقیت آمیز بودن دستور بالا، در دایرکتوری که فایل docker-compose.yaml موجود است دستورات زیر را اجرا میکنیم
docker network create -d overlay --attachable mavara-pgsql-network
docker stack deploy --compose-file docker-compose.yml the-pgsql-stack
کامند های زیر به بررسی وضعیت کلاستر PostgreSQL می پردازد.
docker service ls
docker stack services the-pgsql-stack
دستورات زیر برای بررسی لاگ سرویس ها میباشد (شماره instance ها را در آخر نام سرویس تغییر دهید)
docker service logs the-pgsql-stack_zk1
docker service logs the-pgsql-stack_pgnode1
جهت پایین آوردن کلاستر، کامند docker stack rm
از طریق یک نود Manager اجرا می شود
docker stack rm the-pgsql-stack
No Comments