Как создать кластер Percona XtraDB в Docker Swarm на нескольких узлах с постоянными данными - PullRequest
0 голосов
/ 27 января 2019

Я хочу настроить кластер 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?

С уважением,

Эстин

...