@exhang

Как лучше реализовать отказоустойчевый сервис?

Есть небольшой, но важный сервис работает через https (webhook, api), с ним общается софт в котором не могу делать изменения, нужно получить uptime 99.9%, сейчас все работает на одном сервере, периодически падает.
Сейчас уже готова репликация (кластеризация) сервиса, т.е один и тот же сервис доступен с 3 разных серверов, полностью дублирующих друг друга.
Теперь вот думаю как быть с доменом, вижу 2 варианта:
1) следить на доменом и доступностью сервиса через zabbix с интервалом 30-60сек, в DNS прописать TTL аля 30-60 сек и в случае падения перебивать IP в A записи скриптом, по идеи сервис должен быть быстро доступен с запасной машины. Но возникает вопрос, а что если кэш? И если поставить такой маленький TTL в DNS, ничего хорошего наверное не будет?
2) прописать 2-3 IP в A записи DNS и получить round-robin, он по идеи должен выдавать IP один из 3 который сейчас работает.

Реализация http balancer не вариант аля hproxy или на основе nginx потому что именно этот балансер оказывается самым слабым местом во всей системе, т.к опять же все зависит от 1 сервера.

В том и вопрос, как лучше реализовать это, может быть есть еще варианты реализации отказоустойчевости?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
А в облако закинуть не проще? Да, явно дороже чем сейчас, но с одним сервером это почти недостижимый аптайм. Нужно как минимум два для сервиса, балансировщик и все такое
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы