Новое в мезос / марафон. Как развернуть новый самоопределяемый докер?
Я новичок в мезо и марафоне.
У меня есть настройки, где в одной докер самоопределяется, а другой экземпляр 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 в настоящее время находится в стадии разработки, поэтому эти проблемы, вероятно, мы решим в (надеюсь, ближайшем) будущем.