Балансировка нагрузки и отработка отказа для базы данных PostgreSQL только для чтения - PullRequest
3 голосов
/ 26 марта 2010

Сценарий

На нескольких серверах приложений размещаются веб-службы, написанные на Java, работающие в SpringSource dm Server. Чтобы реализовать новое требование, им потребуется запросить базу данных PostgreSQL только для чтения.

Выпуск

Для поддержки избыточности будут работать как минимум два экземпляра PostgreSQL. Доступ к PostgreSQL должен быть сбалансирован по нагрузке и автоматически переключаться на работающие в данный момент экземпляры, если экземпляр отключается. Автоматическое обнаружение вновь запущенных экземпляров желательно, но не обязательно.

Research

Я ознакомился с официальной документацией PostgreSQL по этому вопросу. Однако это фокусируется на более общем случае доступа для чтения / записи к базе данных. Лучшие результаты Google, как правило, приводят к более старым сообщениям группы новостей или мертвым проектам, таким как Sequoia или DB Balancer, а также к одному активному проекту PG Pool II

Вопрос

Каков ваш реальный опыт работы с PG Pool II? Какие еще простые и надежные альтернативы доступны?

Ответы [ 3 ]

2 голосов
/ 28 марта 2010

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

Я с нетерпением жду возможности сочетания горячего резервирования и потоковой репликации в PostgreSQL 9.0.

1 голос
/ 27 марта 2010

Вы смотрели на SQL Relay?

0 голосов
/ 02 апреля 2010

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

Затем вы реализуете балансировку нагрузки независимо от этого - на уровне TCP с чем-то вроде HAProxy.Такое решение сможет выполнять аварийное переключение подключений для чтения (хотя при аварийном переключении вы все равно потеряете видимость транзакций и начнете новую транзакцию на новом ведомом устройстве - но для большинства людей это нормально)

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

...