The virtual machine uses the ubuntu/trusty64 image
vagrant init ubuntu/trusty64
vagrant up
Install docker after startup, see https://docs.docker.com/engine/installation/linux/ubuntulinux/
# docker version
Version: 1.10.3
Pull the docker image of mesoscloud
docker pull mesoscloud/mesos-master
docker pull mesoscloud/mesos-slave
docker pull mesoscloud/marathon
docker pull mesoscloud/zookeeper
Create a docker network (the bridge network cannot be used for subsequent operations)
docker network create --subnet 172.18.0.1/16 mybridge
Start zookeeper1/2/3
# docker run -d -P --net=mybridge \
-e MYID=1 --ip 172.18.0.11 --name=zookeeper1 \
-e SERVERS = node-1, node-2, node-3 \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
--restart=always mesoscloud/zookeeper
# docker run -d -P --net=mybridge \
-e MYID=2 --ip 172.18.0.12 --name=zookeeper2 \
-e SERVERS = node-1, node-2, node-3 \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
--restart=always mesoscloud/zookeeper
# docker run -d -P --net=mybridge \
-e MYID=3 --ip 172.18.0.13 --name=zookeeper3 \
-e SERVERS = node-1, node-2, node-3 \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
--restart=always mesoscloud/zookeeper
run mesos-master1
# docker run -d -P --net mybridge \
--ip 172.18.0.21 --name mesos-master1 \
-e MESOS_HOSTNAME=172.18.0.21 -e MESOS_IP=172.18.0.21 \
-e MESOS_QUORUM= 1 \
-e MESOS_ZK = zk: // node-1: 2181, node-2: 2181, node-3: 2181 / mesos \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
--restart always mesoscloud/mesos-master
run mesos-master2
# docker run -d -P --net mybridge \
--ip 172.18.0.22 --name mesos-master2 \
-e MESOS_HOSTNAME=172.18.0.22 -e MESOS_IP=172.18.0.22 \
-e MESOS_QUORUM=2 \
-e MESOS_ZK = zk: // node-1: 2181, node-2: 2181, node-3: 2181 / mesos \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
--restart always mesoscloud/mesos-master
run mesos-slave1/2/3
# docker run -d -P --net mybridge \
--name mesos-slave1 --ip 172.18.0.31 \
-e MESOS_HOSTNAME=172.18.0.31 -e MESOS_IP=172.18.0.31 \
-e MESOS_MASTER=zk://node-1:2181,node-2:2181,node-3:2181/mesos \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
-v /sys/fs/cgroup:/sys/fs/cgroup \ ???
-v /var/run/docker.sock:/var/run/docker.sock \ ??? The docker in the container communicates with the host's container service, which is not suitable for this test
--privileged --restart always mesoscloud/mesos-slave
# docker run -d -P --net mybridge \
--name mesos-slave2 --ip 172.18.0.32 \
-e MESOS_HOSTNAME=172.18.0.32 -e MESOS_IP=172.18.0.32 \
-e MESOS_MASTER=zk://node-1:2181,node-2:2181,node-3:2181/mesos \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
-v /sys/fs/cgroup:/sys/fs/cgroup \
-v /var/run/docker.sock:/var/run/docker.sock \
--privileged --restart always mesoscloud/mesos-slave
# docker run -d -P --net mybridge \
--name mesos-slave3 --ip 172.18.0.33 \
-e MESOS_HOSTNAME=172.18.0.33 -e MESOS_IP=172.18.0.33 \
-e MESOS_MASTER=zk://node-1:2181,node-2:2181,node-3:2181/mesos \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
-v /sys/fs/cgroup:/sys/fs/cgroup \
-v /var/run/docker.sock:/var/run/docker.sock \
--privileged --restart always mesoscloud/mesos-slave
run marathon
# docker run -d --net mybridge \
--name marathon --ip 172.18.0.41 \
-e MARATHON_HOSTNAME=172.18.0.41 \
-e MARATHON_HTTPS_ADDRESS=172.18.0.41 \
-e MARATHON_HTTP_ADDRESS=172.18.0.41 \
--add-host=node-1:172.18.0.11 --add-host=node-2:172.18.0.12 --add-host=node-3:172.18.0.13 \
-e MARATHON_MASTER = zk: // node-1: 2181, node-2: 2181, node-3: 2181 / mesos \
-e MARATHON_ZK = zk: // node-1: 2181, node-2: 2181, node-3: 2181 / marathon \
--restart always mesoscloud/marathon
access control interface
Vagrant uses the default port mapping (Forwarded port) method, Vagrantfile plus
config.vm.network "forwarded_port", guest: 5050, host: 5050
config.vm.network "forwarded_port", guest: 8080, host: 5051
Then install the nginx reverse proxy in the virtual machine to docker
server {
listen 5050;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://172.18.0.21:5050;
}
}
server {
listen 8080;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://172.18.0.41:8080;
}
}
Access mesos and marathon in host
http://127.0.0.1:5050
http://127.0.0.1:5051
Deploy tasks via marathon
Click the "+New App" button, a dialog box will pop up, enter Command: python -m SimpleHTTPServer 9977, Instances: 2
Start a web program, 2 instances
EVERYTHING
Deploy docker image task? (There is docker in mesoscloud/mesos-slave, using multiple virtual machines?)
haproxy ?
多 months-master