Caddy Et Traefik : Des Concurrents Sérieux À Nginx Et Haproxy ? Mickaël Masquelin | Quelques Mots Sur Le Laboratoire …
Total Page:16
File Type:pdf, Size:1020Kb
Caddy et Traefik : des concurrents sérieux à nginx et HAProxy ? Mickaël Masquelin | Quelques mots sur le laboratoire … • Unité Mixte de Recherche • 5 tutelles : • Le CNRS • L’Université de Lille • L’Université de Polytechnique HdF • L’Ecole Centrale • Le groupe YNCREA – ISEN • 6 sites géographiquement distants • Environ 500 personnes (chercheurs, ingénieurs, administratifs, étudiants, …) Mickaël Masquelin – IEMN 10/03/2018 2 Journée thématique “Retours d’expériences” Les objectifs Mickaël Masquelin – IEMN 10/03/2018 3 Journée thématique “Retours d’expériences” RETOUR D’EXPERIENCE SUR CES NOUVELLES APPLIS WEB QUI FACILITENT LA VIE L’idée est de faire un retour d’expérience sur ces nouvelles applications web qui pointent le bout de leur nez et qui viennent révolutionner un peu le paysage informatique … Les objectifs Mickaël Masquelin – IEMN 10/03/2018 4 Journée thématique “Retours d’expériences” RETOUR D’EXPERIENCE SUR CES NOUVELLES APPLIS WEB QUI FACILITENT LA VIE L’idée est de faire un retour d’expérience sur ces nouvelles applications web qui pointent le bout de leur nez et qui viennent révolutionner un peu le paysage informatique … ESSAYER DE VOUS DONNER QUELQUES PISTES J’espère que vous repartirez de la journée thématique avec pleins d’idées, des envies de changer la manière dont vous travaillez, dont vous déployez vos applications ou vos Les objectifs services dans vos contextes respectifs … Mickaël Masquelin – IEMN 10/03/2018 5 Journée thématique “Retours d’expériences” RETOUR D’EXPERIENCE SUR CES NOUVELLES APPLIS WEB QUI FACILITENT LA VIE L’idée est de faire un retour d’expérience sur ces nouvelles applications web qui pointent le bout de leur nez et qui viennent révolutionner un peu le paysage informatique … ESSAYER DE VOUS DONNER QUELQUES PISTES J’espère que vous repartirez de la journée thématique avec pleins d’idées, des envies de changer la manière dont vous travaillez, dont vous déployez vos applications ou vos Les objectifs services dans vos contextes respectifs … ESSAYER DE VOUS CONVAINCRE QU’UNE ARCHITECTURE MICROSERVICES, C’EST BIEN J Docker & co, buzzwords ? Je ne pense pas … Mickaël Masquelin – IEMN 10/03/2018 6 Journée thématique “Retours d’expériences” On y va ? Mickaël Masquelin – IEMN 10/03/2018 7 Journée thématique “Retours d’expériences” Go (http://golang.org) Mickaël Masquelin – IEMN 10/03/2018 8 Journée thématique “Retours d’expériences” Avantages du langage Go • Simple à écrire, syntaxe humainement lisible ; • Intègre dans sa conception de base le principe de concurrence et de parallélisme ; • Adapté aux architectures de nouvelles générations (multicoeurs). Mickaël Masquelin – IEMN 10/03/2018 9 Journée thématique “Retours d’expériences” Quelques applications écrites en Go Mickaël Masquelin – IEMN 10/03/2018 10 Journée thématique “Retours d’expériences” Caddy Mickaël Masquelin – IEMN 10/03/2018 11 Journée thématique “Retours d’expériences” Origine de la démarche Approche Approche Monolithique Microservices Mickaël Masquelin – IEMN 10/03/2018 12 Journée thématique “Retours d’expériences” Les architectures microservices • Plusieurs avantages : • Consommation plus efficace des ressources ; • Plus modulaires ; • Mises à jour facilitées. • Composées de plusieurs briques : • Application -> API • Application -> Base de données • Application -> Service partenaire • « Combo » HTTP + API RESTful + JSON (assez souvent) Mickaël Masquelin – IEMN 10/03/2018 13 Journée thématique “Retours d’expériences” Paysage des serveurs web en Mars 2018 Ce qui nous intéresse … Mickaël Masquelin – IEMN 10/03/2018 14 Journée thématique “Retours d’expériences” Caddy : présentation et structure + + ServeHTTP() + http.FileServer() = Mickaël Masquelin – IEMN 10/03/2018 15 Journée thématique “Retours d’expériences” Sous le capot … Exemple d’illustration : logHandler(gzipHandler(fileServer)) Handler HTTP middleware middleware middleware Mickaël Masquelin – IEMN 10/03/2018 16 Journée thématique “Retours d’expériences” Environnements d’exécution Mickaël Masquelin – IEMN 10/03/2018 17 Journée thématique “Retours d’expériences” Pourquoi utiliser Caddy Simplicité Sécurité 4S Stabilité « Scalabilité » Mickaël Masquelin – IEMN 10/03/2018 18 Journée thématique “Retours d’expériences” S comme Simplicité • Installation : [root@home ~]# curl https://getcaddy.com | bash -s personal • Installation « avancée » (avec plugins) [root@home ~]# curl https://getcaddy.com | bash -s personal \ http.cache,http.cors,http.git Mickaël Masquelin – IEMN 10/03/2018 19 Journée thématique “Retours d’expériences” S comme Simplicité nginx.conf Caddyfile Mickaël Masquelin – IEMN 10/03/2018 20 Journée thématique “Retours d’expériences” S comme Simplicité nginx.conf (php-fpm) Caddyfile (php-fpm) ext split index … Mickaël Masquelin – IEMN 10/03/2018 21 Journée thématique “Retours d’expériences” S comme Simplicité nginx.conf (en reverse proxy) Caddyfile (en reverse proxy) … Mickaël Masquelin – IEMN 10/03/2018 22 Journée thématique “Retours d’expériences” S comme Simplicité • Journalisation (ala Apache) : log /var/log/caddy/requests.log [format] { rotate_size 50 # Rotation des journaux qd taille > 10 MB rotate_age 366 # Nombre de jours de conservation des logs rotate_keep 20 # Nombre de fichiers de logs à conserver rotate_compress # Compression gzip des journaux } où [format] = "{>Cf-Connecting-Ip} - [{when}] \"{method} {uri} {proto}\" {status} {size} \"{>Referer}\" \"{>User-Agent}\"" Mickaël Masquelin – IEMN 10/03/2018 23 Journée thématique “Retours d’expériences” S comme Simplicité • Cache WordPress (plugin WP Super Cache) : rewrite { to /wp-content/cache/supercache/{host}{uri}index-https.html {path} {path}/ /index.php?{query} if {path} not_match ^\/wp-admin to {path} {path}/ /index.php?{query} } Mickaël Masquelin – IEMN 10/03/2018 24 Journée thématique “Retours d’expériences” S comme Simplicité • Restrictions IP(v4) : ipfilter / { rule block ip 192.168.1.0-255 172.16.20.0-10 193.49.50.51 blockpage /var/www/html/403.html } Mickaël Masquelin – IEMN 10/03/2018 25 Journée thématique “Retours d’expériences” S comme Simplicité • Gestion du Cross Origin Ressources Sharing : cors / { origin https://www.monsite.fr origin http://monsite.fr methods POST,PUT allow_credentials false max_age 3600 allowed_headers X-Custom-Header [...] } Mickaël Masquelin – IEMN 10/03/2018 26 Journée thématique “Retours d’expériences” S comme Sécurité Mickaël Masquelin – IEMN 10/03/2018 27 Journée thématique “Retours d’expériences” S comme Sécurité Mickaël Masquelin – IEMN 10/03/2018 28 Journée thématique “Retours d’expériences” S comme Sécurité Mickaël Masquelin – IEMN 10/03/2018 29 Journée thématique “Retours d’expériences” Euhhh … et le support du TLS 1.3 ? Mickaël Masquelin – IEMN 10/03/2018 30 Journée thématique “Retours d’expériences” S comme Sécurité Source : ZDnet Mickaël Masquelin – IEMN 10/03/2018 31 Journée thématique “Retours d’expériences” S comme Sécurité • Ecoute par défaut sur le port tcp/2015 • Supporte la rotation des tickets de sessions • Supporte le SNI Mickaël Masquelin – IEMN 10/03/2018 32 Journée thématique “Retours d’expériences” S comme Scalable • Loadbalancing facile (aléatoire) : proxy / site-nginx1:80 site-nginx2:80 site-nginx3:80 • Loadbalancing avec du round-robin : proxy / site-nginx1:80 site-nginx2:80 site-nginx3:80 { policy round_robin } Mickaël Masquelin – IEMN 10/03/2018 33 Journée thématique “Retours d’expériences” S comme Stable Mickaël Masquelin – IEMN 10/03/2018 34 Journée thématique “Retours d’expériences” Extensible • Beaucoup de « plugins » : • cors • git • hugo • ipfilter • jsonp • search • metrics • … Mickaël Masquelin – IEMN 10/03/2018 35 Journée thématique “Retours d’expériences” Côté performances KS-2E : Intel Atom 2800 (2c/4t) @ 1,86 Ghz OS Version 16.04 LTS 1.10.3-0ubuntu0.16.04.2 0.10.12 (non-commercial use only) 4 Go DDR3 – 100 Mbps • Protocole de test : [masqueli@laptop ~]# echo "Test <webserver>"; sleep 30; for i in {1..7}; do /usr/local/bin/h2load -t2 -c200 -m100 -n10000 -v -H 'Accept-Encoding: gzip' https://www.xxxx-xxx.xxx:443 > h2load.$i.webserver.log; cat h2load.$i.webserver.log | awk '/finished in/ {print $4 " req/s "} /requests: / {print ($8/$2*100)"% completees"}' | tr -d '\n'; echo; sleep 30; done; Mickaël Masquelin – IEMN 10/03/2018 36 Journée thématique “Retours d’expériences” Côté performances Test nginx Test Caddy 215.66 req/s 100% completees 441.29 req/s 100% completees 215.75 req/s 100% completees 992.23 req/s 100% completees 231.11 req/s 100% completees 1010.82 req/s 100% completees 212.68 req/s 100% completees 1021.35 req/s 100% completees 249.37 req/s 99,5% completees 881.57 req/s 100% completees 206.67 req/s 100% completees 938.86 req/s 100% completees 226.23 req/s 100% completees 1048.38 req/s 100% completees Mickaël Masquelin – IEMN 10/03/2018 37 Journée thématique “Retours d’expériences” Côté performances Résultats obtenus avec nginx à nuancer ? Test nginx Test Caddy 215.66 req/s 100% completes 441.29 req/s 100% completes 215.75 req/s 100% completes 992.23 req/s 100% completes 231.11 req/s 100% completes 1010.82 req/s 100% completes 212.68 req/s 100% completes 1021.35 req/s 100% completes 249.37 req/s 99,5% completes 881.57 req/s 100% completes 206.67 req/s 100% completes 938.86 req/s 100% completes 226.23 req/s 100% completes 1048.38 req/s 100% completes Mickaël Masquelin – IEMN 10/03/2018 38 Journée thématique “Retours d’expériences” Traefik Mickaël Masquelin – IEMN 10/03/2018 39 Journée thématique “Retours d’expériences” Problématique Conteneurs Conteneur Mickaël Masquelin – IEMN 10/03/2018 40 Journée thématique “Retours