From 60683eb29383d2bb8f9e3705ab2926f932b3b558 Mon Sep 17 00:00:00 2001 From: medina5 Date: Mon, 3 Nov 2025 20:10:09 +0100 Subject: [PATCH] Toxiproxy --- README.md | 68 ++++++++++++++++++++++++++++++++------------------ toxiproxy.http | 37 +++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 24 deletions(-) create mode 100644 toxiproxy.http diff --git a/README.md b/README.md index 8a0eac6..83e00c7 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,25 @@ +# Environnement logiciel pour les travaux pratiques + ## Proxy -Créer un réseau pour le proxy +Créer un réseau pour le serveur proxy ```shell docker network create proxy_net ``` ```shell -docker run --detach --name caddy-docker-proxy --restart=always ^ - --network proxy_net -p "80:80" -p ""443:443/tcp"" -p "443:443/udp" ^ - -e "CADDY_INGRESS_NETWORKS=proxy_net" ^ - -v caddy_config:/config ^ - -v caddy_data:/data ^ - -v /var/run/docker.sock:/var/run/docker.sock:ro ^ - -v "%cd%\www:/srv/www:ro" ^ - --label "caddy=localhost" ^ - --label "caddy.root=* /srv/www" ^ - --label "caddy.file_server=" ^ - --label "caddy.tls=internal" ^ +docker run --detach --name caddy-docker-proxy --restart=always \ + --network proxy_net -p "80:80" -p ""443:443/tcp"" -p "443:443/udp" \ + -e "CADDY_INGRESS_NETWORKS=proxy_net" \ + -v caddy_config:/config \ + -v caddy_data:/data \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ + -v "$(pwd)/www:/srv/www:ro" \ + --label "caddy=localhost" \ + --label "caddy.root=* /srv/www" \ + --label "caddy.file_server=" \ + --label "caddy.tls=internal" \ lucaslorentz/caddy-docker-proxy:2.10 ``` @@ -25,19 +27,41 @@ Pour Linux remplacer ^ par \ et %cd%\ par $(pwd)/ ### WhoAmI -Tiny Go webserver that prints OS information and HTTP request to output. -https://github.com/traefik/whoami +Ce mini serveur Go affiche des informations sur la requête http. Utile pour tester le bon fonctionnement du proxy. ```shell -docker run --detach --name whoami ^ - --network proxy_net - --label "caddy=whoami.localhost" ^ - --label "caddy.reverse_proxy={{upstreams 80}}" ^ - --label "caddy.tls=internal" ^ +docker run --detach --name whoami \ + --network proxy_net \ + --label "caddy=whoami.localhost" \ + --label "caddy.reverse_proxy={{upstreams 80}}" \ + --label "caddy.tls=internal" \ traefik/whoami ``` -### Toxiproxy +## Toxiproxy + +Toxiproxy est un outil open source développé par Shopify qui agit comme un proxy TCP permettant de simuler diverses conditions réseau, telles que la latence, la perte de paquets ou les coupures de connexion, afin de tester la résilience des applications. + +Il est conçu pour les environnements de développement, d'intégration continue et de test, offrant une API dynamique pour injecter des perturbations réseau (appelées toxics) de manière contrôlée ou aléatoire. + +Grâce à Toxiproxy, les développeurs peuvent identifier les points de défaillance potentiels de leurs systèmes distribués et améliorer la tolérance aux pannes en simulant des scénarios de dégradation réseau réalistes. + +```shell +docker run --detach --name toxiproxy \ + -p "9004:9004" \ + --network proxy_net \ + --label "caddy_0=toxiproxy.localhost" \ + --label "caddy_0.reverse_proxy={{upstreams 8474}}" \ + --label "caddy_0.tls=internal" \ + --label "caddy_1=whoami_toxic.localhost" \ + --label "caddy_1.reverse_proxy={{upstreams 9001}}" \ + --label "caddy_1.tls=internal" \ + ghcr.io/shopify/toxiproxy +``` + +### Liste des proxies +GET https://toxiproxy.localhost/proxies + # ---------------------------------------------------------------------- # Mock Web API @@ -51,7 +75,3 @@ docker run --detach --name whoami ^ ports: - 8080:8080 - 8081:8081 - - toxiproxy: - image: ghcr.io/shopify/toxiproxy - restart: "no" diff --git a/toxiproxy.http b/toxiproxy.http new file mode 100644 index 0000000..c262051 --- /dev/null +++ b/toxiproxy.http @@ -0,0 +1,37 @@ +### Liste des proxies +GET https://toxiproxy.localhost/proxies + +### Configurer un point d'entrée +POST http://toxiproxy.localhost/proxies +Content-Type: application/json" + +{ + "name": "whoami", + "listen": "0.0.0.0:9001", + "upstream": "whoami:80" +} + +### Empoisonner le point d'entrée + +# latence 750ms ± 250 +POST http://toxiproxy.localhost/proxies/whoami/toxics +Content-Type: application/json + +{ + "name": "latency_down_api", + "type": "latency", + "stream": "downstream", + "attributes": { + "latency": 750, + "jitter": 250 + } +} + +### WhoAmi en accès direct +GET http://whoami.localhost + +### WhoAmI via ToxiProxy +GET http://whoami_toxic.localhost + +### Supprimer le point d'entrée +DELETE https://toxiproxy.localhost/proxies/whoami