Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
technique:architecture_des_services [2017/05/13 21:40] – kyane | technique:architecture_des_services [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ======Architecture des services====== | ||
- | =====Haute disponibilité===== | ||
- | Dans le but d' | ||
- | |||
- | ===== Docker ===== | ||
- | Pour héberger les services, nous utilisons des conteneurs Docker. Cela permet de lancer des services et de les scaler en fonction de nos besoins. Si vous voulez plus d' | ||
- | |||
- | Une chose à prendre en compte est que sur Swarm, les conteneurs sont placés sur un réseau privé (on parle d' | ||
- | |||
- | =====Architecture===== | ||
- | {{: | ||
- | |||
- | Comme je le disais, les services sont donc lancés sur les deux machines virtuelles. Pour rediriger le flux entrant vers le bon conteneur, nous utilisons un reverse proxy orienté micro service et qui est en mesure de fonctionner sous swarm. Traefik, c'est son nom écoute les actions réalisées sur le démon docker. Lorsqu' | ||
- | |||
- | Pour le lancer, on créé le service suivant: | ||
- | < | ||
- | docker service create \ | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | --web | ||
- | </ | ||
- | |||
- | Ensuite, il suffit d' | ||
- | < | ||
- | --label traefik.port=80 | ||
- | --label traefik.frontend.rule=Host: | ||
- | </ | ||
- | |||
- | Traefik.port correspond au port d' | ||
- | Traefik.frontend.rule correspond au nom de domaine du service exposé. Il faut au préalable avoir créé les entrées DNS pour que cela fonctionne.\\ | ||
- | Traefik va donc être capable de configurer à la volée les différents services sans que l'on ait à écrire le moindre fichier de configuration. Il y a également une interface de configuration que l'on peut atteindre via le port 8080 et qui montre l' | ||
- | Traefik peut aussi générer automatiquement une configuration letsencrypt. Pour cela, il faut utiliser le fichier de configuration suivant: | ||
- | < | ||
- | defaultEntryPoints = [" | ||
- | |||
- | [entryPoints] | ||
- | | ||
- | | ||
- | | ||
- | entryPoint = " | ||
- | | ||
- | | ||
- | | ||
- | |||
- | [acme] | ||
- | email = " | ||
- | storageFile = "/ | ||
- | entryPoint = " | ||
- | onDemand = true | ||
- | |||
- | |||
- | [[acme.domains]] | ||
- | main = " | ||
- | |||
- | [web] | ||
- | address = ": | ||
- | </ | ||
- | |||
- | Au premier lancement du conteneur, Traefik va aller générer un certificat SSL auprès de letsencrypt et ensuite rediriger le service en https. | ||
- | |||
- | =====Problème des bases de données===== | ||
- | La plupart des systèmes de base de données ne gèrent pas les accès concurrents au niveau de leurs fichiers. Il faut comprendre par là qu'il n'est pas possible de lancer deux processus mysql qui pointent vers les mêmes fichiers de configuration (/ | ||
- | |||
- | * Mysql pour le service etherpad | ||
- | * PostgreSQL pour le service mattermost\\ | ||
- | |||
- | Des sauvegardes sont réalisées toutes les nuits. Cela nous permet de restaurer l' | ||
- | |||