Cron в Docker

AmdY

Пью пиво
Команда форума
Насколько идеологически допустимо cron запускать в контейнере с самим приложением или обязательно нужно поднимать отдельный контейнер.
 

fixxxer

К.О.
Партнер клуба
Если у тебя запущен _единственный_ инстанс с приложением, то все равно - но наверное вообще докер не очень-то нужен.

А если у тебя пачка инстансов - то где именно крон запускать-то? С отдельным контейнером намного проще.
 

AmdY

Пью пиво
Команда форума
В том и беда, что инстансов несколько. И приложение выкачивает переодически обновления для переводов. И тут получается либо скрипт кроном дёргать на каждом инстансе, либо городить костыли с работой транслятора через редис-базу.
 

Adelf

Administrator
Команда форума
Если это те переводы, о которых я подумал, то у нас на одном проекте был сервис(может даже микро :)) переводов. И всякие обновления выкачивал он.
А те приложения, которым были нужны переводы имели интеграцию с ним. Т.е. получали оповещения, когда переводы для запрашиваемых материалов пришли ну или посылали заявки на перевод.
 
Последнее редактирование:

jonjonson

Охренеть
Можно внешним кроном воспользоваться. Просто создать скрипт энтри поинт в контейнере.
 

fixxxer

К.О.
Партнер клуба
А почему редис костыли? Костыли это как раз крон.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Тему не так давно обсуждали. Крон в докере живет очень плохо. Контейнеры созданы, чтобы каждая задача сама выполнялась постоянно, без пинков со стороны.

Никто не запускает контейнеры по одному, у всех или k8s, или стек. Берем пачку виртуалок, и на них разворачиваемся.
А логи собираем все вместе. Но с кроном логи процессов в лог сервиса не попадают.
Можно сделать общий сторонний лог-сервер, но морочно. Можно докер-в-докере - чуть менее морочно, но с непривычки пугает.
Логи в монтированные папки делать нельзя - middleware должен быть stateless by design. Реально удобно, когда сервис можно в любой момент выключить без последствий, и стартовать сколько угодно новых, а кто-то сам за меня делает discovery. А собирать логи, разбросанные по серверам, будет сложно.

Можно написать маленький менеджер, который живет в своем контейнере, запускает задачу по расписанию и отправляет логи в stdout, чтобы они не пропали. В принципе, тут час работы, включая заварить чай и выпить когда остынет. Но это ж надо от привычки отказаться.
 

AmdY

Пью пиво
Команда форума
А почему редис костыли? Костыли это как раз крон.
Ну странно же таскать по сети из редиса то, что могло бы лежать в файликах на инстансе, пусть и с дублированием. Да и по перфомансу разница процентов 35. Ты не первый кто говорит что в этом моменте я не прав, потому и решил спросить, но мне вся эта концепция в голову не хочет влазить.
 

WMix

герр M:)ller
Партнер клуба
Насколько идеологически допустимо cron запускать в контейнере с самим приложением или обязательно нужно поднимать отдельный контейнер.
если только вопрос идеологии, то я запускал бы в отдельном.
 

AmdY

Пью пиво
Команда форума
Это из разряда двойных кавычек. 35 по сравнению с чем? По крону обычно запускаются довольно тяжёлые штуки, этот редис туда не добавит ничего.
Выше писал что там переводы, вытаскиваются, складываются в редис, затем переводы таскаются из редиса на каждый запрос к веб апи.
Есть ещё кейсы, вроде прогретие кэша, это опять же либо крон на инстансе, либо отказ от локальной фс и таскание всего по сети.
 

fixxxer

К.О.
Партнер клуба
Выше писал что там переводы, вытаскиваются, складываются в редис, затем переводы таскаются из редиса на каждый запрос к веб апи.
Есть ещё кейсы, вроде прогретие кэша, это опять же либо крон на инстансе, либо отказ от локальной фс и таскание всего по сети.
Что мешает кэшировать на локальной фс?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Ну странно же таскать по сети из редиса то, что могло бы лежать в файликах на инстансе, пусть и с дублированием. Да и по перфомансу разница процентов 35. Ты не первый кто говорит что в этом моменте я не прав, потому и решил спросить, но мне вся эта концепция в голову не хочет влазить.
переводы, вытаскиваются, складываются в редис, затем переводы таскаются из редиса на каждый запрос к веб апи.
Я запутался, что странно-то? Таскать из редиса потому что таскаете из редиса?

OK, история про локальные файлы. Сервис - пять девяток, подписка $1m/mo+. SAAS, виртуалки, все очень динамично размазано, сплошное дублирование, масштабирование, и общий raid на виртуалки для middleware/api.
А как иначе? Локальные диски в стандарт надежности уровня 10го рейда не попадают. Сервера с 64 ядрами и 256 гб оперативки, на каждом пачка виртуалок, локальные винты - только для старта базовой OS.
В рейде выпадает 2 винта одновременно. Риторический вопрос: сколько дней лежал сервис?

А не надо считать, что локальный диск подключен к виртуалке по sata-кабелю - это такой же сетевой девайс, как и сервер с redis, причем spof, про который забывают, и если у тебя сервис stateful с локальными данными, при отпадании storage ты попал.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Замените редис на монго, получите те же штаны в профиль…
 

fixxxer

К.О.
Партнер клуба
Ну, кстати, смотря где. Если сервис заточен под докер, то может быть и локальный диск - все равно пофиг, если сдохнет.
На всяких AWS EC2, там да, сетевые девайсы обычно.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Локальные диски ставятся на DB-сервера. Они дороже, зато репликация получается полноценная.
Multitenant - распределить по времени суток под посещаемость middleware и backend-расчеты, снизить капитальные затраты.
Это имеет смысл почти для всех проектов.
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
У AWS в их Авроре фиг знает что, но похоже на сетевые диски. Рид-онли инстансы там есть, но репликация там делается не средствами мыскля (видимо, поблочно). Ну оно и понятно - нафига им разваливающаяся репликация. :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@fixxxer начни с того, что в AWS Aurora SLA uptime 99.0%. Когда лежат - небольшую скидочку делают.
Это как у "сервера" на балконе с бекапом к однокурснику.
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Зато автоматический failover работает!

Да я вообще не знаю, почему в штатах все так AWS любят. Каждый день матерюсь.
 
Сверху