#!/usr/bin/env bash #set -e #set -x #DUT_IMAGE=dind-17.06.2-ee-20 DUT_IMAGE=dockerd-static-qlen-blind-nodemessage DIAG_IMAGE=dockerd-static-qlen #AMB_IMAGE=docker/ucp-dsinfo:3.1.3 WORKER_NODES=30 if [ "$1" = "down" ]; then parallel --tag docker rm -f {} ::: $(eval echo m1 w{1..$WORKER_NODES} nd) exit 0 fi echo echo increasing arp gc thresholds sudo sysctl -w net.ipv4.neigh.default.gc_thresh1=1024 sudo sysctl -w net.ipv4.neigh.default.gc_thresh2=2048 sudo sysctl -w net.ipv4.neigh.default.gc_thresh3=4096 echo echo starting $((WORKER_NODES+1)) cluster nodes parallel --tag docker run -d --privileged --name {} --hostname {} --entrypoint dockerd ${DUT_IMAGE} --debug ::: $(eval echo m1 w{1..$WORKER_NODES}) echo echo starting network diagnostic docker run --sysctl net.ipv4.conf.eth0.route_localnet=1 -d --privileged --name nd --hostname nd -p 2000:2000 --entrypoint dockerd ${DIAG_IMAGE} --debug docker exec nd mkdir -p /etc/docker for node in nd; do echo '{"network-diagnostic-port": 2000}' | docker exec -i $node sh -c 'cat > /etc/docker/daemon.json' done echo echo initializing swarm join_command=$(docker exec m1 docker swarm init |head -n5 |tail -n1) echo echo joining workers parallel --env join_command --tag docker exec {} ${join_command} ::: $(eval echo nd w{1..$WORKER_NODES}) echo echo creating overlay network and mode global service docker exec m1 docker network create -d overlay --attachable stressnet docker exec m1 docker service create -d --network stressnet --name pinnet --mode global kubernetes/pause echo echo enabling network diagnostic docker kill -s HUP nd echo echo plumbing iptables ambassador to nd docker run --rm --cap-add NET_ADMIN --network container:nd nicolaka/netshoot iptables -t nat -A PREROUTING -p tcp --dport 2000 -j DNAT --to-destination 127.0.0.1:2000