Menu principal

Statut de la page

Ansible : Automatisation du déploiement d’un cluster multi master pour MariaDB (et MySQL…) avec Galera

Cet article est la suite de mon précédent article sur le sujet dans le but de pousser le concept un peu plus loin. C’est mon premier role Ansible donc je suis à peu près certain qu’il est possible de mieux faire. Dans un premier temps, paramétrons le fichier /etc/ansible/hosts pour y lister nos serveurs. [galera] db1.morot.test db2.morot.test db3.morot.test On créé notre rôle avec ansible-galaxy pour se faciliter le travail : cd /etc/ansible/ mkdir roles ansible-galaxy init galera - galera was created successfully On pousse notre template de configuration MariaDB dans /etc/ansible/roles/galera/templates/my.cnf.j2 : [client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = [...]
Lire la suite
Vus : 132
Publié par Morot : 24

Cluster multi master pour MariaDB (et MySQL…) avec Galera

Petite présentation Galera est une surcouche de MariaDB permettant de mettre en œuvre un cluster au dessus du moteur de stockage InnoDB pour permettre un environnement hautement disponible : Réplication multi master Réplication synchrone Chaque nœud du cluster est utilisable pour un accès lecture/écriture La réplication est supportée au travers d’un lien WAN et de la latence que ce type de lien peut comporter Contrôle d’admission au cluster intégré Dans une architecture Galera, les clients SQL vont donc attaquer le cluster via un Load Balancer comme HAProxy qui sera lui-même hautement disponible :  [...]
Lire la suite
Vus : 123
Publié par Morot : 24

Puppet : déployer automatiquement une applications Web avec les services Apache/PHP/MySQL

Dans ce court article, je vous propose de découvrir comment avec Puppet, il est simple de déployer un serveur Web complet prêt à accueillir une application web depuis son dépôt GIT. Je vais prendre pour exemple le célèbre CMS WordPress. Premièrement, on installe les modules dont on aura besoin : puppet module install puppetlabs-apache --version 2.3.0 puppet module install puppetlabs-mysql --version 5.1.0 puppet module install puppetlabs-vcsrepo Partons sur une simple définition de node dans le fichier /etc/puppetlabs/code/environments/production/manifests/site.pp contenant notre serveur web. On installe Apache avec le moteur prefork et non pas worker fourni par défaut car on souhaite installer mod_php. Enfin on créé un VirtualHost www.morot.test dont les fichiers seront dans le répertoire /srv/www : node 'www' { class { 'apache': default_vhost => false, mpm_module [...]
Lire la suite
Vus : 141
Publié par Morot : 24

OpenLDAP : corriger les ldif_read_file: checksum error

Si comme moi il vous arrive de modifier les fichiers de configuration ldif d’openldap à la main plutôt que de les modifier en injectant un LDIF, cela génère des jolies erreurs non bloquantes comme ceci :

ldif_read_file: checksum error on "/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif"

Pour corriger, rien de plus simple, on installe un utilitaire et on génère le nouveau CRC :

apt-get install libarchive-zip-perl
crc32 

Il ne reste plus qu'à modifier l'en-tête du fichier en erreur, ici /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif avec vim (c'est autorisé cette fois!) et à indiquer le checksum obtenu.

Vus : 193
Publié par Morot : 24

Puppet : automatiser la construction d’un volume GlusterFS répliqué

Puppet : automatiser la construction d’un volume GlusterFS répliqué Je vais présenter rapidement comment créer le code Puppet adapté à la création d’un cluster à deux noeuds avec deux bricks répliqués. Pour la démonstration, j’aurais deux VM Ubuntu 16.04 et les bricks seront sur deux disques durs de 8 Go. Préparation du Puppet Master Installation des modules nécessaires : # puppet module install puppetlabs-lvm Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ... Notice: Downloading from https://forgeapi.puppet.com ... Notice: Installing -- do not interrupt ... /etc/puppetlabs/code/environments/production/modules └─┬ puppetlabs-lvm (v0.9.0) └── puppetlabs-stdlib (v4.20.0) # puppet module install puppet-gluster Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ... Notice: [...]
Lire la suite
Vus : 199
Publié par Morot : 24

HAProxy : gérer la persistance des sessions lorsque l’application n’est pas conçue pour

Le problème avec les sessions HTTP c’est qu’elles sont complètement décorrélées des sessions TCP. Sans load balancer, ce n’est pas un problème, par contre dans une architecture multi serveur, un utilisateur peut être redirigé vers un serveur web qui n’est pas au courant de la session HTTP. Ce cas se produit typiquement avec un algorithme de type round robin. Ainsi, un utilisateur peut lors de la première connexion être authentifié sur un serveur puis lors de l’accès suivant être redirigé vers le second serveur moins chargé. Habituellement, pour gérer ce type de situation : On utilise un système de cache partagé entre les serveurs pour gérer les sessions : base de données, memcache, système de fichier L’application gère nativement le mode cluster Pour une même [...]
Lire la suite
Vus : 272
Publié par Morot : 24

Loadbalancer hautement disponible avec HAProxy et Keepalived

Introduction Cet article est une version actualisée de ce que j’avais publié dans GNU/Linux France Magazine numéro 163. Voici ce que l’on souhaite obtenir : Un service utilisateur hautement disponible avec des serveurs de type Postfix, Apache, Zimbra, Dovecot, etc… Les serveurs de ces backends devront être en mode actif/actif afin de pouvoir fournir un système apte à monter en charge La haute disponibilité sera gérée par des load balancer qui ne devront pas être eux mêmes un SPOF, ils seront donc également load balancés Et pour être en phase avec la législation, les backends devront avoir en visibilité les adresses IP des clients et ce contrairement à un certain nombre d’architectures où le load balancer effectue du NAT et donc [...]
Lire la suite
Vus : 412
Publié par Morot : 24

HHVM, l’autre interpréteur PHP!

HHVM est un interpréteur pour le langage PHP créé par Facebook. Il gère actuellement un sous ensemble confortable de PHP5 et le langage de programmation Hack dérivé de PHP. Les différences de fonctionnement entre Hack et PHP sont documentées sur le site officiel. De même, la plupart des modules PHP sont fonctionnels avec HHVM. Installation : Le projet HHVM a le bon goût de proposer des paquets Debian et Ubuntu, par conséquent : sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 sudo add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main" sudo apt-get update sudo apt-get install hhvm Pour tester, c’est très simple, on peut utiliser le démon HHVM. Créons une simple page PHP [...]
Lire la suite
Vus : 604
Publié par Morot : 24

HA avec Keepalived (GLMF 163)

Haute Disponibilité et répartition de charge avec KeepAlived ! Keepalived c’est un peu comme le miel, au début ça colle aux doigts et après on s’aperçoit que son parfum sucré est drôlement agréable. Je vais donc aborder les fondements de la haute disponibilité de services réseaux au niveau kernel pour arriver à une solution entièrement pilotée. De quoi s’agit-il ? Une architecture informatique est dite hautement disponible lorsque sa conception est pensée d’une part pour répondre à la panne d’un ou plusieurs équipements et d’autre part lorsqu’elle est capable d’encaisser un pic de charge sans sourciller. La solution présentée dans ces pages se focalise sur la notion de services réseaux. Bien entendu, la notion de haute disponibilité doit être prise en compte à tous les niveaux [...]
Lire la suite
Vus : 796
Publié par Morot : 24

Authentification LDAP sous Ubuntu 12.04 LTS

Voici un petit tuto très succint pour mettre en place rapidement une authentification LDAP. Je ne m’attarderai pas sur la sécurité, la réplication etc… On part d’un serveur vierge, avec le réseau configuré. Si votre domaine DNS c’est toto.local, le DIT LDAP sera dc=toto,dc=local. Pour moi ce sera dc=morot,dc=fr C’est parti : apt-get install slapd ldap-utils> On met en place nos OU qui contiendront les utilisateurs et les groupes (faire un control+D à la fin de la saisie) : ldapadd -x -W -D cn=admin,dc=morot,dc=fr dn: ou=People,dc=morot,dc=fr objectClass: top objectClass: organizationalUnit ou: People dn: ou=Groups,dc=morot,dc=fr objectClass: top objectClass: organizationalUnit ou: Groups On ajoute une première entrée [...]
Lire la suite
Vus : 2495
Publié par Morot : 24
Powered by BilboPlanet