WIP: https://docs.google.com/drawings/d/1XcBPoyq5ult3247B53hDUAO5dkZKzhZ9RvIesUJkpfU/edit
Schéma d'architecture générale de l’hébergement d'application : https://docs.google.com/drawings/d/1DQgSjVRe2zxQ8PNZb9fHDAXTJB7obuBstJPnwpYc_Uw/edit
Schéma d'architecture AFD : https://docs.google.com/drawings/d/1F46iiEIJOeZPLB7m6DexqoZKTIWNW__P7Wz9j7F-Nig/edit
AFD est une architecture interne à gadz.org mettant en œuvre les technologies de pseudo-virtualisation Docker dans le but de fournir un hébergement d'applications transactionnelles hétérogènes. Les applications pouvant être des sites Php, des sites Symfony2, des applications RoR, etc.
AFD comprend tous les outils servant à l'administration de la pile "middleware" c'est-à-dire :
AFD fonctionne à partir de templates Docker pré-installés par les roots qui peuvent être déployés au besoin des projets.
Ci-dessous le récapitulatif des templates de containers présent sur le github :
Nom du template | Role | Url du Dockerfile |
---|---|---|
gorg/nginx | nginx | https://github.com/gadzorg/docker/tree/master/gorg-nginx |
gorg/php-fpm | php | https://github.com/gadzorg/docker/tree/master/gorg-php-fpm |
gorg/php53-fpm | php | https://github.com/gadzorg/docker/tree/master/gorg-php53-fpm |
On peux compiler un template avec les commandes suivantes a lancer en root :
cd /opt/docker git pull cd <nom du template> docker build -t <nom du template> . |
Une VM est mise a disposition pour l’hébergement d'applications PHP. Cette VM est anesidora.gorgu.net (Debian + docker).
Ci-dessous un tableau récapitulatif des serveurs et répertoire ou il faut créer le répertoire de service en fonction de l'environnement :
Environnement | Serveur | Répertoire contenant les |
---|---|---|
Production | anesidora.gorgu.net | /mnt/container_data/gorg_prod/ |
Ci-dessous la description de arborescence d'un service
Déscription | |||
---|---|---|---|
<nom du service> | |||
| | conf | ||
| | - | <role du container> | Répertoires qui seront monté dans les containers du même nom sous /etc |
| | - | docker.args | Fichiers contenant les arguments a passer a docker pour lancer les containers associés au service |
- | data | Répertoire contenant les données (tel que les sources php, ou le webapps tomcat) contenant le programme | |
- | logs | ||
| | - | <role du container> | Répertoires qui seront monté dans les containers du même nom sous /var/log dans lequel seront déposés les logs |
docker run --name <nom_du_service>_ssh -d -p <num_port_ssh>:22 -v /home/<nom_du_service>/home/:/var/www -v /www/<nom_du_service>/public_html/:/www/<nom_du_service>/public_html gadzorg/gorg-php56-cli docker run --name <nom_du_service>_phpfpm -d -p <num_port_fastcgi>:9000 -v /www/<nom_du_service>/public_html/:/www/<nom_du_service>/public_html gadzorg/php56-fpm |
Nom du site | Répertoire | Port FastCGI | PortSSH |
---|---|---|---|
forumam | /var/forumam | 19002 | 22001 |
forumamqa | /var/forumamqa | 19002 | 22002 |
L’accès aux sites est possible via ssh via la commande suivante :
ssh <nom_du_service>@anesidora.gorgu.net -p 2222 |
Il est aussi possible d’accéder au service via sftp en ajoutant les lignes suivantes au fichier ~/.ssh/config
Host <nom_du_service> Hostname anesidora.gorgu.net Port 2222 User <nom_du_service> |
# cat /etc/cron.d/backup # The first element of the path is a directory where the debian-sa1 # script is located PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin 0 0 * * * root docker ps | grep -Ev "^CONTAINER" | while read line; do name=`echo $line | sed "s/.* \(.*\)/\1/"`; id=`echo $line | sed "s/^\([0-9a-z]*\) .*/\1/"` ; docker export -o /mnt/container_data/gorg_prod/container_backup/${name}.tar $id; done; gzip /mnt/container_data/gorg_prod/container_backup/*.tar |
TODO : Expliquer le système de monitoring, mettre en place des sondes
http://graphana.tum.gorgu.net/#/dashboard/file/Anesidora.json
Todo
Rancher est accésible depuis http://rancher-afd.gorgu.net:8080
Todo