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