Отказоустойчивость web-сервиса — DNS Failover, SQL, PHP. Правильно ли мыслю?
Есть Web-сервис, работающий на VPS, не сильно требовательный к ресурсам (PHP/Laravel, MariaDB, Nginx), но важен постоянный доступ. Простои больше 10 минут - уже критичны. Хостинг подходит только Российский , перепробовал за несколько лет много разных, но не нашел такого, чтобы все время проработал стабильно.
Хочу повысить отказоустойчивость сервиса.
Перечитал много разной теории про балансировщиков, nginx, docker swarm и kubernetes и т.д. В таких вещах смущает что все равно есть какой-то центральный сервер или мастер-нода, которая рулит балансировкой или мониторит доступность нод/серверов. И если он не будет работать, то вообще ничег не будет работать. Поэтому этот вариант мне не очень нравится...
Я планирую сделать так:
1. DNS Failover - через платный сервис cloudns.
2. Два VPS сервера в разных локациях (например Москва и Казань)
3. Репликация БД MariaDB через Master-Master
4. Синхронизация файлов через Unison
Сам в этом деле нуб, на практике никогда не сталкивался. Поэтому ткните в правильном ли направлении мыслю и двигаюсь?
На VPS-ках (и не двух, а больше) ставите reverse-proxy Nginx, пусть направляют трафик на основной сервер, при его падении - уже на запасной (второй запасной, третий и т.д.). Соответсвенно MySQL-сервера будут Master-Slave, и надо только позаботиться о репликации Slave->Master.
полагаться на DNS = полагаться на всю цепочку DNS резолверов которая может участвовать в доставке изменений до клиента. (гугловый кеш, клаудфлейр, как самые популярные. Затем DNS провайдеров интернета, использующихся по умолчанию на многих клиентских устройствах, а сейчас еще, в связи с растущей популярностью средств обхода блокировок - даже локальные пользовательские DNS резолверы)
И никто не гарантирует что все настроено корректно, протухшие записи удаляются, TTL соблюдается именно тот который вы настроили у себя и тд и тп.
На вашем месте я бы все таки завязался на единую точку входа, но выбрал бы сервис, который обеспечивает достаточную надежность.
Например cloudflare (спрятать ваши два сервера за ним) или, если хочется именно российского, думаю, можно доверять Яндексу, если у них есть соответствующий сервис (network load balancer насколько я понял - для внутренних ресурсов в облаке)