Ниже приведен пример архитектуры pgpool:
Это означает, что вам нужно иметь pgpool только на одном сервере; Это правда? Когда я смотрю на конфигурацию, я также вижу, что вы конфигурируете серверные части внутри pgpool.conf
; так что это дополнительно подразумевает это. Но это не объясняет, почему я также вижу pgpool на внутренних серверах.
Просматривая документацию, я также вижу:
Если вы используете PostgreSQL 8.0 или новее, настоятельно рекомендуется установить функцию pgpool_regclass на все PostgreSQL, к которым должен обращаться pgpool-II, так как она используется внутри pgpool-II.
Так что я не уверен, что думать; лучше ли иметь pgpool на всех серверах или просто выделенный сервер?
postgresql
architecture
pgpool
scalability
connection-pooling
Эрвин Брандштеттер
источник
источник
Ответы:
Обычно вы не устанавливаете Pgpool на серверы бэкэнда. То, что вы видите на картинке, является наиболее распространенной конфигурацией. Pgpool - это автономный сервер, который, по сути, находится перед базами данных. Два сервера Postgres часто настраиваются с потоковой репликацией; один - хозяин, а другой - раб.
Это позволяет Pgpool распределять нагрузку по всем запросам на чтение между двумя (или более) базами данных. Любые запросы, которые включают любые записи, будут направлены на главный сервер, который, в свою очередь, реплицируется на ведомый.
Как сказал @Neil McGuigan , у вас также может быть несколько серверов Pgpool для повышения доступности. Технически вы можете установить Pgpool на серверах баз данных в этой конфигурации, но это будет плохой практикой. Запуск нескольких серверов Pgpool - намного более сложная конфигурация. Если вы впервые работаете с Pgpool, я бы начал с одного сервера Pgpool, а потом начал работать с двумя.
В любой конфигурации ваш сервер приложений считает, что он просто подключается к одной базе данных Postgres.
О
pgpool_regclass
, который действительно должен быть отдельным вопросом, это из FAQ Pgpool :Если вам это нужно, это всего лишь некоторый SQL-код, запущенный на вашем главном сервере Postgres, чтобы добавить функцию, используемую Pgpool.
С regclass есть дополнительный шаг, который вы должны сделать (я думал о insert_lock). Если вы компилируете из исходного кода (как правило, большинство дистрибутивов имеют действительно устаревшие версии Pgpool), вам также придется скомпилировать библиотеку Postgres.
Если вы скомпилировали из исходного кода, вам нужно будет зайти в
.../pgpool-II-3.X.X/src/sql/pgpool-regclass
папку и сделать./configure; make
.Скопируйте файл pgpool-regclass.so в каталог расширений Postgres. На моем сервере Ubuntu 14.04 (только с помощью пакета Postgres 9.3 установки), он расположен по адресу:
/usr/lib/postgresql/9.3/lib
. Не забудьте сделать это для всех серверов Postgres.Как только это будет завершено, вы можете запустить
pgpool-regclass.sql
на мастере. Это просто отображаетpgpool_regclass
функцию в библиотеку, которую вы скопировали.источник
Как и во всем остальном, есть много способов, как вы можете выполнить развертывание высокой доступности. Здесь я предложу кое-что из моего опыта (моя собственная реализация HA):
Наконец, я порекомендую этот пошаговый учебник, который приведет вас с нуля (установка сервера PostgreSQL ...) для завершения реализации высокой доступности. Упомянутый учебник описывает реализацию, которую я использую.
Надеюсь, это помогло.
ОБНОВЛЕНИЕ: Спасибо @Moshe Katz - ссылка действительно изменилась. Теперь обновлено здесь, в оригинальном посте также.
источник