У меня есть веб-сервис, работающий на VPS, который не требует значительных ресурсов (PHP/Laravel, MariaDB, Nginx), но для меня критично наличие постоянного доступа. Простой свыше 10 минут уже является серьезной проблемой. Я пробовал различные российские хостинги на протяжении нескольких лет, но не нашел ни одного, который бы гарантировал стабильную работу. Я хочу повысить отказоустойчивость своего сервиса. Я изучил множество теоретических материалов о балансировщиках, Nginx, Docker Swarm, Kubernetes и других технологиях, но меня смущает, что они требуют наличия центрального сервера или мастер-ноды, которая осуществляет управление балансировкой или мониторинг доступности других узлов/серверов. Если этот центральный элемент выйдет из строя, вся система перестанет функционировать, и это меня настораживает. Вот мой план по повышению отказоустойчивости: 1. Использовать DNS Failover через платный сервис cloudns. 2. Развернуть два VPS-сервера в разных локациях (например, Москва и Казань). 3. Настроить репликацию базы данных MariaDB через Master-Master. 4. Организовать синхронизацию файлов с использованием Unison. Поскольку у меня нет практического опыта в этой области, подскажите, правильное ли направление я выбрал и движусь ли в верном русле?
Ваши шаги по повышению отказоустойчивости вашего веб-сервиса выглядят разумно и форматируют правильную стратегию. Давайте рассмотрим каждый из ваших пунктов и улучшим их, если это возможно: 1. **Использовать DNS Failover через платный сервис cloudns**: Это хороший шаг для повышения доступности. DNS Failover позволяет переключать трафик на резервные серверы в случае, если основной сервер становится недоступным. Убедитесь, что у вас настроена мониторинг и быстрое переключение. Возможно, стоит рассмотреть дополнительные DNS-провайдеры с качественной поддержкой. 2. **Развернуть два VPS-сервера в разных локациях**: Отличное решение. Размещение серверов в разных географических локациях помогает минимизировать влияние локальных сбоев. Убедитесь, что у вас настроенное автоматическое распределение трафика, чтобы пользователи могли получать лучшую производительность независимо от их местоположения. 3. **Настроить репликацию базы данных MariaDB через Master-Master**: Это даст вам возможность разделять нагрузку и обеспечить доступность данных в случае сбоя. Учтите, что Master-Master репликация требует тщательной конфигурации для предотвращения конфликтов записи. Рассмотрите возможность использования Master-Slave конфигурации с автоматическим переключением, если это возможно, чтобы упростить управление. 4. **Организовать синхронизацию файлов с использованием Unison**: Это правильное решение для синхронизации файлов между серверами. Однако рекомендуется тщательно протестировать процесс, чтобы убедиться в его надежности и скорости. Кроме того, подумайте о регулярном хранении резервных копий данных, чтобы в случае каких-либо сбоев вы могли быстро восстановить систему. ### Дополнительные рекомендации: - **Мониторинг и алерты**: Настройте мониторинг ваших серверов, чтобы быть в курсе их состояния. Используйте инструменты наподобие Prometheus или Zabbix, чтобы следить за ресурсами и получать уведомления о сбоях. - **Автоматизированные развертывания**: Рассмотрите использование инструментов для автоматизации развертывания (например, Ansible или Terraform), чтобы упростить управление вашей инфраструктурой. - **Кэширование**: Используйте кэширование (например, Redis или Memcached) для снижения нагрузки на базу данных и повышения скорости доступа к frequently-used данным. - **Резервное копирование**: Регулярные резервные копии базы данных и файловой системы помогут вам минимизировать потери в случае серьезного сбоя. Ваше направление в целом правильно, и при внимательном планировании и тестировании ваша система может стать гораздо более отказоустойчивой. Удачи!
полагаться на DNS = полагаться на всю цепочку DNS резолверов которая может участвовать в доставке изменений до клиента. (гугловый кеш, клаудфлейр, как самые популярные. Затем DNS провайдеров интернета, использующихся по умолчанию на многих клиентских устройствах, а сейчас еще, в связи с растущей популярностью средств обхода блокировок - даже локальные пользовательские DNS резолверы)
И никто не гарантирует что все настроено корректно, протухшие записи удаляются, TTL соблюдается именно тот который вы настроили у себя и тд и тп.
На вашем месте я бы все таки завязался на единую точку входа, но выбрал бы сервис, который обеспечивает достаточную надежность.
Например cloudflare (спрятать ваши два сервера за ним) или, если хочется именно российского, думаю, можно доверять Яндексу,(не уверен правда что их network load balancer умеет балансировать точки находящиеся за пределами яндекс клауда - надо изучать документацию)