LINUX.ORG.RU
ФорумAdmin

Кеширование и отдача статики в докерных микросервисах

 


0

2

Доброго времени!

Есть проект, у которого фронт на нжинксе балансируется в амазоне. Нжинксы проксируют трафик на кучу микросервисов в докерах. Докеры живут в ранчере. Микросервисы представляют собой веб-сервисы на ноде. В проектах на ноде есть статика. Организован процесс CI/CD в ранчер. Т.е имиджи микросервисов по пинку обновляются, контейнеры как положено перезапускаются и т.п. Как минимум несколько раз в неделю релизится каждый из сервисов, т.е система такая живенькая. Статика живет в собранном имидже микросервиса.

Очень желательно эту статику кешировать и быстренько отдавать.

Совсем суперской была бы возможность как-то передать эту статику на фронтовые нжинксы, но не могу догнать как это сделать.

Сейчас запускаю на каждый сервис по сути 3 контейнера (в докер-композе): один собственно сервис, один с нжинксом + еще один в качестве sidekick (в терминах ранчера, это обычный Data-only container, с которого делается volumes-from в контейнер с нжинксом). Нжинкс на время работы контейнеров как раз и занимимается кешированием и отдачей статитики. Хотелось бы запускать только один - непосредственно с самим сервисом.

Может у кого-то есть методы отдачи статики в условиях постоянного изменения имиджей и перезапуска микросервисов.

Аналогичная проблема есть не только в проектах с нодой, но и с проектами где присутствует любая статика в виде файликов (картинки, js-ы, ассеты и т.п.)

Заранее благодарю

А что мешает продублировать статику в CDN через CI-пайплайн и при выкатке просто отдавать оттуда, через рулы LB?

Yustas ★★★★ ()
Ответ на: комментарий от Yustas

Технически ничего не мешает. В одном из проектов нет никаких внутренних нжинксов. Там ноды встают просто в докерах. Внутренний ЛБ ранчера кидает на них трафик. Одновременно он же указан в качестве ориджена в цдн-е. Работает в целом нормально. Но есть несколько вопросов:

1) В целом система, где фронтовые нжинксы имеют доступ к статике напрямую работает быстрее. Особенно заметно когда цдн-а нет. Кроме того, в общем случае ты же не знаешь, что там изменилось в статике. Выходит нужно зону в цдн «пуржить» целиком при каждой выкатке докера с новым кодом и потом терять в производительности пока зона прогреется.

2) И вышеназванный проект не имеет цдн-ов. Насколько понимаю и не планируется.

А так да - вы правы - цдн-ы хорошо вписываются в систему, если есть немного денюжек за них платить.

alex-123 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.