Оптимальный способ обслуживания / хранения статических файлов для обслуживания несколькими контейнерами nginx (docker) - PullRequest
0 голосов
/ 05 мая 2019

Для моего веб-приложения я буду использовать несколько контейнеров nginx, распределенных по нескольким физическим хостам. Тем не менее, мне не ясно, какой подход будет использоваться для хранения и обслуживания статических файлов. Должен ли я сделать копию всех статических файлов на каждом физическом хосте, или есть какой-то другой лучший / более эффективный вариант?

1 Ответ

0 голосов
/ 05 мая 2019

Это действительно зависит от типа контента, который вы обслуживаете.

Если вы всегда обслуживаете весь или почти весь контент (маловероятно, если это не просто какая-то статическая страница), тогда вам нужнокопия контента в каждом узле для высокой производительности.

Однако, если вы предоставляете часть контента действительно часто, а остальные не так часто, что более распространено (например, веб-сайт сглубокая иерархия, в которой одни страницы имеют наибольшее количество посещений, а другие почти не посещаются), тогда вы можете настроить свои контейнеры как обратные прокси с кешем (см. nginx - обратный прокси с кешированием для примера),и настройте во втором слое несколько контейнеров nginx, которые могут обслуживать весь статический контент.

Таким образом, вы можете иметь большое и дешевое количество контейнеров для балансировки нагрузки и кэширования, а в случае пропадания кэша,они будут запрашивать более дорогостоящие хосты, которые обслуживают весь статический контент.Это снижает затраты на хранение с хорошим балансом производительности.

Альтернативные подходы включают в себя наличие контейнеров, обслуживающих определенный маршрут (например, / home будет одним контейнером, / около нас другой контейнер, / обслуживает другой контейнер и т. Д.),и точка входа nginx, которая будет передавать запросы другим контейнерам.Это хорошо, если вы заранее знаете, сколько трафика будет проходить через каждое местоположение.

Другой вариант действительно зависит от конфигурации вашей сети.Если все ваши контейнеры находятся в одной сети, вы можете иметь сетевое хранилище со статическим содержимым и привязать тома контейнера к такому хранилищу.Здесь вам также необходимо некоторое кэширование по соображениям производительности и во избежание коллапса сети из-за ненужных запросов.

И, наконец, вы можете творчески объединить все эти параметры, чтобы создать наиболее эффективную структуру вашей сети.Вы знаете тип сайта, который вы размещаете, поэтому вы должны иметь возможность использовать эти инструменты таким образом, чтобы контент эффективно обслуживался.Это не то же самое, что обслуживать статический веб-сайт с легким содержимым, чем обслуживание большого количества больших файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...