Допустим у нас дома стоит сервер и для надёжности подведено несколько провайдеров. Как сделать доступными сайты этого сервера, если допустим основной провайдер упадёт?
Решение красивое =). смотреть тут:http://www.bloged.org/2009/07/nginx.html
Суть:
1. Берём VDS где-нить в ацко надёжном месте. например тут: TinyVDS
2. Настраиваем на нём проксирование nginx’ом запросов на нужные сайты (можно всех). Об этом я писал тут nginx, Двойное проксирование, реальный IP, только указываем наш mycloud вместо IP как получателя с чем-то вроде max_fails=3 fail_timeout=120
3. Настраиваем nginx на основном сервере, с кучей провайдеров
Наслаждаемся =)
Есть ещё решения? делитесь =)
upd, статья, вдруг сайт удалится:
Простая конфигурация
Допустим, вы разместили ваше приложение на нескольких серверах, пусть это будут три сервера с именами myserv-1.local, myserv-2.local и myserv-3.local, расположенные в вашей локальной сети (конечно же, на самом деле без разницы, где они будут размещаться). Для того, чтобы описать такое «облако» из трёх серверов в Nginx используется опция upstream:
upstream mySuperCloud { server myserv-1.local; server myserv-2.local; server myserv-3.local; }
Описанное таким образом «облако» из нескольких upstream-серверов теперь можно использовать в качестве значения параметра proxy_pass, рассмотренного в предыдущей статье. Везде, где Nginx будет наталкиваться на ссылку (в нашем случае — «mySuperCloud»), он будет по алгоритму Round-Robin выбирать следующий сервер и выполнять обратное проксирование к нему и от него. Таким образом, теперь, описывая виртуальный хост, вы можете сослаться на ваше «облако»:
server { listen 192.168.0.1:80; access_log /var/log/nginx/proxy.log; location / { proxy_pass http://mycloud; } }
Привязка клиента к серверу
Часто бывает нужно, чтобы один и тот же клиент, начав делать запросы к какому-то определённому серверу, не переключался на другие. Для этого в Nginx предусмотрена опция ip_hash. Если она определена, сервер будет запоминать IP-хеши клиентов и стараться проксировать каждого из них на один и тот же сервер.
upstream mySuperCloud { ip_hash; server myserv-1.local; server myserv-2.local; server myserv-3.local; }
Исключение сервера из «облака»
Если какой-то сервер по каким-то причинам вам необходимо отключить, чтобы Nginx не проксировал к нему клиентов, воспользуйетсь опцией down:
upstream mySuperCloud { server myserv-1.local; server myserv-2.local down; server myserv-3.local; }
Определение «веса» сервера
«Вес» сервера, грубо говоря, определяет насколько часто сервер будет использоваться. Например, вес сервера myserv-1.local равен 3, вес myserv-2.local равен 1 и вес myserv-3.local равен 2. В этом случае Nginx проксирует первых трёх клиентов к серверу myserv-1.local, четвёртого — к myserv-2.local, а пятого и шестого — к myserv-2.local, после чего круг начнётся сначала. Для определения веса сервера используется директива weight, значение по умолчанию которой равно единице.
upstream mySuperCloud { server myserv-1.local weight=3; server myserv-2.local; server myserv-3.local weight=2; }
Автоотключение серверов
Если какой-то из upstream-серверов перестанет отвечать на запросы, то подключение к нему станет невозможным. Nginx в этом случае переключиться на использование следующего сервера из «облака», однако каждый раз будет пытаться подключаться к неработающему серверу, растрачивая время. При помощи директивы max_fails параметра server можно определить максимально-допустимое количество неудачных попыток подключения к upstream-серверу, после чего тот будет считаться нерабочим и запросы к нему прекратятся. По умолчанию значение этого параметра равно единице, то есть после одной неудачной попытки Nginx на определённое время прекратит попытки новых подключений с нерабочему серверу. Это «определённое время» определяется значением опции fail_timeout, по умолчанию равным 10 секундам.
upstream mySuperCloud { server myserv-1.local max_fails=3 fail_timeout=120; server myserv-2.local; server myserv-3.local; }
Резервные серверы
Под понятием «резервный» в Nginx выступает сервер, который используется тогда, и только тогда, когда все «не резервные» upstream-серверы определены как нерабочие, т. е. не отвечающие на запросы. Резервные серверы отмечаются с помощью директивы backup:
upstream mySuperCloud { server myserv-1.local; server myserv-2.local; server myserv-3.local; server backup-server-1.local backup; server backup-server-2.local backup; }
TinyVDS раздаёт скидку в 50% на первые 3 месяца юзания VDS.План действий:
1. регаемся тут: http://tinyvds.ru
2. смотрим цены (кликабельно):
3. офигеваем от текущих цен, какие они низкие
от себя скажу что пользуюсь услугами уже давненько:
На какое-то время доступен промокод, дающий скидку в 25% на первый месяц пользования VDS у компании TinyVDS.
На момент написания обзора я пользуюсь TinyVDS почти пол года. Вот кнопки о мониторинге надёжности:
![]()
Мой обзор можно почитать тут :VDS, каким пользоваться
Удачного дня!
Периодически добавляю на сервер новые сайты. Процесс утомительный — скопировать, изменить, создать симлинки. Можно пользоваться webmin или ISPManager, но мы рассмотрим возможность использования bash скрипта для создания виртуальных хостов.
Использую данный скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash ptdr=/var/www domain=$@ if [ $domain ] then echo Создаём новый виртуальный субдомен $domain else echo Неверный синтаксис. Используйте: $0 new-domain.ru; exit fi echo "Создание виртуального хоста" touch /etc/apache2/sites-available/$domain echo -e " \n ServerName $domain \n DocumentRoot $ptdr/$domain \n ServerAlias www.$domain \n ErrorLog /var/log/apache2/$domain.error.log \n CustomLog /var/log/apache2/$domain.access.log common \n" > /etc/apache2/sites-available/$domain echo "Создание директорий" mkdir $ptdr/$domain ln -s /etc/apache2/sites-available/$domain /etc/apache2/sites-enabled/$domain echo "Перезапуск Apache2" sudo /etc/init.d/apache2 restart |
Для удобства можно создать симлинк в /bin
И, для создания субдоменов будет аналогичный скриптик:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash ptdr=/var/www domain=$@ if [ $domain ] then echo Создаём новый виртуальный субдомен $domain else echo Неверный синтаксис. Используйте: $0 new-domain.ru; exit fi echo "Создание виртуального хоста" touch /etc/apache2/sites-available/$domain echo -e "<VirtualHost *:80> \n ServerName $domain \n DocumentRoot $ptdr/$domain \n ErrorLog /var/log/apache2/$domain.error.log \n CustomLog /var/log/apache2/$domain.access.log common \n</VirtualHost>" > /etc/apache2/sites-available/$domain echo "Создание директорий" mkdir $ptdr/$domain ln -s /etc/apache2/sites-available/$domain /etc/apache2/sites-enabled/$domain echo "Перезапуск Apache2" sudo /etc/init.d/apache2 restart |
Удачного кодинга.
На выходных переносил группу сайтов с VDSPlanet.ru На TinyVDS.ru
Поднял Apache+PHP+MySQL+NGINX
Настроил поисковый движок Sphinx
Установил WebMin на всякий случай для администрирования.
Развернул все сайты.
Заметил что на всё ушло всего порядка 4-5 часов.
Для начала определитесь кто вы, любитель или профессионал. Или решите кем вы хотите быть — любителем или профессионалом.
1. Обычный хостинг (выбор любителя):
Пример: mchost.ru
Плюсы: Вам предоставят удобную панель, ftp доступ для закачки сайта, почтовые ящики, настроенный MYSQL сервер. Вам не придётся думать о резервном копировании и восстановлении из резервных копий. Все работы по обслуживанию сервера компания возьмёт на себя. Данным вариантом размещения сайта можно воспользоваться без предварительной подготовки(не требует больших начальных знаний в области работы с веб сайтами).
Минусы: Ваш сайт(сайты) будут делить ресурсы с соседями. В случае, если Ваш сайт будет создавать большую нагрузку на сервер(высокая посещаемость, ресурсо-ёмкие скрипты) Вам приостановят оказание услуг, либо попросят сменить тариф на более дорогой.
2. VDS(виртуальный выделенный сервер) (выбор начинающего профессионала):
Пример: vdsplanet.ru
Плюсы: Вы получаете вполне определённый сервер имеющий гарантированные ресурсы (частоту процессора, оперативную память, жёсткий диск). Данная технология подразумевает выполнение на одном физическом сервере нескольких виртуальных серверов. Чаще всего Вам понадобится знание устройства операционной системы Linux, т.к. виртуализация операционной системы Linux является, на текущий момент, наиболее проработанным и надёжным решением (по моему мнению). Вам предоставляется возможность установить всё необходимое программное обеспечение для обеспечения работы Ваших проектов. При этом выборе Вы уже можете мыслить не сайтами, а проектами, т.к. можете запускать на своём сервере необходимые службы, скрипты, работающие по планировщику, и.т.д.
Минусы: Вам нужно очень хорошо знать операционную систему, на которой работает ваш виртуальный сервер (чаще всего Linux).
Комментарий: Автор выбрал именно данный вариант (VPS)
3. Сервер (аренда или размещение собственного сервера на площадке провайдера) (профессиональный выбор):
Плюсы: Огромная производительность, сервер в полном Вашем владении.
Минусы: Все заботы о работе сервера лежат на Вас лично.
В дальнейшем я сконцентрируюсь на описании возможных вопросов, возникающих с выделенными серверами (VDS), т.к. располагаю необходимыми знаниями и опытом в решении типичных вопросов с виртуальными серверами.