🐛
Locust→Nginxで負荷がけ出来る環境を作成する(docker-compose)
はじめに
Locustで遊ぶ環境を手軽に用意するために、
docker-composeで一式を揃えてみました。そのメモを書きます。
負荷がけ: Locust
対象: nginx
のような感じですね。
イメージ図
環境
Docker: 24.0.4
docker-compose: 2.19.1
検証
composeファイル
version: '3.9'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
networks:
- kensyo
locust:
image: locustio/locust:latest
volumes:
- ./locustfile.py:/mnt/locust/locustfile.py
depends_on:
- nginx
command: -f /mnt/locust/locustfile.py --host http://nginx
ports:
- "8089:8089"
networks:
- kensyo
networks:
kensyo:
ポイントは2点です。
- GUIへアクセスするために8089番ポートへの外部アクセスを許可する
- locustコンテナはEntrypointが
locust
となっているため、commandで指定する必要はありません。
$ docker inspect -f '{{.Config.Entrypoint}}' locustio/locust:latest
[locust]
locustfile.py
nginxの/
に向けてリクエストを投げるシンプルなものです。
from locust import HttpUser, task
class WebsiteUser(HttpUser):
@task
def hello_world(self):
self.client.get("/")
nginx.conf
/
にアクセスしたらHello, World!
を返すシンプルなものです。
events {}
http {
server {
listen 80;
location / {
return 200 'Hello, World!';
}
}
}
実行
docker compose up -d
でOKです。
GUIアクセス、負荷試験
--host http://nginx
で指定したため、Hostで最初から選択されています。
失敗なくリクエストがうまくいくことを確認しましょう。
参考
Discussion