在 docker-compose 文件中使用 Weave 网络
Using Weave net in docker-compose file
我有一个 docker 图像,其中包含 Hadoop、Mesos、Marathon 并且 Zookeeper.I 将该图像分布在三个物理节点中。为了运行那张图,我用Zookeeper、Mesos、Marathon三个服务写了一个docker组合。我在撰写文件中使用 WEAVE_CIDR 编织 IP。我为三个服务定义了相同的 IP 编织。当我 运行 撰写文件时,Zookeeper 运行 很好,但是由于重复的 IP 编织,我收到 运行ning Mesos 的错误。因此,我尝试将三项服务合并为一项服务,以便为其中三项仅使用一个 IP 编织。我的新 docker 撰写如下:
version: '3.7'
services:
zookeeper:
image: hadoop_marathon_mesos_flink_2
command: bash -c "echo zookeeper;
/home/zookeeper-3.4.14/bin/zkServer.sh restart;echo mesos;
sleep 30;/home/mesos-1.7.2/build/bin/mesos-master.sh;
echo marathon;/home/marathon-1.7.189-48bfd6000/bin/marathon"
privileged: true
network_mode: "bridge"
environment:
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 10
ZOOKEEPER_SYNC_LIMIT: 5
WEAVE_CIDR: 10.32.0.1/12
ZOOKEEPER_SERVERS: 10.32.0.1:2888:3888
MESOS_CLUSTER: MMM
LIBPROCESS_IP: 10.32.0.1
MESOS_QUORUM: 1
MESOS_LOG_DIR: /var/log/mesos
MESOS_WORK_DIR: /var/run/mesos
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins
HOSTNAME: 10.32.0.1
MARATHON_ZK: zk://10.32.0.1:2181/marathon
MARATHON_MASTER: zk://10.32.0.1:2181/mesos
MESOS_NATIVE_JAVA_LIBRARY: /usr/local/lib/libmesos.so
MARATHON_HTTP_PORT: 8080
Mesos_HTTP_PORT: 5050
expose:
- 2181
- 2888
- 3888
- 5050
- 4040
- 7077
- 8080
ports:
- 2181:2181
- 2888:2888
- 3888:3888
- 5050:5050
- 4040:4040
- 7077:7077
- 8080:8080
networks:
default:
external:
name: weave
当我运行docker-compose up时,Zookeeper和Mesos运行没有报错;但马拉松不是 运行。我想要 Marathon 运行 就在 Mesos 之后,但它没有。请任何人告诉我我做错了什么?
如有任何帮助,我们将不胜感激。
问题已解决。我在主节点中使用了这个 docker 撰写文件。注意在运行ning docker compose 运行 weave expose 三个节点打开Marathon 和Mesos UI。
version: '3.7'
services:
zookeeper:
image: hadoop_marathon_mesos_flink_2
command: >
sh -c "echo zookeeper &&
/home/zookeeper-3.4.14/bin/zkServer.sh restart &&
sleep 30 && /home/mesos-1.7.2/build/bin/mesos-master.sh
--ip=10.32.0.1 --hostname=10.32.0.1 --roles=marathon,flink |
/home/marathon-1.7.189-48bfd6000/bin/marathon --master 10.32.0.1:5050
--zk zk://10.32.0.1:2181/marathon --hostname 10.32.0.1
--webui_url 10.32.0.1:8080 --logging_level debug"
privileged: true
network_mode: "bridge"
environment:
WEAVE_CIDR: 10.32.0.1/12
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 10
ZOOKEEPER_SYNC_LIMIT: 5
ZOOKEEPER_SERVERS: 10.32.0.1:2888:3888
MESOS_CLUSTER: MMM
LIBPROCESS_IP: 10.32.0.1
MESOS_QUORUM: 1
MESOS_LOG_DIR: /var/log/mesos
MESOS_WORK_DIR: /var/run/mesos
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins
HOSTNAME: 10.32.0.1
MESOS_NATIVE_JAVA_LIBRARY: /usr/local/lib/libmesos.so
MESOS_DOCKER_SOCKET: /var/run/weave/weave.sock
expose:
- 2181
- 2888
- 3888
- 5050
- 4040
- 7077
- 8080
ports:
- 2181:2181
- 2888:2888
- 3888:3888
- 5050:5050
- 4040:4040
- 7077:7077
- 8080:8080
networks:
default:
external:
name: weave
此外,我 运行 这个 docker 在从属节点中组成:
version: '3.7'
services:
slave:
image: hadoop_marathon_mesos_flink_2
command: sh -c "rm -f /var/run/mesos/meta/slaves/latest &&
/home/mesos-1.7.2/build/bin/mesos-slave.sh --master=10.32.0.1:5050
--port=5051 --work_dir=/var/run/mesos --systemd_enable_support=fa$
privileged: true
network_mode: "bridge"
environment:
WEAVE_CIDR: 10.32.0.2/12
MESOS_RESOURCES: ports(*):[11000-11999]
LIBPROCESS_IP: 10.32.0.2
MESOS_HOSTNAME: 10.32.0.2
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins #also in Dockerfile
MESOS_LOG_DIR: /var/log/mesos
MESOS_WORK_DIR: /var/run/mesos
MESOS_LOGGING_LEVEL: INFO
MESOS_DOCKER_SOCKET: /var/run/weave/weave.sock
expose:
- 5051
ports:
- 5051:5051
networks:
default:
external:
name: weave
希望有用。
我有一个 docker 图像,其中包含 Hadoop、Mesos、Marathon 并且 Zookeeper.I 将该图像分布在三个物理节点中。为了运行那张图,我用Zookeeper、Mesos、Marathon三个服务写了一个docker组合。我在撰写文件中使用 WEAVE_CIDR 编织 IP。我为三个服务定义了相同的 IP 编织。当我 运行 撰写文件时,Zookeeper 运行 很好,但是由于重复的 IP 编织,我收到 运行ning Mesos 的错误。因此,我尝试将三项服务合并为一项服务,以便为其中三项仅使用一个 IP 编织。我的新 docker 撰写如下:
version: '3.7'
services:
zookeeper:
image: hadoop_marathon_mesos_flink_2
command: bash -c "echo zookeeper;
/home/zookeeper-3.4.14/bin/zkServer.sh restart;echo mesos;
sleep 30;/home/mesos-1.7.2/build/bin/mesos-master.sh;
echo marathon;/home/marathon-1.7.189-48bfd6000/bin/marathon"
privileged: true
network_mode: "bridge"
environment:
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 10
ZOOKEEPER_SYNC_LIMIT: 5
WEAVE_CIDR: 10.32.0.1/12
ZOOKEEPER_SERVERS: 10.32.0.1:2888:3888
MESOS_CLUSTER: MMM
LIBPROCESS_IP: 10.32.0.1
MESOS_QUORUM: 1
MESOS_LOG_DIR: /var/log/mesos
MESOS_WORK_DIR: /var/run/mesos
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins
HOSTNAME: 10.32.0.1
MARATHON_ZK: zk://10.32.0.1:2181/marathon
MARATHON_MASTER: zk://10.32.0.1:2181/mesos
MESOS_NATIVE_JAVA_LIBRARY: /usr/local/lib/libmesos.so
MARATHON_HTTP_PORT: 8080
Mesos_HTTP_PORT: 5050
expose:
- 2181
- 2888
- 3888
- 5050
- 4040
- 7077
- 8080
ports:
- 2181:2181
- 2888:2888
- 3888:3888
- 5050:5050
- 4040:4040
- 7077:7077
- 8080:8080
networks:
default:
external:
name: weave
当我运行docker-compose up时,Zookeeper和Mesos运行没有报错;但马拉松不是 运行。我想要 Marathon 运行 就在 Mesos 之后,但它没有。请任何人告诉我我做错了什么?
如有任何帮助,我们将不胜感激。
问题已解决。我在主节点中使用了这个 docker 撰写文件。注意在运行ning docker compose 运行 weave expose 三个节点打开Marathon 和Mesos UI。
version: '3.7'
services:
zookeeper:
image: hadoop_marathon_mesos_flink_2
command: >
sh -c "echo zookeeper &&
/home/zookeeper-3.4.14/bin/zkServer.sh restart &&
sleep 30 && /home/mesos-1.7.2/build/bin/mesos-master.sh
--ip=10.32.0.1 --hostname=10.32.0.1 --roles=marathon,flink |
/home/marathon-1.7.189-48bfd6000/bin/marathon --master 10.32.0.1:5050
--zk zk://10.32.0.1:2181/marathon --hostname 10.32.0.1
--webui_url 10.32.0.1:8080 --logging_level debug"
privileged: true
network_mode: "bridge"
environment:
WEAVE_CIDR: 10.32.0.1/12
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 10
ZOOKEEPER_SYNC_LIMIT: 5
ZOOKEEPER_SERVERS: 10.32.0.1:2888:3888
MESOS_CLUSTER: MMM
LIBPROCESS_IP: 10.32.0.1
MESOS_QUORUM: 1
MESOS_LOG_DIR: /var/log/mesos
MESOS_WORK_DIR: /var/run/mesos
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins
HOSTNAME: 10.32.0.1
MESOS_NATIVE_JAVA_LIBRARY: /usr/local/lib/libmesos.so
MESOS_DOCKER_SOCKET: /var/run/weave/weave.sock
expose:
- 2181
- 2888
- 3888
- 5050
- 4040
- 7077
- 8080
ports:
- 2181:2181
- 2888:2888
- 3888:3888
- 5050:5050
- 4040:4040
- 7077:7077
- 8080:8080
networks:
default:
external:
name: weave
此外,我 运行 这个 docker 在从属节点中组成:
version: '3.7'
services:
slave:
image: hadoop_marathon_mesos_flink_2
command: sh -c "rm -f /var/run/mesos/meta/slaves/latest &&
/home/mesos-1.7.2/build/bin/mesos-slave.sh --master=10.32.0.1:5050
--port=5051 --work_dir=/var/run/mesos --systemd_enable_support=fa$
privileged: true
network_mode: "bridge"
environment:
WEAVE_CIDR: 10.32.0.2/12
MESOS_RESOURCES: ports(*):[11000-11999]
LIBPROCESS_IP: 10.32.0.2
MESOS_HOSTNAME: 10.32.0.2
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: 5mins #also in Dockerfile
MESOS_LOG_DIR: /var/log/mesos
MESOS_WORK_DIR: /var/run/mesos
MESOS_LOGGING_LEVEL: INFO
MESOS_DOCKER_SOCKET: /var/run/weave/weave.sock
expose:
- 5051
ports:
- 5051:5051
networks:
default:
external:
name: weave
希望有用。