Скажем, у меня есть веб-приложение, работающее на Linux VPS. Чтобы применить обновления ядра и некоторые исправления безопасности, мне нужно перезагрузить сервер. В этот период сервер недоступен. Мне интересно, можно ли в это время отобразить пользователю уведомление о техническом обслуживании (через HTTP). Уведомление будет отправлено с помощью сценария PHP, который будет обрабатывать запросы на предоставление клиентам уведомления об обслуживании в формате HTML, изображения или XML веб-службы. Или, если возможно, предоставьте частично работающую службу.
Какое оборудование и программное обеспечение мне нужно для этого (пожалуйста, минимальный бюджет, и я надеюсь, что типичный провайдер VPS / выделенного хостинга сможет их поддерживать)?
Теперь я уже знал, что могу использовать программное обеспечение, такое как squid, для балансировки нагрузки между двумя HTTP-серверами. Но что мне делать, если нужно обновить сам squid или сервер CentOS, на котором размещен squid? Кроме того, мне вообще-то не нужна балансировка нагрузки, это нормально, если мне придется «переключаться» в режим обслуживания вручную. Любые идеи?
Заранее спасибо.
Обычно мы создаем новую машину с обновленными компонентами (программным, аппаратным и т. Д.). Затем мы загружаем производственные данные в систему и тщательно ее тестируем. Когда мы будем готовы, мы перезагружаем последние производственные данные и указываем DNS на новый компьютер.
Таким образом, между старой коробкой и новым будет постоянная доступность.
Если вам нужно выполнить обновление на сервере, требующем перезагрузки, вам понадобится хотя бы один альтернативный компьютер для размещения временного сайта, пока исходный компьютер отключен. Один из вариантов - использовать DNS с низким TTL, чтобы указать на новый сервер, когда исходный веб-сайт отключен.
Другой, как вы сказали, использует squid для прокси. Я считаю, что squid также может работать в циклической ситуации DNS с несколькими серверами squid.
Однако любое распространение DNS, которое вы делаете, если вы решите пойти по этому пути, может быть кэшировано нижестоящими серверами. Вы можете попытаться облегчить это с помощью 30-секундного TTL или чего-то смехотворно маленького, но некоторые DNS-серверы проигнорируют это и все равно будут кэшировать значение дольше.
Если вы все равно переключаетесь в режим обслуживания, почему бы просто не выдержать 5 минут, необходимые для перезагрузки, и заранее не разослать пользователям уведомление? Это должно нормально работать во всем, кроме ситуаций с чрезвычайно высокой доступностью.
Если для вас важно иметь такое время безотказной работы (например, в течение <5 минут перезагрузки сервера), я бы рекомендовал настроить второй виртуальный сервер. Он может быть очень минимальным, с запущенным lighttp и одной статической страницей, или это может быть дубликат вашего действующего сайта.
Затем настройте сердцебиение2 на обоих серверах и дайте им общий IP-адрес. Пока основной компьютер включен, он будет отвечать на адрес, но если он перейдет в автономный режим, IP-адрес автоматически появится на втором компьютере. в считанные секунды.
Если вы решите поставить полную версию своего сайта на оба сервера, я бы установил ldirectord в дополнении к сердцебиение2 это приложение балансировки нагрузки, которое будет работать на тех же машинах, что и ваши веб-серверы. В таком случае не будет даже секунд простоя когда один из серверов не работает.
Затем, если вы хотите пофантазировать, вы можете смонтировать контент и конфигурации вашего сайта из акция nfs на другом сервере (или кластере серверов), поэтому синхронизация или дублирование между веб-серверами не требуется.
Проверьте Zoneedit DNS. Для очень низкая стоимость они предлагают отказоустойчивый DNS.
Некоторые поставщики DNS (например, dnsmadeeasy.com) предоставляют отказоустойчивый DNS служба.
Эта служба будет регулярно проверять, включен ли ваш основной IP-адрес, и если это не так, он начнет отвечать с резервным IP-адресом, который может указывать на страницу «Сервер недоступен - повторите попытку позже» на другом хосте. .
Однако это, вероятно, не подходит для перезагрузки, поскольку TTL для записей DNS не позволит людям получить страницу аварийного переключения в течение 2 или 3 минут, необходимых для перезагрузки. Однако он отлично работает при длительных (или незапланированных) отключениях.
Я бы посоветовал просто уведомить пользователей на сайте о времени отключения электроэнергии. Тогда во время периода отключения они получат ошибки 404 или 500.
изменить: они не получат 404/500, а скорее ошибку тайм-аута.