Использование Weave net в файле docker-compose - PullRequest
0 голосов
/ 08 апреля 2019

У меня было изображение докера с Hadoop, Mesos, Marathon и Zookeeper. Я распространил это изображение по трем физическим узлам. Чтобы запустить этот образ, я написал докер с тремя службами Zookeeper, Mesos, Marathon. Я использовал WEAVE_CIDR для переплетения IP в файле compose. Я определил один и тот же IP-адрес для трех сервисов. Когда я запустил файл компоновки, Zookeeper работал нормально, но я получил ошибку при запуске Mesos из-за повторяющегося переплетения IP-адресов. Итак, я попытался объединить три сервиса в один сервис, чтобы использовать только один IP-адрес для трех из них. Мой новый docker compose выглядит следующим образом:

 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 запускаются без ошибок; но марафон не запускается. Я хочу, чтобы Марафон проходил сразу после Месоса, но это не так. Пожалуйста, кто-нибудь скажет мне, что я делаю не так?

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 10 апреля 2019

Проблема решена. Я использовал этот файл компоновки в мастере. Будьте внимательны перед запуском docker compose, запустите weave expose на трех узлах, чтобы открыть пользовательский интерфейс Marathon и Mesos.

 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 compose в подчиненных узлах:

 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

Надеюсь, это было полезно.

...