You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This Docker image replaces the JMeter master/slave nomenclature with *Gru*, *Minion* and *Lucy*. *Gru* manages the *Minions* from within EC2, but *Lucy* orchestrates the entire process.
50
+
This Docker image replaces the JMeter master/slave nomenclature with *Gru*, *Minion* and *Lucy*. *Gru* manages the *Minions* from within ECS, but *Lucy* orchestrates the entire process.
53
51
54
52
```
55
-
+-------------------------------------+
56
-
| EC2 +-----------------+ |
57
-
| | ECS | |
58
-
| | +--------+ | |
59
-
| +---------+ | | +--------+ | | +--------+
60
-
| | |---->| | +--------+ ---------->| |
61
-
| | Gru |<----| | | | ---------->| Target |
62
-
| | | | +-| | Minion | ---------->| |
63
-
| +---------+ | +-| | | | +--------+
64
-
| ^ | | +--------+ | |
65
-
| | | +-----------------+ |
66
-
+------|-|----------------------------+
67
-
| |
68
-
.jmx | | .log/.jtl
69
-
| v
70
-
+----------+
71
-
| |
72
-
| Lucy |
73
-
| |
74
-
+----------+
53
+
+--------------------------------------+
54
+
| EC2 |
55
+
| +--------------------------------+ |
56
+
| | ECS | |
57
+
| | +--------+ | |
58
+
| | +-------+ | +--------+ | | +--------+
59
+
| | | |---->| | +--------+ ---------->| |
60
+
| | | Gru |<----| | | | ---------->| Target |
61
+
| | | | +-| | Minion | ---------->| |
62
+
| | +-------+ +-| | | | +--------+
63
+
| | ^ | +--------+ | |
64
+
| +-----|-|------------------------+ |
65
+
+--------|-|---------------------------+
66
+
| |
67
+
.jmx | | .log/.jtl
68
+
| v
69
+
+----------+
70
+
| |
71
+
| Lucy |
72
+
| |
73
+
+----------+
75
74
```
76
75
77
76
*Lucy* runs the `lucy.sh` script to perform the following steps:
78
-
* Step 1 - Create an ECS Cluster
79
-
* Step 2 - Create all instances and register them with the Cluster
80
-
* Step 3 - Create the Minion ECS task
81
-
* Step 4 - Wait until the instances are running and registered with the Cluster
82
-
* Step 5 - Fetch our Contatiner Instance IDs
83
-
* Step 6 - Run a Minion Task with the requested instance count
84
-
* Step 7 - Get public IP addresses from Gru and Minions
85
-
* Step 8 - Run Gru with the specified JMX
86
-
* JMeter does its thing here
87
-
* Once complete, copy the jmeter.log and results.jtl files from Gru to Lucy
88
-
* Step 9 - Stop all Tasks
89
-
* Step 10 - Terminate all instances
90
-
* Step 11 - Delete the cluster
77
+
* Step 1 - Create 2 ECS Clusters
78
+
* Step 2 - Fetch our Contatiner Instance IDs
79
+
* Step 3 - Run a Minion Task with the requested instance count
80
+
* Step 4 - Get IP addresses from Gru and Minions
81
+
* Step 5 - Run Gru with the specified JMX
82
+
* Step 6 - Fetch the results
83
+
* Step 7 - Delete the clusters
91
84
92
85
### Volumes
93
86
The `lucy` container uses 3 volumes:
@@ -128,6 +121,28 @@ docker-compose up
128
121
```
129
122
Using the `docker-compose scale` command does not work as it creates hostnames like `minion_1`. This causes an error in JMeter as it uses the hostname in URL form and sees the underscore as an illegal URL character.
130
123
124
+
## Notes
125
+
The following required and optional environment variables are supported:
126
+
127
+
| Variable | Required | Default | Notes |
128
+
|---|---|---|---|
129
+
|AWS_DEFAULT_REGION|Yes|None|AWS Region (e.g. us-east-1)|
130
+
|AWS_ACCESS_KEY_ID|Yes|None|AWS Access Key|
131
+
|AWS_SECRET_ACCESS_KEY|Yes|None|AWS Secret Key|
132
+
|INPUT_JMX|Yes|None|File path of JMeter Test file to run (.jmx). You can optionally specify this as the first command line option of `docker run`|
133
+
|KEY_NAME|Yes|None|AWS Security Key Pair .pem file (do not specify the .pem extension)|
134
+
|SECURITY_GROUP|Yes|None|AWS Secuirty group that allows ports 22,1099,50000,51000/tcp and 4445/udp from all ports (e.g. sg-12345678)|
135
+
|SUBNET_ID|Yes|None|One or more Subnets that are assigned to your VPC|
136
+
|VPC_ID||VPC assigned to SUBNET_ID|We dautomatically erive this from your SUBNET_ID|
137
+
|JMETER_VERSION||latest|smithmicro/lucy Image tag. See Docker Hub for [available versions](https://hub.docker.com/r/smithmicro/jmeter/tags/).|
138
+
|INSTANCE_TYPE||t2.micro|To double your memory, pass t2.small|
139
+
|MEM_LIMIT||950m|If you are using t2.small, set MEM_LIMIT to 1995m|
140
+
|MINION_COUNT||2||
141
+
|PEM_PATH||/keys|This must match your Volume map. See Volume section above.|
142
+
|MINION_CLUSTER_NAME||JMeterMinion|Name that appears in your AWS Cluster UI|
143
+
|GRU_CLUSTER_NAME||JMeterGru|Name that appears in your AWS Cluster UI|
144
+
|GRU_PRIVATE_IP||(blank)|Set to true if you would like to run Lucy within AWS. See GitHub [Issue 8](https://github.com/smithmicro/jmeter-ecs/issues/8) for details.|
145
+
131
146
## Notes
132
147
This Docker image uses the Instance Metadata API documented here:
0 commit comments