Aleksey
Менеджеров может быть больше одного
Денис
так ?
так
Денис
только как сказал алексей ) у тебя для нормальной работы сварма нужно 3 менеджера
Denis
исходя из того что чем больше рафт тем он медленее сходится, и в свою очередь ноды могут чаще из строя выходить, не будет ли у нас проблем с доступностью сервиса потому что периодически у нас там "выборы" идут
Денис
и они между собой решают кто главный
Денис
выборы там идут без митингов агитации и прочего ) решается все за милисекунды ) этож не россия
Денис
сервис в это время не падает
Денис
просто меняется главный менеджер
Denis
мммм
Денис
просто в это время нельзя управлять кластером / скейлить добавлять ноды
Denis
Я как бы понимаю что выборы ходят между 3мя нодами которые 2 ричибл и одна настоящий менеджер
Денис
но ты врят ли сможешь это заметить при штатной ситуации )
Денис
ну да ) а сервису запущенному пох ) он уже работает и работает
Денис
порты открыты, запросы принимаются
Denis
тоесть мы должны сами контролить доступность нод менеджеров и докидывать их
Denis
или промоутить до менеджера
Денис
нет
Денис
менеджеры сами решают кто главный
Денис
но твой сервис работать не перестает
Денис
доступность видят оставщиеся менеджеры
Денис
если падает нода, остальные менджеры быстро решают кто главный и понимают сервисы что были на упавшей ноде
Денис
допустим у меня 30 парсеров по 10 на ноду, одна выпала, стало 20 , проголосвали, подняли еще по 5 инстансов до 30
Денис
это автоматически
Денис
проблема в том , что когда нода поднимается и приходит в себя ) на нее нагрузка не размажется
Денис
и она не сможет взять назад менеджера
Денис
тоесть будет пустая пока ты не сделаешь service scale и вручную не отдаешь ей права главного
Denis
менеджеры сами решают кто главный
пока их есть нужное вол-во
Денис
даже один решит что он главный когда никого не станет )
Denis
а когда и его не станет ?
Денис
то иди мыль зад ) и к директору
Denis
тоесть на самом деле то, что я и сказал, мы должны сами контролировать доступность менеджеров и докидывать их при необходимости.
Денис
что у тебя случиться что упадут сразу 3 менеджера ? ну сделать 4 в разных ДЦ
Денис
менеджер может просто управлятьи не принимать контейнеры
Denis
да дело не в "упадут" а в "хочу сворм на спот инстансах"
Денис
кроилово ) ведет к поподалову
Денис
никто не мешает тебе каждую ноду делать менеджером
Denis
долго рафт сходится будет, не ?
Денис
менеджер так же исполняет контейнеры
Денис
я бы сделал так , взял инстанс микро
Денис
поставил туда главного
Denis
микро плохо, там сеть уг.
Aleksey
Пчол, копай сам. Видишь же пациент в другом уровне абстракции.
Denis
у нас тут зк покрутились на микро.... наелись...
Aleksey
Ну пчол про конкретные технологии а ты про 'сам'
Aleksey
Похоже на разговор менеджера и технаря
Денис
:) ну я пытался как мог
Denis
я просто думал сворм как раз такой типа сам двигается, сам скейлится, сам реаллокейтится
Denis
а сейчас сижу доку читаю и как то там не очень он самостоятельный, и в "диком" облаке аля спот инстансы где половина нод могут взять и сдохнуть разом, без посторонней помощи походу сворм не выживет
Denis
Похоже на разговор менеджера и технаря
А ты кстати сворм гоняешь ?
Aleksey
Хочу. Но пока не могу
Aleksey
И к меня точно нет спотинстансов
Denis
ну ясики.
Денис
а сейчас сижу доку читаю и как то там не очень он самостоятельный, и в "диком" облаке аля спот инстансы где половина нод могут взять и сдохнуть разом, без посторонней помощи походу сворм не выживет
тебе надо контролировать что бы хотя бы 1 менеджер жил всегда, я бы его просто для управлния посадил на микро , а всех остальных на спорты
Денис
микро у тебя точно не умрет
Aleksey
Хзхзхз
Aleksey
Пчол, сколько спотов?
Денис
в сравнении со спотами он маклауд
Aleksey
Ибо больше нод больше памяти
Aleksey
Ну и делов тоже больше
Aleksey
Планирование скейла, расчеты всякие
Denis
Пчол, сколько спотов?
а я вот сейчас выбираю какие бы инстансы подошли..
Denis
порядка 30 получается
Denis
30-35
Joe
Коллеги прошу помощи, я начинающий можете тапочком похлопать 😢 задали лабу сделать не могу найти ошибку при сборке?
Joe
Joe
FROM node:7-onbuild RUN mkdir -p /docker WORKDIR /docker RUN git clone https://github.com/acc-cloudaccess/app.git #COPY git clone https://github.com/acc-cloudaccess/app.git RUN npm install EXPOSE 8080 CMD [ "npm", "start" ]
Joe
при сборке контейнера получаю Step 1/1 : COPY package.json /usr/src/app/ lstat package.json: no such file or directory
Игорь
при сборке контейнера получаю Step 1/1 : COPY package.json /usr/src/app/ lstat package.json: no such file or directory
npm пытается установить пакеты из /usr/src/app/package.json в Dockerfile этого пути нет, значит это делает образ node:7-onbuild Просто скопируйте файлы не в /docker а в /usr/src/app
Игорь
RUN npm install можно удалить
Joe
А как это описать?
Joe
А как это сделать в Dockerfile?
Игорь
А как это сделать в Dockerfile?
Как я понял, образ node:7-onbuild полностью автоматический. Достаточно в Dockerfile две строки: FROM node:7-onbuild EXPOSE 8080 и собираем контейнер docker build . Я не тестировал, не могу уверенно сказать что будет работать
Joe
Просто мне в лабе препод вот, что написал. Необходимо организовать тестовый связанный сервис (web-сервер + app-сервер) на базе двух Docker контейнеров. Всю работу выполнить исключительно при помощи Dockerfile и Docker compose. Предоставить результат в виде: - Dockerfile для app-сервера - Dockerfile для web-сервера - Docker compose для итогового связанного сервиса Пункты: 1. Необходимо организовать app-сервер (контейнер Docker) на базе платформы nodejs: - в качестве базового образа docker использовать официальный образ «node:7-onbuild» - код для app-сервера («Hello World») взять из публичного git-репозитория https://github.com/acc-cloudaccess/app.git - app-сервер должен быть доступен только внутри сети контейнеров 2. Необходимо организовать web-сервер (контейнер Docker) на базе nginx: - в качестве базового образа docker использовать официальный образ «nginx» - настроить nginx таким образом, чтобы он принимал http трафик на порт 80 и осуществлял перенаправление всего трафика на app-сервер. Допускается использование конфигурационного файла для настройки nginx совместно с Dockerfile. - web-сервер должен быть доступен снаружи сети контейнеров по порту 9000 3. Необходимо организовать связанный сервис из полученных контейнеров Docker на базе Docker compose: - web-сервер должен быть доступен снаружи сети контейнеров по порту 9000 - контейнер web-сервера должен стартовать только при условии доступности app-сервера
Игорь
Я до Docker compose еще не дошел.
Игорь
А насчет сервера, вот эту сборку я тестировал. https://github.com/jwilder/nginx-proxy На автомате привязывает домены к контейнерам. Запускам контейнер с сервером docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy затем второй контейнер запускаем с параметром -e VIRTUAL_HOST=foo.bar.com Где foo.bar.com - доменное имя. Больше делать ничего не нужно. Так же в репозитории есть пример с Docker compose.
Joe
Кстати убрал все и оставил как ты говорил две строчи в Dockerfile ошибка повтарилась
Игорь
что за ошибка?
Игорь
> Step 1/1 : COPY package.json /usr/src/app/ Эта чтоль?