Обычно вы не устанавливаете Pgpool на серверы бэкэнда. То, что вы видите на картинке, является наиболее распространенной конфигурацией. Pgpool - это автономный сервер, который, по сути, находится перед базами данных. Два сервера Postgres часто настраиваются с потоковой репликацией; один - хозяин, а другой - раб.
Это позволяет Pgpool распределять нагрузку по всем запросам на чтение между двумя (или более) базами данных. Любые запросы, которые включают любые записи, будут направлены на главный сервер, который, в свою очередь, реплицируется на ведомый.
Как сказал @Neil McGuigan , у вас также может быть несколько серверов Pgpool для повышения доступности. Технически вы можете установить Pgpool на серверах баз данных в этой конфигурации, но это будет плохой практикой. Запуск нескольких серверов Pgpool - намного более сложная конфигурация. Если вы впервые работаете с Pgpool, я бы начал с одного сервера Pgpool, а потом начал работать с двумя.
В любой конфигурации ваш сервер приложений считает, что он просто подключается к одной базе данных Postgres.
О pgpool_regclass
, который действительно должен быть отдельным вопросом, это из FAQ Pgpool :
Если вы используете PostgreSQL 8.0 или более позднюю версию, настоятельно рекомендуется установить функцию pgpool_regclass на все PostgreSQL, к которым должен обращаться pgpool-II, так как она используется внутри pgpool-II. Без этого обработка дублированных имен таблиц в другой схеме может вызвать проблемы (временные таблицы не являются проблемой).
Если вы используете PostgreSQL 9.4.0 или более поздней версии и pgpool-II 3.3.4 или более поздней версии, 3.4.0 или более поздней, вам не нужно устанавливать pgpool_regclass, поскольку PostgreSQL 9.4 имеет встроенную pgpool_regclass, подобную функции "to_regclass".
Если вам это нужно, это всего лишь некоторый 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
функцию в библиотеку, которую вы скопировали.