Merge branch 'master' into dist/eole/2.6.2/master

This commit is contained in:
Philippe Caseiro 2018-05-17 10:14:19 +02:00
commit ae696769ed
2 changed files with 252 additions and 180 deletions

View File

@ -6,7 +6,80 @@ mise en clustter
# How-to for Eole 2.6.2 (using this repo dico and templates) # How-to for Eole 2.6.2 (using this repo dico and templates)
### FIXME Start with 3 fresh eolebase 2.6.2 instancied.
One for the Clustter Leader, another for the cluster Node another for the Arbitrator, the arbitrator can be replaced by another node.
The order is very important, Never configure a Node before the Leader ! The Leader must be the first one.
## Add the Cadoles repository on all the nodes and the Leader
GenConfig [Mode Expert] -> Dépôts Tiers
* Libellé du dépôt : Cadoles dev
* Déclaration du dépôt : deb [ arch=all ] https://vulcain.cadoles.com 2.6.2-dev main
* Méthode de récupération de la clé publique du dépôt : URL de la clé
* URL de la clé : https://vulcain.cadoles.com/cadoles.gpg
## Add the MariaDB repository on all the nodes and the Leader
GenConfig (Mode Expert) -> Dépôt tiers :
* Libellé du dépôt : MariaDB
* Déclaration du dépôt : deb [arch=amd64] http://mariadb.mirrors.ovh.net/MariaDB/repo/10.2/ubuntu xenial main
* Méthode de récupération de la clé publique du dépôt : serveur de clés
* URL du serveur de clés : hkp://keyserver.ubuntu.com:80
* Empreinte de la clé : 0xF1656F24C74CD1D8
## Configure the Leader :
GenConfig (Mode Normal) -> Services :
* Activer le serveur de base de données MariaDB : oui
GenConfig (Mode Normal) -> Database :
* Activer la mise en grappe MariaDB Galera ? : oui
GenConfig (Mode Normal) -> Database cluster :
* Rôle dans la grappe : Leader
* Interface réseau dédiée à la grappe BDD : eth0
* Nom du noeud local : <THE NAME YOU WANT>
* Membre de la grappe BDD :
* Membre de la grappe BDD : <NAME OF THE LEADER>
* Adresse IP : <IP OF THE LEADER>
* Membre de la grappe BDD : <NAME OF THE ARBITRATOR OR NODE>
* Adresse IP : <IP OF THE NODE OR ARBITRATOR>
* *Nom de la grappe : <NAME OF THE CLUSTER>
## Reconfigure Leader !
Run reconfigure command !
## Configure the Nodes !
GenConfig (Mode Normal) -> Services :
* Activer le serveur de base de données MariaDB : oui
GenConfig (Mode Normal) -> Database :
* Activer la mise en grappe MariaDB Galera ? : oui
GenConfig (Mode Normal) -> Database cluster :
* Rôle dans la grappe : Node
* Interface réseau dédiée à la grappe BDD : eth0
* Nom du noeud local : <THE NAME YOU WANT>
* Membre de la grappe BDD :
* Membre de la grappe BDD : <NAME OF THE LEADER>
* Adresse IP : <IP OF THE LEADER>
* Membre de la grappe BDD : <NAME OF THE ARBITRATOR OR NODE>
* Adresse IP : <IP OF THE NODE OR ARBITRATOR>
* *Nom de la grappe : <NAME OF THE CLUSTER>
## Reconfigure the Nodes !
Run reconfigure command on each node one by one.
## Configure the Arbitrator if needed !
If you have only 2 nodes you need to setup an arbitrator, for this follow the tutorial in the eole-galera-arbitrator project page https://forge.cadoles.com/Cadoles/eole-galera-arbitrator
# How-to for Eole 2.6.2 (From scratch) # How-to for Eole 2.6.2 (From scratch)

View File

@ -1,211 +1,210 @@
<creole> <creole>
<files> <files>
<file filelist='dbMariaDB' name='/etc/mysql/conf.d/mariadb.cnf' rm='True' mkdir='True'/> <file filelist='dbMariaDB' name='/etc/mysql/conf.d/mariadb.cnf' rm='True' mkdir='True'/>
<file filelist='dbCluster' name='/etc/mysql/conf.d/galera.cnf' rm='True' mkdir='True'/> <file filelist='dbCluster' name='/etc/mysql/conf.d/galera.cnf' rm='True' mkdir='True'/>
<file filelist='dbTunning' name='/etc/mysql/conf.d/tunning.cnf' rm='True' mkdir='True'/> <file filelist='dbTunning' name='/etc/mysql/conf.d/tunning.cnf' rm='True' mkdir='True'/>
<service servicelist='bdd'>mariadb</service> <service servicelist='bdd'>mariadb</service>
<service_access service='mariadb'> <service_access service='mariadb'>
<port service_accesslist='mariadb' protocol='tcp'>3306</port> <port service_accesslist='mariadb' protocol='tcp'>3306</port>
<tcpwrapper service_accesslist='mariadb'>mariadb</tcpwrapper> <tcpwrapper service_accesslist='mariadb'>mariadb</tcpwrapper>
</service_access> </service_access>
<service_access service='galera'> <service_access service='galera'>
<port service_accesslist='dbCluster' protocol='tcp'>4444</port> <port service_accesslist='dbCluster' protocol='tcp'>4444</port>
<port service_accesslist='dbCluster' protocol='tcp'>4567</port> <port service_accesslist='dbCluster' protocol='tcp'>4567</port>
<port service_accesslist='dbCluster' protocol='tcp'>4568</port> <port service_accesslist='dbCluster' protocol='tcp'>4568</port>
<port service_accesslist='dbCluster' protocol='udp'>4567</port> <port service_accesslist='dbCluster' protocol='udp'>4567</port>
<tcpwrapper service_accesslist='mariadb'>mariadb</tcpwrapper> <tcpwrapper service_accesslist='mariadb'>mariadb</tcpwrapper>
</service_access> </service_access>
<service_restriction service='mariadb'> <service_restriction service='mariadb'>
<ip interface='ifMariaDBLimit' interface_type="SymLinkOption" netmask='maskMariaDBLimit' netmask_type='SymLinkOption' ip_type='SymLinkOption'>ipMariaDBLimit</ip> <ip interface='ifMariaDBLimit' interface_type="SymLinkOption" netmask='maskMariaDBLimit' netmask_type='SymLinkOption' ip_type='SymLinkOption'>ipMariaDBLimit</ip>
</service_restriction> </service_restriction>
<service_restriction service='galera'> <service_restriction service='galera'>
<ip interface='ifDBCluster' interface_type="SymLinkOption" netmask='255.255.255.255' ip_type='SymLinkOption'>dbClusterMemberIP</ip> <ip interface='ifDBCluster' interface_type="SymLinkOption" netmask='255.255.255.255' ip_type='SymLinkOption'>dbClusterMemberIP</ip>
</service_restriction> </service_restriction>
</files> </files>
<variables> <variables>
<family name="Services"> <family name="Services">
<variable name="dbEnable" type='oui/non' description='Activer le serveur de base de données MariaDB'> <variable name="dbEnable" type='oui/non' description='Activer le serveur de base de données MariaDB'>
<value>non</value> <value>non</value>
</variable> </variable>
</family> </family>
<family name="DataBase"> <family name="Database">
<variable name='dbEnableCluster' type='oui/non' description="Activer la mise en grappe MariaDB Galera ?"> <variable name='dbEnableCluster' type='oui/non' description="Activer la mise en grappe MariaDB Galera ?">
<value>non</value> <value>non</value>
</variable> </variable>
<variable name='ipMariaDBLimit' type='network' description="Adresse IP réseau autorisée pour les connexions distantes au serveur MySQL" multi='True' mandatory='True'/> <variable name='ipMariaDBLimit' type='network' description="Adresse IP réseau autorisée pour les connexions distantes au serveur MySQL" multi='True' mandatory='True'/>
<variable name='maskMariaDBLimit' type='netmask' description="Masque du sous réseau pour les connexions distantes au serveur MySQL" mandatory='True'/> <variable name='maskMariaDBLimit' type='netmask' description="Masque du sous réseau pour les connexions distantes au serveur MySQL" mandatory='True'/>
<variable name='ifMariaDBLimit' type='string' description="Interface pour les connexions distantes au serveur MySQL" mandatory='True'> <variable name='ifMariaDBLimit' type='string' description="Interface pour les connexions distantes au serveur MySQL" mandatory='True'>
<value>auto</value> <value>auto</value>
</variable> </variable>
<variable name="dbCreateFixAdmin" type='oui/non' description="Créer des comptes admin MySQL avec un mot de passe fixe"/> <variable name="dbCreateFixAdmin" type='oui/non' description="Créer des comptes admin MySQL avec un mot de passe fixe"/>
<variable name="accName" type='string' description="Nom du compte" multi="True"/> <variable name="accName" type='string' description="Nom du compte" multi="True"/>
<variable name="accLimits" type='string' description="Limiter les accès des comptes"> <variable name="accLimits" type='string' description="Limiter les accès des comptes">
<value>Default</value> <value>Default</value>
</variable> </variable>
<variable name="accLimitTarget" type="string" description="Restriction d'accès à ces IP/noms d'hôtes (liste séparateur séparateur ',')" /> <variable name="accLimitTarget" type="string" description="Restriction d'accès à ces IP/noms d'hôtes (liste séparateur séparateur ',')" />
<variable name="dbClusterGcacheSizeMb" type="number" description="FIXME Gcachesize"> <variable name="dbClusterGcacheSizeMb" type="number" description="FIXME Gcachesize">
<value>128</value> <value>128</value>
</variable> </variable>
</family> </family>
<!-- Tunning --> <!-- Tunning -->
<family name="DataBase Tunning" mode="expert"> <family name="Database Tunning" mode="expert">
<variable name="dbInnoDBBufferPoolPercentage" type="number" description="Pourcentage de mémoire à dédier à MariaDB"> <variable name="dbInnoDBBufferPoolPercentage" type="number" description="Pourcentage de mémoire à dédier à MariaDB">
<value>20</value> <value>20</value>
</variable> </variable>
<variable name="dbMaxConnections" type="number" description="Nombre de connection maximum pour le serveur de bases de données (max_connections)"> <variable name="dbMaxConnections" type="number" description="Nombre de connection maximum pour le serveur de bases de données (max_connections)">
<value>100</value> <value>100</value>
</variable> </variable>
<variable name="dbThreadCacheSize" type="number" description="Nombre de threads mis en cache par le serveur MariaDB"> <variable name="dbThreadCacheSize" type="number" description="Nombre de threads mis en cache par le serveur MariaDB">
<value>16</value> <value>16</value>
</variable> </variable>
<variable name="dbCacheQueryEnable" type="oui/non" description="Activer la mise en cache des requêtes"> <variable name="dbCacheQueryEnable" type="oui/non" description="Activer la mise en cache des requêtes">
<value>non</value> <value>non</value>
</variable> </variable>
<variable name="dbQueryCacheLimit" type="string" description="Taille maximum des résultats de requêtes à mettre en cache"> <variable name="dbQueryCacheLimit" type="string" description="Taille maximum des résultats de requêtes à mettre en cache">
<value>900K</value> <value>900K</value>
</variable> </variable>
<variable name="dbQueryCacheMinRestUnit" type="string" description="Taille des blocks du cache des requêtes"> <variable name="dbQueryCacheMinRestUnit" type="string" description="Taille des blocks du cache des requêtes">
<value>2K</value> <value>2K</value>
</variable> </variable>
<variable name="dbQueryCacheSize" type="string" description="Taille maximum du cache des requêtes"> <variable name="dbQueryCacheSize" type="string" description="Taille maximum du cache des requêtes">
<value>80M</value> <value>80M</value>
</variable> </variable>
<variable name="dbTmpTableSize" type="string" description="Taille maximum des tables internes stockées en mémoire"> <variable name="dbTmpTableSize" type="string" description="Taille maximum des tables internes stockées en mémoire">
<value>64M</value> <value>64M</value>
</variable> </variable>
<variable name="dbEnableSlowQueryLogs" type="oui/non" description="Journaliser les requêtes lentes (Slow Query)"> <variable name="dbEnableSlowQueryLogs" type="oui/non" description="Journaliser les requêtes lentes (Slow Query)">
<value>non</value> <value>non</value>
</variable> </variable>
<variable name="dbSlowQueryLogFile" type="string" description="Fichier de journalisation des requêtes lentes"> <variable name="dbSlowQueryLogFile" type="string" description="Fichier de journalisation des requêtes lentes">
<value>/var/log/mysql/slow-query.log</value> <value>/var/log/mysql/slow-query.log</value>
</variable> </variable>
<variable name="dbSlowQueryLogTime" type="number" description="Durée à partir de laquelle une requête est considérée comme lente (en secondes)"> <variable name="dbSlowQueryLogTime" type="number" description="Durée à partir de laquelle une requête est considérée comme lente (en secondes)">
<value>1</value> <value>1</value>
</variable> </variable>
<variable name="dbWaitTimeout" type="number" description="Durée maximum d'inactivité d'une session (en secondes)"> <variable name="dbWaitTimeout" type="number" description="Durée maximum d'inactivité d'une session (en secondes)">
<value>20</value> <value>20</value>
</variable> </variable>
<variable name="dbAutoOptimizeAndRepare" type="oui/non" description="Activer l'autoréparation et optimisation de toutes les bases de données"> <variable name="dbAutoOptimizeAndRepare" type="oui/non" description="Activer l'autoréparation et optimisation de toutes les bases de données">
<value>non</value> <value>non</value>
</variable> </variable>
</family> </family>
<family name="Database Cluster"> <family name="Database Cluster">
<variable name='dbClusterPosition' type='string' description="Rôle dans la grappe" mandatory='True'/> <variable name='dbClusterPosition' type='string' description="Rôle dans la grappe" mandatory='True'/>
<variable name='ifDBCluster' type='string' description="Interface réseau dédiée à la grappe BDD"/> <variable name='ifDBCluster' type='string' description="Interface réseau dédiée à la grappe BDD"/>
<!-- FIXME : Fill this variable with nom_machine --> <!-- FIXME : Fill this variable with nom_machine -->
<variable name='nodeName' type='string' description="Nom du noeud local"/> <variable name='nodeName' type='string' description="Nom du noeud local"/>
<variable name='dbClusterMember' type='string' description="Membre de la grappe BDD" multi='True'/> <variable name='dbClusterMember' type='string' description="Membre de la grappe BDD" multi='True'/>
<variable name='dbClusterMemberIP' type='ip' description="Adresse IP"/> <variable name='dbClusterMemberIP' type='ip' description="Adresse IP"/>
<!-- Expert Variables --> <!-- Expert Variables -->
<variable name='dbClusterName' type='string' description='Nom de la grappe'> <variable name='dbClusterName' type='string' description='Nom de la grappe'>
<value>galera_cluster</value> <value>galera_cluster</value>
</variable> </variable>
<variable name='dbBinLogFormat' type='string' mode='expert' description='Format du binlog'> <variable name='dbBinLogFormat' type='string' mode='expert' description='Format du binlog'>
<value>ROW</value> <value>ROW</value>
</variable> </variable>
<variable name='dbDefaultStorage' type='string' mode='expert' description='Default storage engine'> <variable name='dbDefaultStorage' type='string' mode='expert' description='Default storage engine'>
<value>innodb</value> <value>innodb</value>
</variable> </variable>
<variable name='dbSSTMethod' type='string' mode='expert' description='Méthode SST'> <variable name='dbSSTMethod' type='string' mode='expert' description='Méthode SST'>
<value>rsync</value> <value>rsync</value>
</variable> </variable>
<variable name='dbClusterGcacheSize' type='number' mode='expert' description="Write-set Cache Size (gcache.size)"> <variable name='dbClusterGcacheSize' type='number' mode='expert' description="Write-set Cache Size (gcache.size)">
<value>128</value> <value>128</value>
</variable> </variable>
<!-- End --> <!-- End -->
</family> </family>
<separators> <separators>
<separator name='dbCreateFixAdmin'>Comptes d'administration supplémentaires</separator> <separator name='dbCreateFixAdmin'>Comptes d'administration supplémentaires</separator>
</separators> </separators>
</variables> </variables>
<constraints> <constraints>
<check name='valid_enum' target='ifDBCluster'> <check name='valid_enum' target='ifDBCluster'>
<param>['eth0', 'eth1', 'eth2', 'eth3', 'eth4']</param> <param>['eth0', 'eth1', 'eth2', 'eth3', 'eth4']</param>
</check> </check>
<group master='dbClusterMember'> <group master='dbClusterMember'>
<slave>dbClusterMemberIP</slave> <slave>dbClusterMemberIP</slave>
</group> </group>
<check name='valid_enum' target='accLimits'> <check name='valid_enum' target='accLimits'>
<param>['Default','Custom']</param> <param>['Default','Custom']</param>
</check> </check>
<check name='valid_enum' target='dbClusterPosition'> <check name='valid_enum' target='dbClusterPosition'>
<param>['Leader','Node']</param> <param>['Leader','Node']</param>
</check> </check>
<group master='accName'> <group master='accName'>
<slave>accLimits</slave> <slave>accLimits</slave>
<slave>accLimitTarget</slave> <slave>accLimitTarget</slave>
</group> </group>
<group master='ipMariaDBLimit'> <group master='ipMariaDBLimit'>
<slave>maskMariaDBLimit</slave> <slave>maskMariaDBLimit</slave>
<slave>ifMariaDBLimit</slave> <slave>ifMariaDBLimit</slave>
</group> </group>
<fill name='calc_multi_condition' target='accLimitTarget'> <fill name='calc_multi_condition' target='accLimitTarget'>
<param>Default</param> <param>Default</param>
<param type='eole' name='condition_1'>accLimits</param> <param type='eole' name='condition_1'>accLimits</param>
<param name='default_match'>Default</param> <param name='default_match'>Default</param>
<param name='mismatch'>""</param> <param name='mismatch'>""</param>
</fill> </fill>
<condition name='disabled_if_in' source="dbEnable"> <condition name='disabled_if_in' source="dbEnable">
<param>non</param> <param>non</param>
<target type='family'>Database</target> <target type='family'>Database</target>
<target type='family'>Database Cluster</target> <target type='family'>Database Cluster</target>
<target type='family'>DataBase Tunning</target> <target type='family'>Database Tunning</target>
<target type='service_accesslist'>dbCluster</target> <target type='service_accesslist'>dbCluster</target>
<target type='filelist'>dbTunning</target> <target type='filelist'>dbTunning</target>
<target type='filelist'>dbMariaDB</target> <target type='filelist'>dbMariaDB</target>
<target type='filelist'>dbCluster</target> <target type='filelist'>dbCluster</target>
<target type='servicelist'>bdd</target> <target type='servicelist'>bdd</target>
</condition> </condition>
<condition name='disabled_if_in' source="dbCreateFixAdmin"> <condition name='disabled_if_in' source="dbCreateFixAdmin">
<param>non</param> <param>non</param>
<target type='variable'>accName</target> <target type='variable'>accName</target>
<target type='variable'>accLimits</target> <target type='variable'>accLimits</target>
<target type='variable'>accLimitTarget</target> <target type='variable'>accLimitTarget</target>
</condition> </condition>
<condition name='disabled_if_in' source="dbEnableCluster"> <condition name='disabled_if_in' source="dbEnableCluster">
<param>non</param> <param>non</param>
<target type='family'>Database Cluster</target> <target type='family'>Database Cluster</target>
<target type='service_accesslist'>dbCluster</target> <target type='service_accesslist'>dbCluster</target>
<target type='filelist'>dbCluster</target> <target type='filelist'>dbCluster</target>
</condition> </condition>
<condition name='disabled_if_in' source="dbCacheQueryEnable"> <condition name='disabled_if_in' source="dbCacheQueryEnable">
<param>non</param> <param>non</param>
<target type='variable'>dbQueryCacheLimit</target> <target type='variable'>dbQueryCacheLimit</target>
<target type='variable'>dbQueryCacheMinRestUnit</target> <target type='variable'>dbQueryCacheMinRestUnit</target>
<target type='variable'>dbQueryCacheSize</target> <target type='variable'>dbQueryCacheSize</target>
</condition> </condition>
<condition name='disabled_if_in' source="dbEnableSlowQueryLogs"> <condition name='disabled_if_in' source="dbEnableSlowQueryLogs">
<param>non</param> <param>non</param>
<target type='variable'>dbSlowQueryLogTime</target> <target type='variable'>dbSlowQueryLogTime</target>
<target type='variable'>dbSlowQueryLogFile</target> <target type='variable'>dbSlowQueryLogFile</target>
</condition> </condition>
<condition name='disabled_if_in' source="dbClusterPosition"> <condition name='disabled_if_in' source="dbClusterPosition">
<param>Node</param> <param>Node</param>
<target type='variable'>dbCreateFixAdmin</target> <target type='variable'>accName</target>
<target type='variable'>accName</target> <target type='variable'>accLimits</target>
<target type='variable'>accLimits</target> <target type='variable'>accLimitTarget</target>
<target type='variable'>accLimitTarget</target> </condition>
</condition> </constraints>
</constraints> <help/>
<help/>
</creole> </creole>