Отказоустойчивый веб-сервер на Linux c помощью NGINX
Отказоустойчивый веб-сервер на Linux c помощью NGINX 1.Введение Предлагаю вашему вниманию схему по организации отказоустойчивого сервера приложений – например для высоко нагруженных проектов, таких как веб-сервера с посещаемостью от 1000 чел/час. В данной схеме дублирован каждый узел: – балансировщики nginx. Будут слушать веб сервера(бэкэнды) и вещать их в сеть. Осуществлояется кэширование в режиме прокси(proxy_chache). Так как на сайте присутствуют и зарегистрированные пользователи и обычные посетители, то кэширование осуществляется по следующей схеме: – гостям данные отдаются из кеша (обновляются согласно настройкам кеширования – proxy_cache_valid) – авторизованным пользователям данные всегда отдаются напрямую, кроме случая когда: – бекэнд сервер выдает ошибку определенную в proxy_cache_use_stale – если бекэнд не работает или выдает ошибку определенную в proxy_cache_use_stale гостю выдается ответ из кеша не зависимо от его устаревания – определение зарегистрированного пользователя осуществляется по наличию определенной куки (её название зависит от движка сайта) – веб сервер – nginx (фронтэнд) для статического содержимого, apache2 для динамического(как бэкэнд). Хостинг размещается на хранилище Gluster Fs(т.е. Дублируется на вебсервера nginx+apache). Для ускорения php используем hhvm в режиме fastcgi для apache(бэкэнд) и nginx(frontend). Так-же оставили php-fpm в качестве резерва. Веб сервер будет обращаться к mysql прокси. – mysql proxy(2 шт) с общим адресом для обращения приложений к mysql. В случае выхода одно из прокси из строя его заменит второй(настроим hearbeat). Так же серверы слушают запросы на порте 3306 и распределяют их между серверами баз данных – mysql северы (backend) с репликацией в режиме мастер-мастер и кэшированием(memchached) для ускорения. Два сервера дублируют друг друга, и в случае выхода одного из строя доступ к базам данных останется, т.е это никак не скажется на работоспособности веб-серверов. На Днс сервере будет 2 А записи, каждая из которых будет указывать на ip адрес одного из балансировщиков Для увеличения отказоустойчивости предлагается увеличить количество вебсерверов и серверов баз данных. В случае увеличения серверов баз данных репликация пойдет по кругу. Так же можно использовать вариант с MySQL репликацией на Redis cache server через Ruby, Gearman, triggers, and MySQL UDF. Давайте далее рассмотрим всё на примерах. ВАРИАНТ №1. Отказоустойчивый веб-сервер nginx(keepalive)+glusterfs+mysqlreplication […]
Читать дальше… from Отказоустойчивый веб-сервер на Linux c помощью NGINX