Я хочу настроить кластер PXC в Docker Swarm с постоянными данными в производственной среде.
Мой код Ansible выглядит следующим образом:
version: '3.7'
services:
pxc_cluster:
image: percona/percona-xtradb-cluster:5.7
hostname: pxc_cluster
environment:
- CLUSTER_NAME={{ db.cluster_name }}
- MYSQL_ROOT_PASSWORD={{ db.root_pass }}
- MYSQL_DATABASE={{ db.percona.prod.name }}
- MYSQL_USER={{ db.user }}
- MYSQL_PASSWORD={{ db.pass }}
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
update_config:
parallelism: 1
delay: 10s
failure_action: continue
monitor: 30s
networks:
- percona-net
{% for n in range(1, 4) %}
pxc{{n}}:
image: percona/percona-xtradb-cluster:5.7
hostname: pxc{{ n }}
environment:
- CLUSTER_NAME={{ db.cluster_name }}
- CLUSTER_JOIN=pxc_cluster
- MYSQL_ROOT_PASSWORD={{ db.root_pass }}
- MYSQL_DATABASE={{ db.percona.prod.name }}
- MYSQL_USER={{ db.user }}
- MYSQL_PASSWORD={{ db.pass }}
depends_on:
- pxc_cluster
volumes:
- hdb_data{{ n }}:/var/lib/mysql
deploy:
mode: global
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
update_config:
parallelism: 1
delay: 10s
failure_action: continue
monitor: 30s
placement:
constraints:
- node.labels.env == prod
- node.labels.percona == pxc{{ n }}
networks:
- percona-net
{% endfor %}
adminer:
image: adminer
deploy:
restart_policy:
condition: any
networks:
- percona-net
- vpn-net
networks:
percona-net:
name: name_percona-net
vpn-net:
external:
name: name_vpn-net
volumes:
{% for n in range(1, 4) %}
hdb_data{{ n }}:
driver: local
{% endfor %}
, но проблема в том, что если сервер сpxc_cluster идет вниз, затем кластер также будет падать.Не будет иметь значения, станет ли сервер доступным, поскольку кластер исчезнет.Кроме того, если pxc_cluster содержит постоянные данные, это также не поможет.
Что я могу сделать, чтобы кластер с 3 базами данных на 3 разных узлах для HA?
С уважением,
Эстин