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 | |||
technique:architecture_des_services [2017/09/30 22:26] – [Haute disponibilité] 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 que l'on manipulent avec Docker Compose. Pour plus d'info sur l' | ||
- | Notre infrastructure étant composé de 2 VM, chaque VM utilise un fichier '' | ||
- | |||
- | ==== Traefik ==== | ||
- | Sur chaque machine virtuelle tournent plusieurs services. Pour rediriger le flux entrant vers le bon conteneur, nous utilisons un reverse proxy orienté micro service et qui est en mesure de fonctionner avec Docker. [[https:// | ||
- | |||
- | Pour le lancer, on défini le le conteneur suivant: | ||
- | < | ||
- | traefik: | ||
- | image: traefik: | ||
- | command: --web --docker --logLevel=DEBUG --docker.watch | ||
- | container_name: | ||
- | ports: | ||
- | - " | ||
- | - " | ||
- | volumes: | ||
- | - / | ||
- | - / | ||
- | - / | ||
- | restart: always | ||
- | </ | ||
- | |||
- | 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 [[https:// | ||
- | Pour cela, il faut utiliser le fichier de configuration suivant: | ||
- | < | ||
- | logLevel = " | ||
- | debug = false | ||
- | defaultEntryPoints = [" | ||
- | |||
- | [entryPoints] | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | entryPoint = " | ||
- | | ||
- | | ||
- | | ||
- | |||
- | [acme] | ||
- | email = " | ||
- | storageFile = "/ | ||
- | entryPoint = " | ||
- | onDemand = true | ||
- | |||
- | [web] | ||
- | address = ": | ||
- | </ | ||
- | |||
- | ==== Services ==== | ||
- | Une chose à prendre en compte est que les conteneurs sont placés sur un réseau privé qui est partagé entre les différents conteneurs de la machine. Docker Compose permet de faire en sorte que, une fois lancés, les conteneurs soient capables de résoudre leurs IP privées via des entrées DNS basées sur leur nom. Par exemple définissons un service Etherpad avec sa base de données : | ||
- | < | ||
- | etherpad: | ||
- | image: registry.picasoft.net: | ||
- | container_name: | ||
- | links: | ||
- | - etherpad-db: | ||
- | environment: | ||
- | - ETHERPAD_ADMIN_PASSWORD=passwordadmin | ||
- | - ETHERPAD_DB_NAME=etherpad-lite | ||
- | - ETHERPAD_DB_USER=etherpad | ||
- | - ETHERPAD_DB_PASSWORD=bddetherpadpassword | ||
- | - MYSQL_PORT_3306_TCP_ADDR=mysql | ||
- | labels: | ||
- | - " | ||
- | - " | ||
- | restart: always | ||
- | |||
- | etherpad-db: | ||
- | image: mysql: | ||
- | container_name: | ||
- | volumes: | ||
- | - / | ||
- | environment: | ||
- | - MYSQL_ROOT_PASSWORD=mysqlrootpassword | ||
- | - MYSQL_USER=etherpad | ||
- | - MYSQL_PASSWORD=bddetherpadpassword | ||
- | - MYSQL_DATABASE=etherpad-lite | ||
- | restart: always | ||
- | </ | ||
- | |||
- | Ici l' | ||
- | |||
- | =====Architecture===== | ||
- | **Atention : ce schéma est largement obsolète et ne reflète plus l' | ||
- | {{: | ||