Новое в мезос / марафон. Как развернуть новый самоопределяемый докер?

Я новичок в мезо и марафоне.

У меня есть настройки, где в одной докер самоопределяется, а другой экземпляр MySQL сервера. Эти два связаны и передают информацию. Как мне развернуть это на мезо? Я использую один узел master и slave, настроенный в настоящее время.

2 ответа

Решение

Чтобы связать ваши контейнеры Docker, используйте Mesos-DNS. Я использую Playa Mesos в следующем, чтобы объяснить настройку.

Настройка Mesos-DNS на Playa проста: используйте образ mesosphere / mesos-dns и разверните его на Marathon, используя следующую спецификацию приложения:

{
"id": "mesos-dns",
"instances": 1,
"cpus": 1,
"mem": 512,
"cmd": "/mesos-dns -config=/config.json",
"container": {
  "type": "DOCKER",
  "docker": {
    "image": "mesosphere/mesos-dns:latest",
    "network": "HOST"
 },
 "volumes": [
      {
        "containerPath": "/config.json",
        "hostPath": "/etc/mesos-dns/config.js",
        "mode": "RW"
      }
    ]
  }
}

Со следующим config.js:

{
 "zk": "zk://127.0.0.1:2181/mesos",
 "refreshSeconds": 60,
 "ttl": 60,
 "domain": "mesos",
 "port": 53,
 "resolvers": ["10.0.2.3"],
 "timeout": 5,
 "email": "root.mesos-dns.mesos"
}

Кроме того, убедитесь, что resolv.conf имеет право входа в первую позицию:

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
nameserver 10.0.2.3
search net

Затем вы можете динамически обнаружить ваш сервис (в окне Vagrant) следующим образом:

dig _$APPID._tcp.marathon.mesos SRV

куда $APPID это идентификатор, который вы использовали для развертывания своего собственного образа Docker. Приведенная выше команда сообщит вам IP-адрес и порт, который Marathon назначил вашему приложению. Вы также можете использовать HTTP-API Mesos-DNS для обнаружения сервисов.

Примечание 1: DCOS поставляется с предустановленной системой Mesos-DNS, поэтому вы можете напрямую использовать ее для обнаружения служб.

Примечание 2: если вы столкнулись с проблемой, которую ваше приложение не понимает SRV записи, вы можете попробовать этот обходной путь: https://github.com/the-tetanus-clinic/srv-shim

Официальная документация по Marathon гласит, что в объекте параметров (внизу страницы документа) разрешены произвольные команды docker, поэтому вы можете использовать их для их подключения.

В качестве альтернативы Mesos-DNS кажется решением. Первое решение должно дать сбой, как только вы перейдете от одного хоста к нескольким хостам, и ваши отдельные контейнеры будут назначены на разные хосты.

Примечание: я тоже не очень разбираюсь в докере, но, похоже, это единственные варианты, которые я смог найти. Тем не менее, интеграция Docker в Mesos - это постоянный процесс, и интеграция Docker Swarm в Mesos в настоящее время находится в стадии разработки, поэтому эти проблемы, вероятно, мы решим в (надеюсь, ближайшем) будущем.

Другие вопросы по тегам