Настроить pgpool в режиме master_slave не удается авторизоваться на сервере

Я пытаюсь запустить pgpool на 2+ веб-серверах, на которых также есть приложение rails и т. Д. Идея состоит в том, чтобы иметь репликацию через slony или потоковую передачу и переключение через pgpool. Также было бы неплохо, если бы запросы к реплике были сбалансированы, а подключения к веб-серверу были объединены в пул, но важно, чтобы master_slave и аварийное переключение работали.

Я установил pgpool версии 3.4.1 (lainihi) из пакетов apt на Ubuntu 10.04 LTS. db01 является мастером и реплицируется на db02 через slony. Мой pgpool.conf выглядит так:

# configure frontend
listen_addresses = 'localhost'
port = 5432

# configure the backends
backend_host_name = 'db01'
backend_port = 5432
secondary_backend_host_name = 'db02'
secondary_backend_port = 5432

# uncomment this and pgpool fails to connect
#master_slave_mode = true
#master_slave_sub_mode = 'slony'

Он работает прямо сейчас в "сыром режиме", и мне интересно, много ли я выиграю с master_slave? В любом случае, если я раскомментирую master_slave = true, я получу следующее при подключении:

# psql -h localhost  -U XXX -W
Password for user XXX: 
psql: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.

в журнале pgpool я вижу следующее

2011-01-13 02:03:17 DEBUG: pid 24144: I am 24144 accept fd 6
2011-01-13 02:03:17 DEBUG: pid 24144: Protocol Major: 1234 Minor: 5679 database:  user: 
2011-01-13 02:03:17 DEBUG: pid 24144: SSLRequest: sent N; retry startup
2011-01-13 02:03:17 DEBUG: pid 24144: Protocol Major: 3 Minor: 0 database: XXX user: XXX
2011-01-13 02:03:17 DEBUG: pid 24147: I am 24147 accept fd 6
2011-01-13 02:03:17 DEBUG: pid 24147: Protocol Major: 3 Minor: 0 database: XXX user: XXX
2011-01-13 02:03:17 DEBUG: pid 24144: pool_read_message_length: lenghth: 12
2011-01-13 02:03:17 DEBUG: pid 24144: trying md5 authentication
2011-01-13 02:03:17 DEBUG: pid 24144: master: 1 salt: 8bcce867
2011-01-13 02:03:17 DEBUG: pid 24147: pool_read_message_length: lenghth: 12
2011-01-13 02:03:17 DEBUG: pid 24147: trying md5 authentication
2011-01-13 02:03:17 DEBUG: pid 24147: master: 1 salt: bb5f7a63
2011-01-13 02:03:17 DEBUG: pid 24144: master: 0 salt: 5abb8e55
2011-01-13 02:03:17 DEBUG: pid 24144: do_md5: backend does not return R while processing MD5 authentication E
2011-01-13 02:03:17 ERROR: pid 24144: pool_do_auth: backend does not return authenticaton ok
2011-01-13 02:03:17 DEBUG: pid 24147: master: 0 salt: 4c1e5953
2011-01-13 02:03:17 DEBUG: pid 24147: do_md5: backend does not return R while processing MD5 authentication E
2011-01-13 02:03:17 ERROR: pid 24147: pool_do_auth: backend does not return authenticaton ok

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

Любая помощь в настройке pgpool будет принята с благодарностью. Это похоже на отличное решение, но настроить его оказалось сложнее, чем ожидалось.

TIA,

Деннис


person dwatson    schedule 13.01.2011    source источник


Ответы (1)


В конце концов решил это сам. Оказывается, проблема связана со странным управлением версиями pgpools и установкой из apt.

Первая часть проблемы заключалась в том, что pgpool переключил основную версию с pgpool на pgpool-II. pgpool-II - это не форк или несовместимый родственник, а более поздняя версия с расширенными возможностями. Последняя версия pgpool - 3.4.1, а последняя версия pgpool-II - 3.0.1. Если вы не посмотрите достаточно внимательно, вы можете подумать, что pgpool 3.4.1> pgool-II 3.0.1, но это не так.

Вторая часть проблемы заключалась в том, что ubuntu (возможно, также и debian) имеет два подходящих пакета для указанных выше pgpool и pgpool2. Конечно, pgpool2 - это pgpool-II. Было бы неплохо, если бы в пакетах был способ сказать «см. Также», чтобы люди, устанавливающие pgpool, знали, что пакет pgpool2 существует.

Как только я получил исходный код для pgpool-II и сам скомпилировал его (включив SSL, который не был включен в пакете apt), переключатель главный-подчиненный работает, как заявлено.

person dwatson    schedule 26.01.2011