@iskinn
database administrator

База данных и приложение в разных ДЦ, можно разносить?

Коллеги прошу поделиться опытом.

Имеется:
Процессинговая реляционная база 500Гб, есть реплики в 2х других ДЦ для резервирования: в соседнем городе и в соседней стране. Под базу идут выделенные серверы. Запросов много. Обрабатывает все запросы только мастер. В пиковые часы отдает около 350МБит трафика. Есть само приложение, живет на вирт.машинах. В дальнейшем планируется плавный рост нагрузки и размера базы.

Пока все в одном ДЦ - все норм, задержки по обработке запросов от приложения приемлемые.
Когда нужно переключить роль мастер на другую ноду в ДЦ в соседний город, начинается рост времени ответа от приложения на 200-400%, это напрягает. А если переключить на другую строну, то вообще можно забыть про нормальную работу приложения.

В настоящее время есть понимание, что приложение работает с базой не оптимально, т.е. делает много лишних запросов через внутренний API. Здесь будем разгребать и рефакторинг частей приложения будет, что облегчит ситуацию, но будет он не скоро.

Сам вопрос:
Был ли у кого успешный/не успешный опыт разнесения приложения и базы в разные ДЦ или облака? Реально ли добиться нормальной работы с базой на расстоянии? Или может быть это неверный путь и резервировать в разных местах нужно не только базу но и само приложение, чтоб они рядом работали в пределах одного ДЦ?

Всем заранее спасибо
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
@MechanID
Админ хостинг провайдера
Был неуспешный опыт, проблема - задержка изза дистанции (километры и пинг как следствие) между приложения нодами и ДБ, проще поднимать ноды приложения рядом с дб сервером чем бороться с задержкой.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Держите ноды приложения в резервном дц.(Ну или поднимайте в облаке резервного дц). Они будут быстро работать с БД. И связь у них будет стабильной.
Ответ написан
Комментировать
Jump
@Jump
Системный администратор со стажем.
есть понимание, что приложение работает с базой не оптимально
Да хоть как оно работает.
Как правило в таких приложениях нечего распараллеливать. в результате время запроса к БД это время простоя приложения.
В общем приложение перемещайте вместе с БД.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
Нет такого успешного опыта.

Скорость канала не компенсирует пинг между датацентрами, поэтому реплика базы в других датацентрах- это исключительно для того, чтобы иметь постоянный свежий бэкап, поскольку в большинстве случаев развернуть виртуалку/докер с приложением - дело минут, а развернуть бэкап базы - часы, если не дни.

Поэтому в случае чего - просто поднимаете приложение в том же датацентре, где сейчас мастер.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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