LINUX:Pacemaker - Configuration du service WEB


retour aux quatre serveurs WEB en Failover, Fsyncd et ISCSI


But

Maintenant nous allons passer à la configuration du service Web sur les quatre machines du cluster. Cette configuration sera identique sur les quatre machines du cluster: "sv1.home.dom", "sv2.home.dom", "sv3.home.dom" et "sv4.home.dom" Nous en présenterons sur une machine; il suffira de la recopier sur les autres.


PHP

Pour nos essais pratiques, nous avons besoin de PHP, langage largement utilisé. On installe le langage de script PHP:

dnf install php


Service Web - Apache

Configuration centrale

Dans cette configuration, nous n'activerons pas le cryptage SSL par soucis de simplification.

Le fichier de configuration principal est "/etc/httpd/conf/httpd.conf". Nous n'y changerons que peu d'options.

En premier, nous désactivons toutes les sections et options qui font référence au répertoire par défaut: "/var/www".

Par défaut, tous les fichiers complémentaires pour les sites et applications se retrouvent dans le répertoire "/etc/httpd/conf.d".

Nous avons l'habitude de créer un répertoire latéral où on met ce qui nous est nécessaire, adaptés à nos besoins et en évitant ainsi les configurations inutiles.

Nous nommons ce répertoire "/etc/httpd/conf.d.commun" avec les droits adaptés. Nous n'y mettrons que les déclaratives globales; ici nous n'y mettrons que celle de PHP; pour cela, on recopie le fichier "/etc/httpd/conf.d/php.conf" dans le répertoire "/etc/httpd/conf.d.commun".


Dans le fichier "/etc/httpd/conf/httpd.conf", il faut adapter cette inclusion en conséquence. En fin de fichier, la ligne:


IncludeOptional conf.d/*.conf

devient:


IncludeOptional conf.d.commun/*.conf


VirtualHost

De plus nous devons créer toute une série de "Virtual Hosts". Nous allons les déclarer dans un nouveau fichier que nous nommerons "/et/httpd/conf/httpd-site.conf".

Voici son contenu:


<VirtualHost *:80>
 IncludeOptional conf.d.local/*.conf
</VirtualHost>
 
<VirtualHost *:80>
 ServerName cluster5.home.dom
 IncludeOptional conf.d.5/*.conf
</VirtualHost>
 
<VirtualHost *:80>
 ServerName cluster6.home.dom
 IncludeOptional conf.d.6/*.conf
</VirtualHost>
 
<VirtualHost *:80>
 ServerName cluster7.home.dom
 IncludeOptional conf.d.7/*.conf
</VirtualHost>
 
<VirtualHost *:80>
 ServerName cluster8.home.dom
 IncludeOptional conf.d.8/*.conf
</VirtualHost>
 
<VirtualHost *:80>
 ServerName 192.168.1.75
 IncludeOptional conf.d.5/*.conf
</VirtualHost>
 
<VirtualHost *:80>
 ServerName 192.168.1.76
 IncludeOptional conf.d.6/*.conf
</VirtualHost>
 
<VirtualHost *:80>
 ServerName 192.168.1.77
 IncludeOptional conf.d.7/*.conf
</VirtualHost>
 
<VirtualHost *:80>
 ServerName 192.168.1.78
 IncludeOptional conf.d.8/*.conf
</VirtualHost>

Le premier bloc est celui par défaut; ce bloc par défaut a pour but de rediriger sous lui, toutes les requêtes de clients non dirigées vers un domaine non déclaré: "sv1.home.dom", "sv2.home.dom", "sv3.home.dom", "sv4.home.dom", "192.168.1.71", "192.168.1.72", "192.168.1.73" et "192.168.1.74"

Les quatre blocs suivants de "VirtualHost" déclarent les domaines selon leur nom: "cluster5.home.dom", "cluster6.home.dom", "cluster7.home.dom" et "cluster8.home.dom"

Les quatre derniers blocs de "VirtualHost" déclarent les domaines selon leur adresse IP: "192.168.1.75", "192.168.1.76", "192.168.1.77" et "192.168.1.78"


Chacun de ces domaines possède son propre répertoire contenant les déclaratives de leurs propres sites.

  • Le répertoire "/etc/httpd/conf.d.local" contiendra ceux pour les domaines non déclarés, le premier bloc. Soit il n'a pas de site soit ces sites de ces domaines sont strictement protégés spécialement de l'extérieur.
  • Le répertoire "/etc/httpd/conf.d.5" contiendra les déclaratives des sites de "cluster5.home.dom" et "192.168.1.75"
  • Le répertoire "/etc/httpd/conf.d.6" contiendra les déclaratives des sites de "cluster5.home.dom" et "192.168.1.76"
  • Le répertoire "/etc/httpd/conf.d.7" contiendra les déclaratives des sites de "cluster5.home.dom" et "192.168.1.77"
  • Le répertoire "/etc/httpd/conf.d.8" contiendra les déclaratives des sites de "cluster5.home.dom" et "192.168.1.78"


Ces "VirtualHost" entrent en action selon l'état du cluster. Par exemple, dans l'état complet d'activation, dans la configuration de nos quatre machines du cluster, la machine "sv1.home.dom" pourra accepter les requêtes pour: "sv1.home.dom", "192.168.1.71", "cluster5.home.dom" et "192.168.1.75"


Pour que ce fichier entre en action, on l'ajoute à la fin du fichier "/etc/httpd/conf/httpd.conf":


IncludeOptional conf/httpd-site.conf


Répertoires, déclaratives et scripts de base des domaines

Nous allons créer une arborescence de répertoires qui vont accueillir chaque site de base de chaque domaine par "VirtualHost".

Nous créons le répertoire "/web" avec les droits pour l'utilisateur Apache:

mkdir /web
chown -R apache:apache /web

En dessous, nous créons les sous-répertoires avec les droits associés:

  • "local" pour le "VirtualHost" par défaut; son contenu sera déclaré dans le fichier "/etc/httpd/conf.d.local/root.conf" dont voici le contenu:

DocumentRoot "/web/local"
 
<Directory "/web/local">
 <IfModule mod_authz_core.c>
  Require all denied
  Require ip 192.168.1
 </IfModule>
</Directory>

Ce répertoire "/web/local" contient le fichier "index.php" dont voici le contenu:


<!DOCTYPE HTML >
<html>
 <body>
  Domaine Locale
  <br>
  <?php
   $host=gethostname();
   printf("Nom du serveur: %s", $host);
  ?>
  <br>
 </body>
</html>

Si on fait la requête:

http://sv2.home.dom/

ou

http://192.168.1.72/

L'appel de ce script affichera le domaine, ici "Domaine Locale" et le nom de la machine réelle hôte "sv2.home.dom".

  • "cluster5" pour le "VirtualHost" du domaine "cluster5.home.dom" ou "192.168.1.75"; son contenu sera déclaré dans le fichier "/etc/httpd/conf.d.5/root.conf" dont voici le contenu:

DocumentRoot "/web/cluster5"
 
<Directory "/web/cluster5">
 <IfModule mod_authz_core.c>
  Require all granted
 </IfModule>
</Directory>

Ce répertoire "/web/cluster5" contient le fichier "index.php" dont voici le contenu:


<!DOCTYPE HTML >
<html>
 <body>
  Domaine Cluster5
  <br>
  <?php
   $host=gethostname();
   printf("Nom du serveur: %s", $host);
  ?>
  <br>
 </body>
</html>

Si on fait la requête:

http://cluster5.home.dom/

ou

http://192.168.1.75/

L'appel de ce script affichera le domaine, ici "Domaine Cluster5" et le nom de la machine réelle hôte, par exemple "sv1.home.dom".

  • Pour le sous-répertoire "cluster6", on effectue la même configuration que pour le sous-répertoire "cluster5" mais on y remplace partout le chiffre "5" par "6".
  • Pour le sous-répertoire "cluster7", on effectue la même configuration que pour le sous-répertoire "cluster5" mais on y remplace partout le chiffre "5" par "7".
  • Pour le sous-répertoire "cluster8", on effectue la même configuration que pour le sous-répertoire "cluster5" mais on y remplace partout le chiffre "5" par "8".


Touche finale

Pour finir, ne pas oublier de donner les bons droits à tous ces répertoires et fichiers. Enfin il faut recopier ou refaire toute cette configuration sur les autres machines du cluster.





retour aux quatre serveurs WEB en Failover, Fsyncd et ISCSI