vaufevre.files.wordpress.com  · web viewservices : mysql server 5.5, mysql client 5.5, rsync 3.1....

18
Solutions informatiques 7 Projet LowHifi Techniciens : Paul-Emile MELLET Vincent AUFEVRE Remy BOUCOUX Anaëlle SCHEMID 1

Upload: others

Post on 24-Sep-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Solutions informatiques 7

Projet LowHifi

Techniciens :

Paul-Emile MELLET Vincent AUFEVRE Remy BOUCOUX Anaëlle SCHEMID

Année 2016-2017

1

Page 2: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Documentation technique

Informations sur les serveurs :

Routeur virtuel - OS : Windows Server 2008 R2.- Rôle : « Services de stratégie et d’accès réseau ».- NAT : actif.

Serveurs Web - OS : Debian 8.5 Jessie.- Services : Apache 2.4, PHP 7, SSH, rsync 3.1, phpMyAdmin 4.6.

Cluster HTTP (Haute disponibilité) - OS : Debian 8.5 Jessie.- Service : HAProxy 1.5.

Serveur MySQL - OS : Debian 8.5 Jessie.- Services : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1.

Cluster MySQL (Equilibrage de charges) - OS : Debian 8.5 Jessie.- Services : HAProxy 1.5, MySQL Client 5.5, rsync 3.1.

2

Page 3: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Configuration du routeur virtuel :

Ajouter le rôle « Services de stratégie et d’accès réseau » d’activer le routage réseau.

Activer le routage ainsi que le service NAT.

3

Page 4: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Configuration des serveurs Web :

Ajout de source de paquets :

echo "deb http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/dotdeb.listwget -O- https://www.dotdeb.org/dotdeb.gpg | apt-key add -

Mise à jour des composants.

apt-get update && apt-get dist-upgrade

Installation du service « Apache ».

apt-get install apache2

Vérifier que la version d’apache est en 2.4 ou supérieur.

apache2 -v

Installation de « PHP 7 » et dépendances.

apt-get install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json php7.0-gd php7.0-mcrypt php7.0-msgpack php7.0-memcached php7.0-intl php7.0-sqlite3 php7.0-gmp php7.0-geoip php7.0-mbstring php7.0-xml php7.0-zip

Installer le serveur SSH afin de sécuriser les échanges de fichiers entre les serveurs web et d’activer le protocole SFTP pour le dépôt des fichiers web depuis Internet.

apt-get install openssh-server

Sécuriser l’accès SSH en ajoutant ces lignes à la suite dans le fichier de configuration.

- nano /etc/ssh/sshd_config

Subsystem sftp internal-sftp

# Permit Local RootMatch Address 192.168.0.2,192.168.0.3 PermitRootLogin yes

# Custom Chroot DirectoryMatch User lowhifi ChrootDirectory %h AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp

4

Page 5: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Créer un utilisateur « lowhifi » pour l’accès distant par SFTP.

useradd -m lowhifipasswd lowhifiusermod -g www-data lowhifiusermod -G lowhifi lowhifiusermod lowhifi –d /var/www/public/lowhifi

Installer et configurer « rsync » pour la synchronisation des fichiers web sur le serveur web secondaire.

apt-get install rsync

Cette manipulation est à faire sur le serveur secondaire.

ssh-keygen -t rsa -b 2048ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

Tester la connexion automatique.

ssh [email protected]

Planification d’une synchronisation des fichiers web du serveur web principal vers le secondaire.

crontab -e

Ajouter ce qui suit à la suite.

# rsync# Synchronize Web and Backup files*/5 * * * * rsync -avz --ignore-existing --recursive --delete [email protected]:/var/www/public/ /var/www/public

Installation de phpMyAdmin sur un ou plusieurs serveurs web.

cd /var/wwwwget https://files.phpmyadmin.net/phpMyAdmin/4.6.5.1/phpMyAdmin-4.6.5.1-all-languages.tar.gztar -zxvf phpMyAdmin-4.6.5.1-all-languages.tar.gz mv phpMyAdmin-4.6.5.1-all-languages.tar.gz phpmyadmin

Activer le fichier de configuration de phpMyAdmin.

cd phpMyAdmin mv config.sample.inc.php config.inc.php

5

Page 6: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Configurer phpMyAdmin.

- nano config.inc.php

Editer les lignes suivantes :

$cfg['blowfish_secret'] = 'xV4iXb47tkRv7x9kjh1Zx32b7iG2of4q';$cfg['Servers'][$i]['host'] = '192.168.0.50';

Création des « VirtualHost » personnalisées.

cd /etc/apache2/sites-availablecp 000-default.conf lowhifi.confcp 000-default.conf phpmyadmin.conf

Désactiver le « VirtualHost » par défaut.

a2dissite 000-default.conf

Configurer le chemin du site web.

- nano lowhifi.conf

Editer la ligne suivante :

DocumentRoot /var/www/public/lowhifi

Configurer le port et le chemin de phpMyAdmin.

- nano phpmyadmin.conf

Editer les lignes suivantes :

# HTTP Custom PortListen *:8080<VirtualHost *:8080>DocumentRoot /var/www/phpmyadmin

Activer les « VirtualHost » personnalisées.

a2ensite lowhifi.confa2ensite phpmyadmin.conf

- service apache2 reload

6

Page 7: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Créer les règles NAT afin de rediriger les ports internes vers Internet.

Même principe pour autoriser phpMyAdmin depuis Internet sur le port « 8336 ».

Création des répertoires.

mkdir –p /var/www/public/lowhifimkdir –p /var/www/public/backups/databases/dailymkdir /var/www/public/backups/databases/monthlymkdir /var/www/public/backups/databases/weeklymkdir –p /var/www/public/backups/websites/dailymkdir /var/www/public/backups/websites/monthlymkdir /var/www/public/backups/websites/weekly

7

Page 8: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

mkdir /var/www/public/backups/others

Appliquer des droits sur les répertoires accessibles avec l’accès SFTP.

cd /var/www/public/chown lowhifi :www-data *chmod 1755 *

Créer des scripts de sauvegarde des fichiers web.

cd /etc/cron.daily

- touch backup.sh

Donner le droit d’exécution au script :

chmod +x backup.sh

- nano backup.sh

Ajouter ce qui suit :

cd /var/www/public/lowhifitar -zcvf /var/www/public/backups/websites/daily/d_lowhifi-[$(date +%d-%m-%Y)].tar.gz *

Même principe pour les tâches « cron.monthly » et « cron.weekly ». Il suffit de faire la même manipulation en se plaçant dans un dossier de tâches et en remplaçant simplement le chemin « daily » par « …/websites/monthly/… » ou « …/websites/weekly/… ».

- service cron restart

8

Page 9: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Mise en place d'un service de haute disponibilité HTTP :

Mise à jour des composants.

apt-get update && apt-get dist-upgrade

Installation du service « haproxy ».

apt-get install haproxy

Vérifier que la version de HAProxy est en 1.5.8 ou supérieur.

haproxy --version

Configurer « HAProxy » pour de la haute disponibilité entre les deux serveurs web.

- nano /etc/haproxy/haproxy.cfg

Ajouter les lignes suivantes :

# High Availabilityfrontend http_front bind *:80 default_backend http_back

backend http_back balance roundrobin server websrv1 192.168.0.1:80 check server websrv2 192.168.0.2:80 check backup

# Web Statisticslisten stats :8794 stats enable stats uri /stats

9

Page 10: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

stats realm Strictly\ Private stats auth admin:admin stats hide-version stats refresh 30s

- service haproxy restart

Les statiques web sont disponibles en local depuis « http://<adresse-du-cluster-web>:8794 ». Une règle de redirection peut être définie dans le routeur avec d’avoir accès à ces statistiques depuis Internet.

Configuration et réplication des serveurs MySQL :

Mise à jour des composants.

apt-get update && apt-get dist-upgrade

Installation du service « haproxy ».

apt-get install mysql-server mysql-client

Vérifier que la version de MySQL est en 1.5.8 ou supérieur.

mysql --version

Configurer MySQL.

- nano /etc/mysql/my.cnf

Sur le serveur MySQL primaire, éditer les lignes suivantes :

server-id = 1log_bin = /var/log/mysql/mysql-bin.logbinlog_do_db = lowhifi#bind-address = 127.0.0.1

Sur le serveur MySQL secondaire, éditer les lignes suivantes :

server-id = 2log_bin = /var/log/mysql/mysql-bin.logbinlog_do_db = lowhifi#bind-address = 127.0.0.1

- service mysql restart

10

Page 11: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Créer la même base de données sur les deux serveurs MySQL.

mysql –u root –pcreate database lowhifi ;

Redémarrer les deux serveurs MySQL.

shutdown –r now

Configurer la réplication des serveurs MySQL.

create user 'replicator'@'%' identified by 'replicator';grant replication slave on *.* to 'replicator'@'%';flush privileges;

Sur le serveur MySQL primaire, exécuter cette commande.

show master status;

Sur le serveur MySQL secondaire, exécuter les commandes suivantes.

mysql –u root –pcreate user 'replicator'@'%' identified by 'replicator';grant replication slave on *.* to 'replicator'@'%';flush privileges ;slave stop; CHANGE MASTER TO MASTER_HOST = '192.168.0.3', MASTER_USER = 'replicator', MASTER_PASSWORD = 'replicator', MASTER_LOG_FILE = 'mysql-bin.000017', MASTER_LOG_POS = 107; slave start;

Sur ce même serveur, exécuter cette commande.

show master status;

11

Page 12: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Sur le serveur MySQL primaire, exécuter les commandes suivantes.

slave stop; CHANGE MASTER TO MASTER_HOST = '192.168.0.4', MASTER_USER = 'replicator', MASTER_PASSWORD = 'replicator', MASTER_LOG_FILE = 'mysql-bin.000017', MASTER_LOG_POS = 107; slave start;

Manipulation à faire sur l’un des deux serveurs MySQL.

Créer un utilisateur « lowhifi ».

useradd –m lowhifi

Créer les répertoires de sauvegardes.

mkdir –p /home/lowhifi/databases/dailymkdir /home/lowhifi/databases/monthlymkdir /home/lowhifi/databases/weekly

Créer un utilisateur MySQL avec tous les privilèges pour l’accès depuis phpMyAdmin.

mysql –u root -pGRANT ALL PRIVILEGES ON *.* TO 'lowhifi'@'%' IDENTIFIED BY PASSWORD 'lowhifi';

Créer un utilisateur MySQL local pour les sauvegardes MySQL.

mysql –u root -pGRANT SELECT, LOCK TABLES ON `lowhifi`.* TO 'dump'@'localhost' IDENTIFIED BY PASSWORD 'dump';

Créer des scripts de sauvegarde de la base de données.

cd /etc/cron.daily

- touch mysqldump.sh

Donner le droit d’exécution au script :

chmod +x mysqldump.sh

12

Page 13: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

- nano mysqldump.sh

Ajouter ce qui suit :

mysqldump -u dump -pdump webbit | gzip > /home/lowhifi/databases/daily/d_lowhifi-[$(date +%d-%m-%Y)].sql.gz

Même principe pour les tâches « cron.monthly » et « cron.weekly ». Il suffit de faire la même manipulation en se plaçant dans un dossier de tâches et en remplaçant simplement le chemin et nom du fichier « …/daily/d_lowhifi… » par « …/monthly/m_lowhifi… » ou « …/weekly/w_lowhifi… ».

- service cron restart

Installer et configurer « rsync » pour la copie des fichiers de base de données sur le serveur SFTP.

apt-get install rsync

Cette manipulation est à faire sur le serveur secondaire.

ssh-keygen -t rsa -b 2048ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

Tester la connexion automatique.

ssh [email protected]

Planification d’une synchronisation des fichiers web du serveur web principal vers le secondaire.

crontab -e

Ajouter ce qui suit à la suite.

# rsync# Daily task (Every day at 00:00 PM)0 0 * * * rsync -avzhe ssh /home/lowhifi/databases/daily/ [email protected]:/var/www/public/backups/databases/daily# Weekly task (Every Thursday at 00:15 PM)15 0 * * 5 rsync -avzhe ssh /home/lowhifi/databases/weekly/ [email protected]:/var/www/public/backups/databases/weekly# Monthly task (Every 1st Month at 00:30)30 0 1 * * rsync -avzhe ssh /home/lowhifi/databases/monthly/ [email protected]:/var/www/public/backups/databases/monthly

13

Page 14: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

Mise en place d'un cluster MySQL :

Mise à jour des composants.

apt-get update && apt-get dist-upgrade

Installation du service « haproxy » et de « mysql-client »

apt-get install haproxy mysql-client

Vérifier que la version de HAProxy est en 1.5.8 ou supérieur.

haproxy --version

Configurer « HAProxy » pour de la haute disponibilité entre les deux serveurs web.

- nano /etc/haproxy/haproxy.cfg

Commenter les lignes suivantes :

#mode http#option httplog

Ajouter les lignes suivantes :

# MySQL Load Balancinglisten mysql-cluster mode tcp bind *:3306 option mysql-check user haproxy_check balance roundrobin server dbsrv1 192.168.0.3:3306 check

14

Page 15: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

server dbsrv2 192.168.0.4:3306 check

# Statisticslisten stats :3478 mode http stats enable stats uri /stats stats realm Strictly\ Private stats auth admin:admin stats hide-version stats refresh 30s

- service haproxy restartLes statiques web sont disponibles en local depuis « http://<adresse-du-cluster-mysql>:3478 ». Une règle de redirection peut être définies dans le routeur avec d’avoir accès à ces statistiques depuis Internet.

Vérifier le fonctionnement de l’équilibrage de charges.

mysql -h 127.0.0.1 -u lowhifi -p -e "show variables like 'server_id'"

Exécuter cette commande à plusieurs reprises pour voir l’équilibrage de charges.

On peut aussi vérifier l’alternance des serveurs MySQL avec une boucle.

for i in `seq 1 10`domysql -h 127.0.0.1 -u lowhifi –plowhifi -e "show variables like 'server_id'"done

15

Page 16: vaufevre.files.wordpress.com  · Web viewServices : MySQL Server 5.5, MySQL Client 5.5, rsync 3.1. Cluster MySQL (Equilibrage de charges) OS : Debian 8.5 Jessie. Services : HAProxy

16