-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Distributed Vegeta #336
Comments
It's DYI for now indeed, although there are others who've solved the same problem before. |
I have ideas on how to make this easier. But no plans to implement anything for now (not enough time currently).
|
Great. Thank you for these tips! 👍🏻👏 |
How do you envision using operators ? It would be nice to start with a simple master/worker model, deploying workers as a daemonset across nodes. Distributed attack could be using pdsh like you mentioned in your README.md or a synchronizing mechanism like 0mq/redis-pub-sub/etc |
I don't know. There are many possibilities, but it'd be nice to have a history of load tests available as well as the results of each. |
hi all i'm starting the Feel free to join effort and help there. 🎅 🤶 🌻 Any contribution/help is welcome. 🌻 i"m open for any idea/interaction and suggestion from community. At moment i plan to learn the k8s operator api as fist step 😄 🤖 🚀 so let's see :) Roadmap proposal feel free to write here and help vegeta to become a super-sayan :) (MalloZup/vegeta-operator#2) |
My thought is to use a kubernetes operator (acting as the master, driven by The operator will be responsible for executing tests by sending requests (gRPC/HTTP) to the workers and retrieving the results. It will also be responsible for storing the aggregated results, command history, etc., in a key-value DB (pick anyone solution). @tsenart WDYT ? Is that what you envisioned as well ? |
@nitishm (just my 2 cents, nothing more): Maybe using Kubernetes We can scale jobs as well with parallelism https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#controlling-parallelism To me Vegeta tests are naturally more "job" kind of workload rather than a "worker/replicaset" one. But as well as you I would like to know what @tsenart thinks about it 😉 |
Agreed. |
I agree with jobs as well. My thought process was driven by this article on using locust on GKE https://cloud.google.com/solutions/distributed-load-testing-using-kubernetes. |
hi all, so since i did some experiment with the vegeta-controller/operator here my 2cents:
I think as 0.1 version or minimal version this could be the first thing. This was the API i was thinking: https://github.com/MalloZup/vegeta-operator/blob/master/config/samples/vegeta_v1beta1_vegeta.yaml. ( feel free for suggestions ) Concerning AN user could also add the needed logging via k8s with other operators etc. for working around Imho later on we could think about storing logging, etc. About I think yop, is more a |
Wouldn't we create an |
@tsenart from your POV and experience which |
All the flags that you can define in |
FWIW I use k8s jobs to run distributed Vegeta tests (we achieved 1M tps using NLBs). I would say the responsibility of creating / deleting jobs etc shouldn't be with Vegeta. Whatever tooling is used to run any other job can be used. To make this really useful, it would be nice to use a Prometheus client to expose metrics. This is great way to aggregate metrics across all instances in a standard and scalable way. Plus alerts can used to automate testing for CI. Maybe there's already a way to hook in a Prometheus client but after a quick check I can't see an obvious way. |
At my company, we uses a kubernetes custom controller that simply executes vegeta as kubernetes job. I've developed a project similar to https://github.com/MalloZup/vegeta-operator without any plan, I'm looking forward to your feedback. |
@kaidotdev How do you scale the attacks ? Or is a single attack carried out by a single job pod ? |
Yes, each attack runs as a single job pod. |
Parallelism means scale out on performing the task. But how do you synchronize the attacks ? Having 3 jobs start up at different times would lead to a slew and inaccurate results if the attack was launched to be run for a fixed interval. How do you address that ? |
Unfortunately, it is not guaranteed so far. |
Yea that’s where I got stuck and gave up on the task too. Maybe there is a possibility to sync jobs using specialized workloads deployed as part of the jobs but it’s up for investigation. |
Hmm... |
@kaidotdev I create https://github.com/nitishm/vegeta-server as an attempt to address this problem. Just waiting for some time to free up to either use it directly as a pod on k8s or reinstrument some of the code to make it cloud-native. If you are interested in pursuing this further I would love to collaborate! |
My take on the vegeta-operator https://github.com/dastergon/vegeta-operator. It supports most of Vegeta's features and it has the ability to store the reports in AWS S3 (for now) via rclone. I would love to hear your feedback. Also, pull requests are always welcome! :) |
I have created another operator for vegeta: https://github.com/fgiloux/vegeta-operator
A few things are not implemented:
Feedback welcome! |
Hi guys,
First, great piece of software, thank you <3
Second, could you please tell me, is there any recommended way to run distributed Vegeta on a multi node cluster (EC2 ASG, K8s, Mesos or whatever to stress test at a scale) and “queue” attack targets somehow? Is it DIY only for now? ;)
Thank you!
The text was updated successfully, but these errors were encountered: