Haute Disponibilité. A- Installation et Configuration du HeartBeat

Documents pareils
TARDITI Richard Mise en place d une Haute Disponibilité

Synchronisation Mysql (Replication)

Haute disponibilité d'un service Web dynamique

GOUTEYRON ALEXIS. SIO2 N candidat: UEpreuve E4. USituation professionnelle 2. serveurs de fichiers. Uen haute disponibilité

Architectures haute disponibilité avec MySQL. Olivier Olivier DASINI DASINI - -

MySQL - Réplication. Fichiers de relais et de statut de la réplication. Mise en place de la réplication

Solution Haute Disponibilité pour Linux

Agenda. Bienvenue. Agenda

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

La replication dans PostgreSQL

INTRODUCTION. Mysql-server est un serveur de bases de données. Cest un logiciel libre.

La haute disponibilité dans la vraie vie

Redondance de service

Bind, le serveur de noms sous Linux

- FICHE DE PROCEDURE - Configurer un serveur DNS avec Bind9 sur Debian

TP DNS Utilisation de BIND sous LINUX

Configuration matériel. Tâche 2 : Installation proprement dite de l application sur un serveur de test virtualisé sous VmWare Workstation.

Haute-disponibilité et bases de données

Haute disponibilité avec PostgreSQL

FORMATION. Linux-HA et les systèmes de Cluster

MYSQLDUMP & ZRM COMMUNITY

La Haute disponibilité des modules EOLE

BIND : installer un serveur DNS

Notes de cours : bases de données distribuées et repliquées

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

SQUID Configuration et administration d un proxy

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Mise en place d un serveur DNS sous linux (Debian 6)

Simple Database Monitoring - SDBM Guide de l'usager

Domain Name Service (DNS)

Mysql. Les requêtes préparées Prepared statements

Cloud Computing Cluster WebDAV Haute Disponiblité

titre : CENTOS_BIND_install&config Système : CentOS 5.7 Technologie : Bind 9.3 Auteur : Charles-Alban BENEZECH

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Cours 6. Sécurisation d un SGBD. DBA - M1ASR - Université Evry 1

Installation du SLIS 4.1

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Réplication des données

Configuration de Microsoft Internet Explorer pour l'installation des fichiers.cab AppliDis

Domain Name System. F. Nolot

Oracle 11g - Dataguard

Introduction au DNS. Les noms de domaine s'écrivent de la gauche vers la droite, en remontant vers la racine et sont séparés par un "." (point).

FORMATION PostgreSQL Réplication / Haute Disponibilité

Guide de déploiement

Année Universitaire ième année IMAC Mardi 6 janvier Cloud computing Travaux Pratiques

Sommaire. La haute-disponibilité. L'offre OpenSource. Les systèmes tiers. MySQL

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4

Cours admin 200x serveur : DNS et Netbios

Cours 8 Not Only SQL

Service Déposant: Procédure d installation. Page 1. Service déposant. Procédure d installation Version 2.3

TP DHCP et DNS. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

B1-4 Administration de réseaux

Ce TP consiste à installer, configurer et tester un serveur DNS sous Linux. Serveur open source : bind9 Distribution : Mandriva

Architecture de la plateforme SBC

Cluster High Availability. Holger Hennig, HA-Cluster Specialist

Symantec Backup Exec Remote Media Agent for Linux Servers

Installation d un groupe de disponibilité avec SQL Server 2012 AlwaysOn (CTP3) qsjdlkqjs

CS REMOTE CARE - WEBDAV

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

WGW PBX. Guide de démarrage rapide

DNS. Olivier Aubert 1/27

et Groupe Eyrolles, 2006, ISBN :

FileMaker Server 13. Guide de démarrage

La continuité de service

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Mise en place d un cluster. De basculement. Et DHCP Failover. Installation. Préparation. Vérification

Artica. La déduplication. Révision Du 08 Février 2011 version

Procédure d Installation et de Migration. Version du document V1.00

Addenda du Guide de l administrateur

TP Service HTTP Serveur Apache Linux Debian

Le cluster à basculement

AD FS avec Office 365 Guide d'installation e tape par e tape

Retour d expérience sur la mise en place d une solution de répartition de charge entièrement libre.

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

REPARTITION DE CHARGE LINUX

Fully Automated Nagios

Olivier Mondet

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Virtualisation de Windows dans Ubuntu Linux

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

LOSLIER Mathieu. Filière Informatique et Réseau 1 ère année. TP DNS. Responsable : LOHIER Stephane. Chargé de TD : QUIDELLEUR Aurélie

MySQL 5.6. Performances et Tuning. MySQL Performances et Tuning. MySQL 5.6. Vincent TAHON

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

LES ACCES ODBC AVEC LE SYSTEME SAS

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

Guide de l'utilisateur

LIVRE BLANC PRODUIT. Evidian SafeKit. Logiciel de haute disponibilité pour le clustering d application

Windows Server 2012 R2 Failover de serveurs DHCP

Tutoriel compte-rendu Mission 1

LOAD-BALANCING AVEC LINUX VIRTUAL SERVER

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Transcription:

Haute Disponibilité A- Installation et Configuration du HeartBeat 1- De nombreuses techniques sont utilisées pour améliorer la disponibilité : -> la redondance des matériels et la mise en cluster ; -> la sécurisation des données : RAID, snapshots, Oracle Data Guard (en), BCV (Business Copy Volume), SRDF (Symmetrix Remote Data Facility), DRBD ; -> la possibilité de reconfigurer le serveur «à chaud» (c est-à-dire lorsque celui-ci fonctionne) ; -> mode dégradé ou un mode panique ; plan de secours ; et sécurisation des sauvegardes : externalisation, centralisation sur site tiers. # Configuration des deux fichiers principaux avec les droits nécessaires : nano /etc/heartbeat/ha.cf logfile /var/log/heartbeat.log logfacility local7 udpport 694 node 172.16.55.50 node 172.16.55.70 # On défini la périodicité de controle des noeuds entre eux (en seconde) keepalive 2 # Au bout de combien de seconde un noeud sera considéré comme "mort" deadtime 15 ucast eth0 172.16.55.50 -> celui du voisin # Rebascule-t-on automatiquement sur le primaire si celui-ci redevient vivant? oui* auto_failback off

crm yes On doit emttre dans /etc/resolv.conf nameserver 172.16.55.10 ( serveur DNS ) et 172.16.55.10 et dans /etc/hosts on met intranet1 et 2 # Configuration de authkeys Un «node» est un noeud. Autrement dit un serveur membre du cluster. L auto_failback permet de rebasculer directement sur le serveur maitre quand il redevient opérationnel après qu il ai été déclaré comme «mort» (quand il est configuré à «yes «. Nous passons maintenant au fichier «/etc/heartbeat/authkeys «, ce fichier va définir la clé qui permettra d authentifier un minimum les serveurs membres du cluster entre eux : nano /etc/heartbeat/authkeys Voici un contenu possible : auth 1 1 sha1 MaClefSecrete Il faut savoir que l on peut utiliser trois modes de sécurisation dans ce fichier : sha1 md5 crc Par sécurité, on sécurise ce fichier en lui mettant des droits plus restreints : chmod 600 /etc/heartbeat/authkeys -> desactiver stonith -> desactiver quorum # crm configure property stonith-enabled=false # crm configure property no-quorum-policy="ignore"

# Configuration du DNS L adresse IP du DNS se trouve dans le fichier /etc/resolv.conf (DNS par défaut) Configuration de la zone inverse :

J entre les adresses IP correct pour test1 et test2 ainsi que les serveurs (ip non virtuelle), puis de meme pour la zone inverse

Puis je redémarre le service et je teste le DNS Puis j ai configuré test1.conf et test2.conf situé dans /etc/apache2/sites-available, en ajoutant l adresse Ip ou le FQDN (test1.sisr :80)

J active test1.conf Puis je desactive le service SSL afin qu il n entrave pas le fonctionnement de peacemaker, suite à quoi je redémarre le service web apache2 # Configuration du Failover IP du Cluster Heartbeat est maintenant configuré sur les deux serveurs Web. Cependant, le Failover IP doit également être configuré pour rendre le service Web hautement disponible sur une adresse IP virtuelle.

Pour cet article, le service Web sera accessible à l adresse IP virtuelle 192.168.1.202/24, correspondant au nom FQDN www.domain.lan. Voici donc la commande à utiliser pour configurer cette adresse IP virtuelle sur le Cluster : root@web1:~# crm configure primitive IPFailover ocf:heartbeat:ipaddr2 params ip="192.168.1.202" cidr_netmask="255.255.255.0" nic="eth0" op monitor interval="10s" timeout="20s" op start timeout="30s" op stop timeout="40s" La commande ci-dessus ne devra être saisie que sur l un des deux serveurs. Il sera ensuite possible de vérifier le fonctionnement du Failover IP à l'aide de la commande "crm status" : root@web1:~# crm status Cette commande retournera notamment l'état du Failover. Dans le cas présent, le Failover IP est lancé sur le serveur web1.domain.lan : On pourra également vérifier la présence de l'adresse IP virtuelle sur le serveur web1 à l'aide de la commande "ip addr show" : Depuis un client situé dans le même réseau, il sera possible d'accéder à cette adresse IP depuis un navigateur Web :

# Configuration de la ressource HTTP pour le Cluster A ce stade, le Cluster est pratiquement fonctionnel, il ne reste plus que la ressource HTTP à configurer. Actuellement, le Failover IP fonctionne mais le service Web Apache2 fonctionne simultanément sur les deux serveurs Web. Ainsi, il va être nécessaire de lier le fonctionnement du service Web au Failover Pour cela, il va d'abord être nécessaire d'arrêter le service Web Apache2 sur chacun des serveurs root@web1:~# service apache2 stop root@web2:~# service apache2 stop Ensuite, le service Web va devoir être supprimé de la liste des services du démarrage. Pour cela, il sera nécessaire d'utiliser la commande insserv sur chaque serveur Web comme montré ci-dessous : root@web1:~# insserv -r -v apache2 Le résultat devra alors être le suivant sur chaque serveur :

Il faudra ensuite créer une nouvelle ressource pour le Cluster. Elle sera nommée "serviceweb" et utilisera un script lsb : root@web1:~# crm configure primitive serviceweb lsb:apache2 op monitor interval= "60s" op start interval="0" timeout="60s" op stop interval="0" timeout= "60s" Test : on fait crm_mon sur le maître et on voit le IP virtuelle Maintenant que la ressource "serviceweb" est créée, elle va pouvoir être intégrée au Cluster. Pour cela, il va être nécessaire d'éditer la configuration du Cluster à l'aide de la commande suivante : root@web1:~# crm configure La commande group permettra de synchroniser le démarrage du service Web Apache2 à la présence de l'adresse IP virtuelle du Failover sur l'un des serveurs. crm(live)configure# group web IPFailover serviceweb meta migration-threshold="5" Il faudra alors appliquer les modifications puis quitter l'outil de configuration du Cluster crm(live)configure# commit crm(live)configure# quit Le Cluster Actif/Passif de serveurs Web est maintenant configuré, il ne reste plus qu'à tester ses fonctionnalités pour s'assurer de la Haute Disponibilité du service Web

Validation des fonctionnalités du Cluster Maintenant que le Cluster est mis en place, il va bien entendu être nécessaire de le tester Préparation de l'environnement pour les tests Pour réaliser les tests décrits dans cette partie, il va être nécessaire de modifier la page Web par défaut sur chaque serveur Web afin de les distinguer depuis un navigateur Web. Sur chaque serveur, il va donc être nécessaire d'éditer le fichier /var/www/index.html. Par exemple, pour le serveur web1.domain.lan, nous allons ajouter l'élément suivant : On fera ensuite la même chose sur le serveur web2.domain.lan : Comme nous l'avons vu précédemment, l'utilisation de la commande "ip addr show" permet de connaître le serveur sur lequel se trouve l'adresse IP virtuelle. Dans le cas présent, l'adresse IP virtuelle se trouve sur web1.domain.lan : A partir d'un navigateur Web depuis un client situé dans le même réseau IP que les serveurs, si le client se rend à l'adresse http://192.168.1.202 / ou http://www.domain.lan/, l'écran suivant apparaîtra :

La présence du message "Serveur web1.domain.lan" permet de vérifier que le service Web est bien lancé sur le premier serveur du Cluster possédant l'ip virtuelle. Ainsi, on voit que le Failover IP est bien synchronisé avec le service Web Apache2. Les autres tests vont maintenant pouvoir être effectués Vérification du basculement du service Web Pour vérifier que la ressource HTTP peut passer d'un serveur Web à l'autre, il sera possible d'utiliser la commande suivante sur le serveur possédant actuelle l'adresse IP virtuelle (dans l'exemple présenté ici, web1.domain.lan) : root@web1:~# crm node standby Au bout de quelques instants, le serveur web1 devrait perdre son adresse IP virtuelle au profit du serveur web2.domain.lan :

L'adresse IP virtuelle est donc maintenant présente sur le second serveur Web En actualisant la page sur votre navigateur Web, on pourra constater le changement de serveur : Une fois que ce test est terminé et concluant, il ne reste plus qu'à vérifier la continuité de service en cas d'arrêt de l'un des noeuds du Cluster Continuité de service en cas d'arrêt d'un noeud Pour vérifier la continuité de service Web, il va être nécessaire d'arrêter le serveur Web sur lequel le service Apache2 fonctionne actuellement. Dans le cas présent, il s'agit du serveur web2.domain.lan root@web2:~# halt Au bout de quelques instants, le serveur sera arrêté. Vous pourrez alors constater que l'adresse IP virtuelle aura automatiquement été basculé sur le second noeud du Cluster : Le service Web devra également être toujours accessible, mais il aura lui aussi basculé sur le second serveur :

Conclusion Le Cluster Actif/Passif de serveurs Web est maintenant fonctionnel. Les sites qui seront stockés sur ces serveurs bénéficient donc d'une Haute Disponibilité. Il peut être intéressant, voire même indispensable de sécuriser les flux HTTP avec la mise en place d'une Autorité de Certification et la mise en place d'un certificat SSL/TLS. Ce sujet sera traité dans mon prochain article. # La réplication des données avec MySQL : Sur le serveur maître, créer l'utilisateur MySQL ayant des droits suffisants : mysql> GRANT REPLICATION SLAVE ON *.* TO replicateur@'%' IDENTIFIED BY 'mdpreplicateur' ; S'assurer que la base de données est identique sur les deux serveurs (en cas de doute, faire une sauvegarde sur l'un et restaurer sur l'autre) Mise en place des bases de données à répliquer qui doivent être identiques sur tous les serveurs avant de commencer la réplication : on va devoir s assurer qu aucune nouvelle donnée ne soit enregistrée pendant le laps de temps nécessaire à la configuration. À ce moment, il s agit de bloquer l écriture sur la (les) base(s) que l on souhaite répliquer de manière à s assurer qu aucune nouvelle donnée ne soit

enregistrée : on doit pour cela saisir la commande suivante sur le serveur «maître» «FLUSH TABLES WITH READ LOCK;» : cette dernière va alors fermer toutes les tables ouvertes, et verrouiller en lecture toutes les tables et bases. À ce moment-là, les requêtes qui voudront faire une écriture seront mises en file d'attente, jusqu'au déblocage par la commande «UNLOCK TABLES;». Bloquer l écriture sur les bases du serveur maître de manière à s assurer qu aucune nouvelle donnée ne soit enregistrée : mysql>flush TABLES WITH READ LOCK; Configuration de la réplication via le fichier /etc/mysql/my.cnf sur chaque serveur : la réplication de bases de données implique une configuration différente sur chaque serveur. Cette configuration dépend de leur rôle et nécessite (entre autres) un identifiant unique dans la chaîne de réplication. Quelques directives utilisées dans /etc/mysql/my.cnf sur des versions de MySQL inférieures à 5.5 ne fonctionnent plus (et empêchent MySQL de démarrer avec une erreur dans les logs «unknown variable»), même si ces directives sont encore présentes dans le fichier exemple! Aussi, il ne faut pas se fier complètement aux configurations proposées sur Internet et TOUJOURS exploiter les logs. Fichier de configuration : /etc/mysql/my.cnf Pour simplifier le processus (et pour faciliter l'ajout de nouveaux esclaves à un maître), les versions récentes de MySQL (5.x) permettent (et oblige parfois, à partir de la 5.5) d'effectuer des opérations «à chaud» directement dans la console SQL, à l'aide de la commande SQL CHANGE MASTER TO. Aussi, les fichiers de configuration déterminent uniquement un statut «maître» ou «esclave». Tous les paramètres permettant d'établir un lien entre le maître et l'esclave (comme l'adresse IP du maître, le nom de l'utilisateur et le mot de passe, etc) seront réalisés avec la commande SQL pré-citée.

Sur le serveur «maître» : [mysqld] # bind-address = 127.0.0.1. log-error =/var/log/mysql.errs log_bin = /var/log/mysql/mysql-bin.log max_binlog_size = 100M b inlog_do_db = databasename Sur le serveur «esclave» : [mysqld] s erver-id = 104 #bind-address = 127.0.0.1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M replicate-do-db = databasename Remarque : la gestion des logs binaires sur l'esclave et notamment l'option log-slave-updates (comme le fait de commenter la variable «bind-address») n'est utile que lors d'une réplication circulaire ou d'une réplication multi maître. On peut maintenant redémarrer MySQL sur l'esclave. N'hésitez pas à lire en parallèle le fichier «/var/log/mysql.err» notamment si MySQL ne se lance plus

Configurer le serveur «maître» : fichier /etc/mysql/my.cnf [mysqld] #bind-address = 127.0.0.1 log-error =/var/log/mysql.err server-id =1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M binlog_do_db = gsb_valide Configurer le serveur «esclave» : fichier /etc/mysql/my.cnf (au minimum) [mysqld] #bind-address = 127.0.0.1 log-error =/var/log/mysql.err server-id =2 log_bin = /var/log/mysql/mysql-bin.log log-salve-updates expire_logs_days = 10 max_binlog_size = 100M master-retry-count = 20 replicate-do-db = gsb_valide Redémarrer MySQL pour que les modifications soient prises en compte /etc/init.d/ mysql restart Lorsque la configuration est terminée, et si on ne l'a pas encore fait, il faut : s'assurer que les bases de données soient bien synchronisées, dans le cas contraire il faut le faire bloquer au préalable l'écriture sur le maître (si ce n'est déjà fait) ; récupérer des informations sur le maître (voir ci-après) ; indiquer à l'esclave via la commande SQL CHANGE MASTER TO l'ensemble des opérations à réaliser (voir ci-après) ; permettre l'écriture sur le maître ;

lancer l'esclave. Étapes après modifications des fichiers de configuration Sur le serveur maître, il est nécessaire, après s'être assuré que les deux bases de données sont identiques (voir comment faire dans la partie «dépannage» si vous avez un doute) : De bloquer l'écriture : mysql> FLUSH TABLES WITH READ LOCK; Query OK, 0 rows affected (0.09 sec) De repérer le log binaire et la position du jeu de commandes dans le log : mysql> show master status; Du résultat de cette requête, ce sont les champs File et Position qu'il faut noter. C'est à partir de cette position que tout ce qui sera écrit sur le maître sera répliqué sur l'esclave. Un fois que les données ont été répliquées, l'esclave garde la trace du point où il en était rendu (une nouvelle Position, voire un nouveau File ). Le serveur maître n'a pas de notions du nombre d'esclaves qui se connectent, ou qui sont à jour à un moment donné. Il faut donc ensuite indiquer au serveur esclave : à partir de quel serveur maître il doit répliquer ses bases de données (on utilisera l'adresse IP du serveur maître), en lisant quel fichier journal de requêtes (dans l'exemple, mysql-bin.00001 ), à partir de quelle position dans ce fichier journal (dans l'exemple, 3921 ), et enfin, avec quel utilisateur ( il s'agit du compte utilisateur créé précédemment Voir «Étapes avant modification des fichiers de configuration» ). Tout ceci est effectué en une seule ligne avec la syntaxe spéciale CHANGE MASTER TO.

Le processus esclave, s'il existe (ce que l'on peut voir avec la commande «show slave status ;», doit être arrêté auparavant. Pour ce faire, dans la console SQL du serveur esclave, exécutez : STOP SLAVE ;. Ce processus doit être redémarré ensuite. Il est temps maintenant de déverrouiller les bases de données sur le serveur maître : mysql> UNLOCK TABLES; Pour connaître le statut de l'esclave Sur l'esclave Bloquer de nouveau l écriture sur les bases du serveur maître. Sur le serveur maître, repérer le log binaire et la position du jeu de commandes dans le log (avec show master status) Sur le serveur esclave, déclarer le serveur maître : mysql> change master to -> master_host='10.22.100.212', -> master_user='replicateur', -> master_password='mdpreplicateur', -> master_log_file='mysql-bin.000001', -> master_log_pos=3921; mysql> start slave ; Sur le serveur «maître», débloquer l'écriture : mysql> unlock tables;