Visualiser une révision

[Tuto/HowTo] [Debian/Ubuntu] Créer manuellement un Cluster Web

voxdemonix : Infernalis Creatorem (12 septembre 2018 18:36:09)

En cours de rédaction.
======================


W8t and see : [Aggressive Trap Music Mix | Best Trap Mix 2018 - Bass Boosted Mix](https://www.youtube.com/watch?v=DaGxxmaxPPw)


**Difficulté de ce tutoriel :** Bidouilleur confirmé n'ayant pas peur de la ligne de commande.

![Alice upload une musique sur son Nextcloud.](https://www.0rion.netlib.re/forum4/download/file.php?id=1062)


Introduction
============

Un cluster est un ensemble d'ordinateurs physique travaillant pour une tâche commune, augmentant ainsi la puissance de calcul et évitant la fin de service lorsque l'une d'elles tombe en panne.
Le désavantage est un coûts en énergie, en consommation réseau et en ressources machines. Ainsi dans le cas présent, par exemple, syncthing devra vérifier très régulièrement les modifications des fichiers du serveur web, et partager toutes modifications avec les autres membres de la grappe.
Chaque Frontend devra aussi, et de façon régulière, vérifier la présence en ligne de tout les nœuds se qui a aussi un couts.
Ainsi pour un unique utilisateur n'ayant pas besoin d'une forte puissance de calcul ni de Haut Disponibilité, le cluster gaspillera beaucoup plus d'énergie qu'un serveur fonctionnant de manière esseulé.
L'utilisation d'un Cluster n'est requise que si vous avez besoin de Haute Disponibilité (Hight Availability) et/ou de scalabilité.
**Note :** Je part du principe que vous avez déjà un serveur de base de données installé sur une autre machine.
**Note de la rédaction :** L'automatisation sera traitée dans un autre article [[lien_temporaire_en_attendant](https://www.0rion.netlib.re/forum4/viewtopic.php?f=79&t=816&p=1903#p1906)]


Logiciels utilisés : 
-----------

* [PHP](https://fr.wikipedia.org/wiki/PHP)
* [apache2](https://doc.ubuntu-fr.org/apache2) ([serveur web](https://fr.wikipedia.org/wiki/Serveur_web))
* [syncthing](https://fr.wikipedia.org/wiki/Syncthing) (synchronisation fichiers via [F2F](https://fr.wikipedia.org/wiki/F2F))

Installer un Node
=================

Les Nœuds ou Node en anglais d'un cluster web sont des serveurs web recevant des requêtes HTTP(s), exécutant des scripts et émettant des réponses.

1. Installer les pré-requis :
**Note :** ici on installe se qui est généralement pré-requis pour les [CMS](https://fr.wikipedia.org/wiki/Content_management_system), certains paquets pourraient donc vous être inutile 

```
apt-get install -y apache2 php php-gd php-curl php-mysql openssl php-redis libapache2-mod-php php-mbstring php-zip php-dom php-ldap php-apcu libapache2-mod-rpaf php-imagick
```

1. Installez et configurez syncthing en suivant le tuto : [Partager le dossier /var/www/html entre vos différents serveur web apache2 (via syncthing)](https://www.0rion.netlib.re/forum4/viewtopic.php?f=107&t=661&p=1603#p1603)

1. Configurez les permissions de www-data et apache2 

 *  Ajoutez la ligne _umask 0007_ à la fin de _/etc/apache2/envvars_

```
echo "umask 0007" >> /etc/apache2/envvars
```

 *  Ajoutez la ligne _umask 0007_ au début de _/etc/init.d/apache2_ juste après _### END INIT INFO_

```
sudo nano /etc/init.d/apache2
```


 *  Ajoutez la ligne _umask 0007_ à la fin de _/etc/profile_
**Note :** ces changements ne seront pris en compte qu'après redémarrage de la session de chaque utilisateurs (dans le cas de www-data => après reboot)

```
echo "umask 0007" >> /etc/profile
```

1. Placez vos vhsot apache2 dans _/etc/apache2/sites-available/_ et activez les via 

```
a2ensite chacun_de_vos_fichiers.conf
```

1. Redémarrez la machine

```
( systemctl daemon-reload ; reboot )
```

Partager un dossier sur un Stockage Distant (Remote Storage)
============================================================

Coté serveur
------------

1. Si plusieurs utilisateurs systèmes vont utiliser le dossier, adaptez le umask des utilisateurs ssh
 * Éditez _/etc/ssh/sshd_config _

```
sudo nano /etc/ssh/sshd_config
```

 * Cherchez (_CTRL+W_) "_Subsystem sftp /usr/lib/openssh/sftp-server_" et ajoutez -u 007 à la ligne comme suit :

```
Subsystem sftp /usr/lib/openssh/sftp-server -u 007
```

1. Ajoutez umask 0007 dans _/etc/profile_ et dans _/home/userCommunSFTP/.profile_

1. Redémarrez le serveur openssh

```
sudo service sshd restart
```

1.  Si vous (ré-)installez le serveur alors à ce stade sur tout les clients qui utilisent votre serveur, démontez puis remontez le(s) stockage(s) SSHSF.

Coté client
-----------

1. Effectuer un montage SSHFS : [[Tuto/HowTo] Configurer et monter SSHFS sécurisé via utilisateur dédié côté server](https://www.0rion.netlib.re/forum4/viewtopic.php?f=106&t=339&p=847#p847)

1. Une fois monté, accorder les permissions sur le dossier.

```
chmod 2770 -R /media/mon_storage
```

Installer un Frontend
=====================

Les frontends sont chargé de recevoir les requêtes des clients et de les transmettre aux serveurs web (dit Backends) le moins occupé. Ce sont des proxy qui servent de porte d'accès entre "Internet" et votre cluster.

1. Mettez en place HaProxy : [[Tuto/HowTo] [GNU/Linux] Load Balancing - redirection vers plusieurs vhost avec HaProxy](https://www.0rion.netlib.re/forum4/viewtopic.php?f=113&t=684)

1. Insérez chacun de vos Nodes dans votre ou vos sections Backends de HaProxy. Voici un exemple de config ( _/etc/haproxy/haproxy.cfg_ )avec 2 Frontends et un Backend :