Dmytro
затем что у нас есть логическое приложение у которого есть статика?
Leo
так может не через fpm? //s3 какое нибудь?
Dmytro
хорошо бы но не всегда возможно
Dmytro
а в чем профит от двух контейнеров в поде вместо одного? скейлить раздельно их нельзя, в случае ООМ одного рестартанется весь под
Dmytro
и т.д.
Dmytro
а гемора с настройкой нжинкс и пхп фпм больше
Leo
статика в контейнер как прилетает?
Dmytro
два пода? в моем случае будет 1 под с 1 контейнером
A
>>в случае ООМ одного рестартанется весь под почему?
Dmytro
статика в образ попадает во время его сборки на CI
Leo
статика в образ попадает во время его сборки на CI
ох, звучит прекрасно, хотя возможно я кейса не знаю)
Сергей
Нет такого нигде
процесс не сам по себе один процесс, я имею в виду, что одно приложение 1 nginx, 1 fpm, 1 apache
Сергей
nginx + fpm это уже не контейнер, это два контейнера
Leo
nginx + fpm это уже не контейнер, это два контейнера
вот вроде надо два, а когда нужно подебажить приложение лучше 1)
Etki
статику отдавать не умеет сам
То есть приложение работает только тогда, когда отдает статику?
Leo
а что там дебажить то
Приложение) что)
Leo
Пару раз были специфичные кейсы которые не везде проявляются
A
Нет такого нигде
на docs.docker.com есть, в Best practices for writing Dockerfiles Each container should have only one concern. Limiting each container to one process is a good rule of thumb, but it is not a hard and fast rule.
Dmytro
>>в случае ООМ одного рестартанется весь под почему?
в этом конкретном случае если к пхп-фпм контейнеру придет оом то нжинкс readiness probe зафейлится и его тоже кубелет рестартанет. Конечно можно сделать readiness probe у нжинкса чтобы он не ходил в пхп-фпм но это же будет очень плохо
Dmytro
на docs.docker.com есть, в Best practices for writing Dockerfiles Each container should have only one concern. Limiting each container to one process is a good rule of thumb, but it is not a hard and fast rule.
https://docs.docker.com/config/containers/multi-service_container/ > It is generally recommended that you separate areas of concern by using one service per container. That service may fork into multiple processes (for example, Apache web server starts multiple worker processes). It’s ok to have multiple processes, but to get the most benefit out of Docker, avoid one container being responsible for multiple aspects of your overall application.
Dmytro
как-то так
Dmytro
т.е. если у меня пхп веб приложение (например блог) то статика вполне себе логическая часть приложения блога, и поэтому мне проще засунуть нжинкс в контейнер к пхп-фпм чтобы эту статику можно было отдавать. Да, можно сделать 2 контейнера в одном поде но все равно нужно еще будет засунуть процесс ньюрелик демона в контейнер к пхп-фпм и там один фиг будет не один процесс
A
ну да в случае php/nginx можно сказать, что это one concern, если так хочется на архитектурный фейл не тянет в случае 1 контейнера
Dmytro
🤝
A
да меня удивило “нет такого нигде”
A
где-то всё же есть, например, в лучших практиках
Sash
Нет жёсткого правила или то что несколько процессов это плохо
Sash
Если интересно как нибудь возьмите контейнеры того же гугла которые крутятся у них в кубике и посмотрите что там есть
Dmytro
хорошо быть богатым и здоровым
Dmytro
конечно же у гугла написанные под контейнеры приложения бегут по одному в контейнере
Dmytro
а мы тут про реальный мир
Sash
Нет не по одному
Sash
И это реальный мир
Sash
Просто надо понимать что к чему и правильно его готовить
Sash
Не умеешь не понимаешь делай как говорят
Sash
Но гуд руле не означает что всё остальное вери бэд
Sash
Мир ни чёрный и не белый это если грубо
Sash
Имхо
A
у меня нет php-fpm сейчас, но если бы был, я бы хотел метрики и логи с двух контейнеров, а не с одного с supervisord или чем там
Sash
Ты прав
Сергей
Какой прок с контейнеров в таком случае, если запихивать все в один?
Sash
Но у гугла используется супервизор как и у многих других
Sash
Какой прок с контейнеров в таком случае, если запихивать все в один?
Нет смысла запихивать пхп и нжинкс в один но помимо их в контейнере может быть супервизор лагер аунтификатор сервисмеш коннектор метрика посыльшик хелсчекер и тд
Sash
Сергей иногда проще засунуть в один как в твоём случае что бы запустить проверить гипотизу и потом разнести по фенхую потому что сразу всё красиво не всегда получается но время убить можно много а итеративно задачу проще порешать
Сергей
Слишком много терминов насыпал. Часть это считай плагины к сервису, часть это обязанность докерфайла, а часть должна быть прибита снаружи
Dmytro
у меня нет php-fpm сейчас, но если бы был, я бы хотел метрики и логи с двух контейнеров, а не с одного с supervisord или чем там
а что помешает собрать метрики когда в контейнере больше одного процесса и супервизор?
Sash
Ты не сделаешь всё сразу хорошо
Sash
Что бы понять рекурсию надо понять рекурсию
A
а что помешает собрать метрики когда в контейнере больше одного процесса и супервизор?
я про те, которые в cadvisor ничего не мешает, но они будут другие
Sash
а что помешает собрать метрики когда в контейнере больше одного процесса и супервизор?
Кстати говоря если взять нжинкс да и пхп у них мастер процесс и воркеры как минимум уже не один процесс 😱
Etki
потому что не шмогли в треды 😏😏😏
Vadim
боюсь что изменяет
Есть примета - несколько процессов в контейнере - к зомбиапокалипсису
Dmytro
Кстати говоря если взять нжинкс да и пхп у них мастер процесс и воркеры как минимум уже не один процесс 😱
а если по феншую^W по бестр практисам несколько пулов сделать так вообще 😱
Sash
Супервизор их прибивает обычно это его задача
Vadim
а что помешает собрать метрики когда в контейнере больше одного процесса и супервизор?
И что эти метрики будут значить, сумму температур по больнице?
Sash
Мы собираем по всем процессам которым нужно в контейнере и нет проблем
Сергей
Мы собираем по всем процессам которым нужно в контейнере и нет проблем
И как понять что из условно двух процессов жрет?
Сергей
Сервисов*
Sash
Метрики слать каждые 15-30 сек из контенейра или выгребать прометеем кому как удобней
Sash
Представь у тебя ещё нет кубернетеса но очень туда охото заехать как есть
Etki
ОхотА. Простите за педантичность.
Vadim
Докеркомпоуз умер, но оставил привычки?
Sash
Ранчер 😅
Сергей
Метрики слать каждые 15-30 сек из контенейра или выгребать прометеем кому как удобней
У тебя в контейнере два сервиса. Шлешь метрики ты со всего контейнера. Как понять какой из сервисов начал жрать больше нормы?
Sash
Сервисов оч много просто взмахом одной руки оно не превращается в кубернетес
Сергей
Докеркомпоуз умер, но оставил привычки?
Можно подумать докеркомпоз заставляет создавать монструозные контейнеры
Sash
У тебя в контейнере два сервиса. Шлешь метрики ты со всего контейнера. Как понять какой из сервисов начал жрать больше нормы?
Метрики прилетают в графит у каждого сервиса есть паспорт значений если графит видит что обнормал шлёт Алерт идёшь в графану смотришь графики кто когда почему
Dmytro
У тебя в контейнере два сервиса. Шлешь метрики ты со всего контейнера. Как понять какой из сервисов начал жрать больше нормы?
а что тебе даст знать который из? Это же одно приложение, либо оно работает либо нет. В случае пхп я и так знаю что 99% что жрет пхпфпм, но это знание тоже ничего не даст. Нужная инструментация на уровне языка или приложения чтобы выявить те запросы на которых память течет (тот же ньюрелик ничем тут не поможет)
Dmitry
1 nginx + 2 fpm, если у вас неизлечимая проблема с текущей памятью, в итоге OOM не будет приводить к падению сервиса