mesos + marathon + zookeeper in one vagrant

 

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 

 

 

 

 

 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326972876&siteId=291194637