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