Отказоустойчивый веб-сервер на 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

Как перевести диск Virtualbox в KVM

Я решил перевести мои образы VirtualBox к формату KVM – стандарту виртуализации в LINUX. Для этого нам понадобиться установленная KVM, ну и конечно сам образ диска в формате VDI(формат диск а в виртуалбокс). Делается это всё дело одной командой. qemu-img convert -f vdi -O qcow2 “ЧИСТАЯ ubuntu-server-x64.vdi” multifuntc.qcow2 После конвертации(она зависит от размера диска) вы можете […]

Читать дальше… from Как перевести диск Virtualbox в KVM

Многофункциональный сервер на Ubuntu

Многофункциональный сервер для организации на Ubuntu Содержание Введение Компоненты сервера Конфигурация сервера(требования) Установка Samba+DNS+DHCP+BIND9 Установка Squid Установка webmin и добавление пользователей в samba Установка ONLYOFFICE COMMUNITY SERVER + DOCUMENT SERVER Заключение Скачать образ сервера 1.Введение Начнем с того, что же с подвигло меня к написанию данной статьи. В одной из своих статей, я описывал процесс создания […]

Читать дальше… from Многофункциональный сервер на Ubuntu

Starting domain name service : bind9 failed

Starting domain name service          : bind9 failed  Если у вас перестал работать dns-сервис bind9, например в составе контролера samba и появилась такая беда – не стартует bind sudo service bind9 start Starting domain name service…: bind9 failed! Спросите сервис named named -g -u bind Получите что-нибудь типа этого 11-Mar-2016 16:33:57.483 starting […]

Читать дальше… from Starting domain name service : bind9 failed