Я не специалист по сетям или DevOps, но я должен делать это для своей компании, потому что моя компания не может себе этого позволить, так что простите меня за ошибки.
У меня есть веб-приложение , размещенное в облаке Google , и Я использую балансировщик нагрузки , предоставленный облаком Google, в серверной части У меня 2 экземпляры для веб-приложения. Проблема в том, что я использую кеширование файлов, и кеширование выполняется отдельно для обоих серверов. Это не HTTP-кеширование или что-то в этом роде, это внутреннее кеширование из веб-приложения, а не из nginx.
Мои серверы работают под управлением Ubuntu 16.04 LTS.
Как я могу сохранить общий сервер файлового кеша? Я хочу сохранить третий сервер для кэширования файлов, чтобы кэширование было общим для обоих экземпляров, и для этого я думаю использовать NFS. Хорошая ли идея использовать NFS для кэширования файлов?
Я много исследовал Интернет, и именно здесь я услышал о NFS.
Общий файловый сервер для всех ваших экземпляров - проблематичная идея, поскольку он может стать узким местом и единственной точкой отказа. Таким образом, это может в конечном итоге привести к поражению цели использования балансировщика нагрузки.
Чтобы рекомендовать решение, нужно знать намного больше об архитектуре вашей системы. Я могу дать несколько предложений, которые могут работать или не работать в зависимости от вашей архитектуры.
Выбор протокола должен определяться тем, насколько хорошо вы можете соответствовать вышеуказанным требованиям. Я не думаю, что NFS - лучший выбор, потому что на уровне приложения сложно реализовать тайм-ауты, когда один из серверов NFS не отвечает. И возможность того, что один сервер NFS не отвечает, что приведет к неправильному поведению нескольких LB-серверов, - это риск, которого я бы предпочел избежать.
Протокол, в котором клиентская сторона (работающая на LB-серверах) реализована в пользовательском режиме, вероятно, лучший выбор потому что любой поток, застрявший из-за не отвечающего кеш-сервера, с большей вероятностью будет ограничен. И проще реализовать таймауты при доступе к виртуальным машинам кеша, когда это реализовано в пользовательском режиме.