Назад | Перейти на главную страницу

Прокси для сервера базы данных / подключения?

Я исхожу с точки зрения разработки приложений (моя повседневная работа), а не с точки зрения инфраструктуры или операций, поэтому, если это совершенно глупый вопрос, дайте мне знать!

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

Есть ли у кого-нибудь опыт установки прокси между серверами приложений и базой данных?

Похоже, что кто-то должен это делать, особенно в сфере хостинга или облачного пространства, но когда я разговаривал с нашими (корпоративными) командами по инфраструктуре, они просто говорят «нет», хотя я все еще пытаюсь понять Зачем.

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

Может ли кто-нибудь поделиться мыслями, опытом или ресурсами в этой области? Буду весьма признателен за это!

Спасибо!

Z

Основные проблемы:

  • Соединения с базой данных между серверами приложений и бэкэндами намного более постоянны, поэтому балансировка нагрузки затруднена.

  • Прокси-серверы должны озвучивать протокол. Там есть масса HTTP-прокси. Попробуйте получить, например, протокол SQL Server. Нет необходимости, нет рынка - нет продукта.

  • Наконец, несмотря на то, что такое серверы SQL, кэширование невозможно. Не обошлось и без протокола аннулирования результатов и т. Д., Который не является частью какой-либо реализации SQL. Нет тега «если изменено с». Следовательно, вы либо ничего не получите, либо имеете дело с устаревшими данными - и то, и другое неприемлемо на этом уровне.

Мне также нравится идея TomTom DNS. Короткие TTL, и это проще, чем вы делаете.

Но вы, безусловно, можете запустить прокси перед своими базами данных. Например, SQLProxy и HAProxy могут это сделать. Но опять же, если вас беспокоит не балансировка нагрузки или разделение операций чтения и записи, зачем добавлять этот дополнительный уровень задержки (к и от прокси), когда вы могли бы просто сделать это с помощью CNAME - и я думаю, что аргумент именно тот ваши ребята из Ops / Systems рассмотрят.

Я понимаю, что это старый вопрос, но в настоящее время есть по крайней мере пара достойных прокси-продуктов для баз данных на выбор. То есть, если вы используете MariaDB или MySQL:

  • MaxScale, утверждает, что является самым продвинутым прокси для баз данных в мире
  • ProxySQL, который имеет многие функции, имеющиеся в MaxScale

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

Следует отметить, что у MaxScale есть специальная лицензия без открытого исходного кода - BSL. (ProxySQL, с другой стороны, находится под лицензией GPL.)

Я мог бы также упомянуть HAProxy который не является прокси-сервером для баз данных, но, тем не менее, широко успешно используется в качестве прокси-сервера для баз данных как для MariaDB / MySQL, так и для PostgreSQL.