Base de données¶
L’environnement INFRA nécessite une base de données qui peut être interne ou externe à Docker Swarm.
Base de données externe¶
Pour configurer l’accès à une base de données externe, vous pouvez renseigner les variables suivantes en fonction du moteur de la base:
MySQL¶
DB_USER: "< Utilisateur pour s'authentifier sur la base de données >"
DB_USER_PASSWORD: "< Mot de passe pour s'authentifier sur la base de données >"
DB_NAME: "< Nom de la base de données >"
DB_HOST: "< IP >"
DB_DIALECT: "mysql"
PostgreSQL¶
DB_USER: "< Utilisateur pour s'authentifier sur la base de données >"
DB_USER_PASSWORD: "< Mot de passe pour s'authentifier sur la base de données >"
DB_NAME: "< Nom de la base de données >"
DB_HOST: "< IP >"
DB_DIALECT: "postgresql"
Ajout du support SSL¶
Pour ajouter le support SSL pour la connexion à la base de données, vous pouvez utiliser les options suivantes, à rajouter dans le fichier inventaire d’Ansible
DB_SSL_REQUIRE: "true"
DB_SSL_CERT_LOCALPATH: "/local/path/cert.crt"
DB_SSL_KEY_LOCALPATH: "/local/path/key.key"
DB_SSL_CA_LOCALPATH: "/local/path/ca.crt"
Base de données interne¶
Par défaut un serveur MySQL est présent dans le rôle reemo-infra, il sera déployé et configuré automatiquement si une base de données externe n’est pas renseignée.
MySQL¶
Par défaut une base de données MySQL est déployée dans l’environnement Docker Swarm.
Sur une architecture à un seul serveur, le répertoire local /opt/reemo sera monté dans le conteneur MySQL pour y installer la base de données.
Warning
Si vous ne souhaitez pas utiliser MySQL NDBCLUSTER, il faut prévoir une réplication entre les répertoires /opt/reemo pour que le conteneur MySQL puisse se relancer
sur un autre noeud en cas d’arrêt et conserver l’ensemble de ces données de la base existante.
MySQL NDBCLUSTER¶
Pour activer l’utilisation d’une base de données MySQL NDBCLUSTER, ajouter l’option DB_DIALECT=NDBCLUSTER dans le fichier inventaire, et les noms des différents hostnames composant votre cluster Swarm:
all:
vars:
API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
infra_manager:
vars:
DB_DIALECT: "NDBCLUSTER"
MYSQL_CLUSTER_DataMemory: 2G # permet d'augmenter la mémoire de la base de données (par défaut 2G)
MYSQL_CLUSTER_PATH: "/data/mysqlcluster" # Chemin où seront stockés les informations des différents services NDBCLUSTER (par défaut "/data/mysqlcluster")
MYSQL_NODE_HOSTNAME_DB1: "infra1"
MYSQL_NODE_HOSTNAME_DB2: "infra2"
MYSQL_NODE_HOSTNAME_DB3: "infra3"
hosts:
infra_manager1:
ansible_host: "10.0.0.1"
infra_manager2:
ansible_host: "10.0.0.2"
infra_manager3:
ansible_host: "10.0.0.3"
Tip
NDBCLUSTER requiert un minimum de 8 Go de RAM par noeud.
Warning
La latence recommandée est de l’ordre de moins de 1 ms entre les noeuds, entre 1 et 5 ms les performances peuvent chuter, au dessus de 5 ms risque de ralentissements et d’instabilités