Toxiproxy

This commit is contained in:
2025-11-03 20:10:09 +01:00
parent 7070dc8de5
commit 60683eb293
2 changed files with 81 additions and 24 deletions

View File

@@ -1,23 +1,25 @@
# Environnement logiciel pour les travaux pratiques
## Proxy ## Proxy
Créer un réseau pour le proxy Créer un réseau pour le serveur proxy
```shell ```shell
docker network create proxy_net docker network create proxy_net
``` ```
```shell ```shell
docker run --detach --name caddy-docker-proxy --restart=always ^ docker run --detach --name caddy-docker-proxy --restart=always \
--network proxy_net -p "80:80" -p ""443:443/tcp"" -p "443:443/udp" ^ --network proxy_net -p "80:80" -p ""443:443/tcp"" -p "443:443/udp" \
-e "CADDY_INGRESS_NETWORKS=proxy_net" ^ -e "CADDY_INGRESS_NETWORKS=proxy_net" \
-v caddy_config:/config ^ -v caddy_config:/config \
-v caddy_data:/data ^ -v caddy_data:/data \
-v /var/run/docker.sock:/var/run/docker.sock:ro ^ -v /var/run/docker.sock:/var/run/docker.sock:ro \
-v "%cd%\www:/srv/www:ro" ^ -v "$(pwd)/www:/srv/www:ro" \
--label "caddy=localhost" ^ --label "caddy=localhost" \
--label "caddy.root=* /srv/www" ^ --label "caddy.root=* /srv/www" \
--label "caddy.file_server=" ^ --label "caddy.file_server=" \
--label "caddy.tls=internal" ^ --label "caddy.tls=internal" \
lucaslorentz/caddy-docker-proxy:2.10 lucaslorentz/caddy-docker-proxy:2.10
``` ```
@@ -25,19 +27,41 @@ Pour Linux remplacer ^ par \ et %cd%\ par $(pwd)/
### WhoAmI ### WhoAmI
Tiny Go webserver that prints OS information and HTTP request to output. Ce mini serveur Go affiche des informations sur la requête http. Utile pour tester le bon fonctionnement du proxy.
https://github.com/traefik/whoami
```shell ```shell
docker run --detach --name whoami ^ docker run --detach --name whoami \
--network proxy_net --network proxy_net \
--label "caddy=whoami.localhost" ^ --label "caddy=whoami.localhost" \
--label "caddy.reverse_proxy={{upstreams 80}}" ^ --label "caddy.reverse_proxy={{upstreams 80}}" \
--label "caddy.tls=internal" ^ --label "caddy.tls=internal" \
traefik/whoami 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 # Mock Web API
@@ -51,7 +75,3 @@ docker run --detach --name whoami ^
ports: ports:
- 8080:8080 - 8080:8080
- 8081:8081 - 8081:8081
toxiproxy:
image: ghcr.io/shopify/toxiproxy
restart: "no"

37
toxiproxy.http Normal file
View File

@@ -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