The entire experiment can be run on an existing 4 node cluster (look here) by running the run.sh
bash script.
A kubernetes cluster on Ubuntu 18 or 20 nodes can be setup by following this guide.
The best way of getting the repos is through the submodules command.
git clone --recurse-submodules -j4 https://github.com/MSrvComm/Experiments
If you need to checkout BLOCProxy separately, then use the stable
branch (non-default branch).
BLOC: Balancing Load with Overload Control In the Microservices Architecture
-
We assume that the experiments will be running on a Kubernetes cluster able to run 50-60 pods with 2 containers each. Further details on configuration can be found in the deployement yaml files. In our experiments, we used 4 Cloudlab servers, each with four 10 core sockets and 196 GB of RAM.
-
The experiments are being run from an Ubuntu machine.
-
Python3.9 and the bash shell is available on the system.
-
We use matplotlib, numpy and pandas to generate our results.
(Optional - if you want to test with your own images; otherwise start with [Control Plane](#Deploy the Control Plane))
# format: hub_name/image_name:version
export WEB_IMG_NAME=ratnadeepb/testapp:latest
export BLOC_PROXY_IMG_NAME=ratnadeepb/micoproxy:latest
export LC_PROXY_IMG_NAME=ratnadeepb/micoproxy:leastconn
cd BLOC/app && ./docker_build.sh $WEB_IMG_NAME && cd $OLDPWD
cd BLOCProxy && ./build_proxy.sh $BLOC_PROXY_IMG_NAME && cd $OLDPWD
cd BLOCControl/restEpWatcher && ./deploy.sh && cd $OLDPWD
kubectl taint nodes --all node-role.kubernetes.io/master-
We labeled the nodes so that 10 backend servers can run on one physical node.
Example command (node names will have to be changed):
kubectl label nodes node0,node1,node2 workload=svc1
kubectl label nodes node3 workload=svc2
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64
sudo mv hey_linux_amd64 /usr/local/bin/hey
pip install -r requirements.txt
./run.sh
This will store the results in a file called BLOCProxyVsLeastConn.pdf
./graph.py
We have already provided the CSV files and pdf diagram as a reference of the result. These files have the same names but suffixed with _ref
.