-
Notifications
You must be signed in to change notification settings - Fork 6
Milestone 4
sudo apt-get update &&
sudo apt-get install default-jre &&
sudo apt-get install zip &&
sudo apt-get install unzip
- Installing Jmeter
- Dependencies: Concurrent Thread Groups
- Enabling Jmeter Cache Storage
- Configuring Jmeter web-browser certificate and localhost proxy
- Storing images into the Jmeter bin folder
We have made use of Jmeter UI for defining thread groups, cache, listeners, and other parameterization. However, tests are run using the bash shell command:
./jmeter -n -t <JMX-file-path> -l <results.csv-generation-file-path> -e -o <report-generation-file-path>
We have tested for various replica counts and user counts. Our test results are grouped hierarchically along the replica-count and user-count. The results consist of the following data:
- JMX file: Jmeter test file
- credentials.csv: user credentials used for testing users
- index.html: web page to display test statistics and graphs
- results.csv: test summary report
For 4 replicas of our Kubernetes microservices, we observed the following throughput graphs for 100, 500, and 1000 users.
<2-3 graphs>
Scaling-up command:
kubectl scale deployment <deployment-name> --replicas=<higher-replica-number> -n <namespace>
Scaling-down command:
kubectl scale deployment <deployment-name> --replicas=<lower-replica-number> -n <namespace>
Dependencies:
To measure the fault tolerance of our system we made use of Kubemonkey (Chaos Engineering) concept. Following is the code to install helm & kubemonkey:
cd PingIntelligence &&
git checkout automation-script &&
git pull &&
bash helm-installation.sh &&
cd .. &&
git clone https://github.com/asobti/kube-monkey &&
mv PingIntelligence/values.yaml kube-monkey/helm/kubemonkey/ &&
helm install -name my-release kubemonkey -f kube-monkey/helm/kubemonkey/values.yaml &&
kubectl apply -f PingIntelligence/kubemonkey-config.yaml
The above code enables kubemonkey to monitor the default namespace, kills 3 random service replicas with a frequency of daily run (Scheduling runs at 8 am and pods are destroyed from 10 am-4 pm).
Architectural Changes:
- Deploying Kafka, Zookeeper, MySQL, consumer-queue1 & consumer-queue2 into another namespace that is blacklisted by Kube-monkey
- Establishing communication between pods of different namespaces (default and other).
- Introducing Replication controller/ReplicaSet along with Horizontal Pod Autoscaler (HPA).
https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/