|
META TOPICPARENT |
name="CloudSuite" |
-- HamidMoghaddam - 18 May 2016 |
|
< < | The new version of CloudSuite is developed on Docker files so it needs different installation than last one. The new version needs Ubuntu 14.04 so I cloned one of VM and upgraded it to 14.04. |
> > | Although the installation guide of the CloudSuite's benchmarks are provided by the Cloudsuite developers, sometimes we need to install each part of a benchmark in the different nodes. The following installation steps are used for implementing the web serving benchmark of CloudSuite on the different VMs of our cloud lab. |
| Creating Swarm Manager
In order to connect dockers which are installed on different nods we need installing Swarm.
- cloned Vm and named it cs-v3-web-swarmmanager-x64 and assigned it 10.0.100.62.
- installed docker by this link
guide.
- opened terminal and wrote: docker pull swarm
|
|
< < |
- Got error "Cannot connect to the Docker daemon. Is the docker daemon running on this host?" so run sudo usermod -aG docker mike and sudo usermod -aG docker root then logout and login
|
> > |
- If get this error "Cannot connect to the Docker daemon. Is the docker daemon running on this host?" then run sudo usermod -aG docker mike and sudo usermod -aG docker root then logout and login
|
|
- docker pull progrium/consul
|
|
< < |
- add DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 \ --cluster-store consul://10.0.100.62:8500 \ --cluster-advertise eth0:2375" to /etc/default/docker(in this link
they wrote step 6 completly wrong and take one day to figure out what happens.)
|
> > |
- add DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 \ --cluster-store consul://10.0.100.62:8500 \ --cluster-advertise eth0:2375" to /etc/default/docker
|
|
- sudo service docker restart
|
|
< < |
- docker run -d -p 8500:8500 --hostname 10.0.100.62 --name consul-store progrium/consul -server -bootstrap (again in the swarm installation guide by CloudSuite, they made this line mistake and consumed a lot of time to solve it)
- docker run -d --name swarm-agent swarm join --advertise=10.0.100.62 :2375 consul://10.0.100.62:8500 (again CloudSuite team writed this line wrongly. )
- repeat step 2,3,4,6,7,9 on every VMs but just in step 9 replace --advertise IP address with each VM IP address.
- docker -H tcp://10.0.100.62:22222 network create --driver overlay swarm-network
|
> > |
- docker run -d -p 8500:8500 --hostname 10.0.100.62 --name consul-store progrium/consul -server -bootstrap
- docker run -d --name swarm-agent swarm join --advertise=10.0.100.62:2375 consul://10.0.100.62:8500
- docker run -d -p 22222:2375 --name swarm-manager swarm manage consul://10.0.100.62:8500
- docker -H tcp://10.0.100.62:22222 network create --driver overlay --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 my_net
|
| Frontend |
|
< < | I did following steps on frontend machine(Please check swarm-agent is running: docker start 'swarm-agent') |
> > | In the Frontend machine(IP:10.0.100.12) |
| |
|
< < | 1. docker pull cloudsuite/web-serving:web_server
2. docker -H tcp://10.0.100.62:22222 run -dt -e constraint:node==cs-v3-web-frontend-x64 --net=swarm-network --name=web_server cloudsuite/web-serving:web_server /etc/bootstrap.sh I got subnet conflict in this stage (Thanks again to CloudSuit team) After one they searching I found out creating overlay network (step 11 of swarm manager creation) should be change to docker -H tcp://10.0.100.62:22222 network create --driver overlay --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 swarm-network |
> > | 1. docker run -d --name swarm-agent swarm join --advertise=10.0.100.12:2375 consul://10.0.100.62:8500 |
| Backend |
|
< < |
- docker pull cloudsuite/web-serving:db_server
- docker -H tcp://10.0.100.62:22222 run -dt -e constraint:node==cs-v3-web-backend-x64 --net=swarm-network --name=mysql_server cloudsuite/web-serving:db_server
|
> > | In the Backend machine(IP:10.0.100.2)
- docker run -d --name swarm-agent swarm join --advertise=10.0.100.12:2375 consul://10.0.100.62:8500
|
| Memcache |
|
< < |
- docker pull cloudsuite/web-serving:memcached_server
- docker -H tcp://10.0.100.62:22222 run -dt -e constraint:node==cs-v3-web-memcached-x64 --net=swarm-network --name=memcache_server cloudsuite/web-serving:memcached_server
|
> > | In the Memcached machine(IP:10.0.100.42)
- docker run -d --name swarm-agent swarm join --advertise=10.0.100.42:2375 consul://10.0.100.62:8500
|
|
Client |
|
< < |
- docker pull cloudsuite/web-serving:faban_client
- docker inspect --format '' web_server
- docker run --net=my_net --name=faban_client cloudsuite/web-serving:faban_client [put IP address of step 2 in here]
|
> > | In the Client machine(IP:10.0.100.32)
- docker run -d --name swarm-agent swarm join --advertise=10.0.100.32:2375 consul://10.0.100.62:8500
Swarm Manager
Again in the Swarm Maganer Machine:
- First check all nodes are healthy : docker -H tcp://10.0.100.62:22222 info (Note: all nodes status should be equal to Health)
- docker -H tcp://10.0.100.62:22222 pull cloudsuite/web-serving:db_server
- docker -H tcp://10.0.100.62:22222 pull cloudsuite/web-serving:memcached_server
- docker -H tcp://10.0.100.62:22222 pull cloudsuite/web-serving:web_server
- docker -H tcp://10.0.100.62:22222 pull cloudsuite/web-serving:faban_client
- docker -H tcp://10.0.100.62:22222 run -dt -e constraint:node==cs-v3-web-backend-x64 --net=my_net --name=mysql_server cloudsuite/web-serving:db_server
- docker -H tcp://10.0.100.62:22222 run -dt -e constraint:node==cs-v3-web-memcached-x64 --net=my_net --name=memcache_server cloudsuite/web-serving:memcached_server
- docker -H tcp://10.0.100.62:22222 run -dt -e constraint:node==cs-v3-web-frontend-x64 --net=my_net --name=web_server cloudsuite/web-serving:web_server /etc/bootstrap.sh
|
| Running benchmark |
|
< < | Step 3 in client section runs benchmark but I can not change running time of benchmarking so I would like have faban client web page so I do following steps:
- docker -H tcp://10.0.100.62:22222 run -it --entrypoint=/bin/bash -e constraint:node==cs-v3-web-memcached-x64 --net=swarm-network --name=faban_client cloudsuite/web-serving:faban_client
|
> > | Now it for running benchmark just use following command in the swarm manager machine:
- Get IP address of web_server by : docker -H tcp://10.0.100.62:22222 inspect --format '' web_server
- Then run benchmark: docker -H tcp://10.0.100.62:22222 run --net=my_net --name=faban_client cloudsuite/web-serving:faban_client [put IP address of step 1 in here]
If you want to see faban(Elgg) web consol then used following steps instead of above two:
- docker -H tcp://10.0.100.62:22222 run -it --entrypoint=/bin/bash -e constraint:node==cs-v3-web-client-x64 --net=my_net --name=faban_client cloudsuite/web-serving:faban_client
|
|
- If not loggined automatically then login to faban client by docker -H tcp://10.0.100.62:22222 attach faban_client
|
|
< < |
- I run faban faban/master/bin/startup.sh
- Then cd /home/web20_benchmark/build
- java -jar Usergen.jar https://web_server:8080
- now I can see faban client web page however increasing steady time in it make "java.lang.Exception: Driver failed to complete benchmark run" error some people said it happened because of Openjdk 7 so I should switch to Oracle Java in client docker
- add-apt-repository ppa:webupd8team/java made "add-apt-repository: command not found" error so I used apt-get install software-properties-common python-software-properties
- sudo apt-get update
- apt-get install oracle-java8-installer
- used /usr/lib/jvm/java-8-oracle in java home field of faban client web page
- The error still remains.(I will work on it tommorrow)
|
> > |
- Then run faban: faban/master/bin/startup.sh
- Then cd /home/web20_benchmark/build
- java -jar Usergen.jar https://[put IP address of web_server in here]:8080
- Now use ifconfig to find IP address of faban_client(something like 172.18.0.2)
- Access to faban web consol by: https://[IP address of step 6]:9980
|