2013-10-05 4 views
0

У меня есть эта конфигурация с pgpool: «Ведущий-1» и ведомый «Host-2», если «Host-1» спускается, pgpool правильно продвигает «Host-2», чтобы стать мастером; но если «Host-1» возвращается, pgpool не знает об этом, и, если «Host-2» спускается, pgpool не продвигает «Host-1», чтобы быть мастером, даже если «Host-1» онлайн. Я включил health_check, но кажется совершенно бесполезным, потому что состояние «Host-1» (после того, как оно встает) всегда 3 = «Node down».pgpool-II: возможно ли продвигать узел для управления более одного раза?

Это вывод команды "показать pool_nodes" во время событий:

-> Первоначально ситуация: "Host-1" UP (мастер), "Host-2" UP (ведомое)

node_id | hostname | port | status | lb_weight | role 
---------+----------+------+--------+-----------+-------- 
0  | Host-1 | 5432 | 2  | nan  | master 
1  | Host-2 | 5432 | 1  | nan  | slave 

-> узел 0 идет вниз: "Host-1" DOWN "Host-2" UP

node_id | hostname | port | status | lb_weight | role 
---------+----------+------+--------+-----------+-------- 
0  | Host-1 | 5432 | 3  | nan  | slave 
1  | Host-2 | 5432 | 2  | nan  | master 

-> узел 0 возвращается вверх: UP "Host-1", "Host-2" UP

node_id | hostname | port | status | lb_weight | role 
---------+----------+------+--------+-----------+-------- 
0  | Host-1 | 5432 | 3  | nan  | slave 
1  | Host-2 | 5432 | 2  | nan  | master 

отмечают, что статус "Host-1", однако 3, что означает "узел вниз"

-> узел 1 идет вниз: "Host-1" UP "Host-2" DOWN: на этот момент я не могу подключиться к db, даже если узел 0 запущен и работает!

Что мне нужно сделать, чтобы разрешить pgpool продвигать мастер узла 0 в другой раз? Если может быть полезным, эти секции «Настройки Backend подключения» и «Проверка работоспособности» моего pgpool.conf:

# - Backend Connection Settings - 

backend_hostname0 = 'Host-1' 
            # Host name or IP address to connect to for backend 0 
backend_port0 = 5432 
            # Port number for backend 0 
#backend_weight0 = 1 
            # Weight for backend 0 (only in load balancing mode) 
#backend_data_directory0 = '/data' 
            # Data directory for backend 0 
backend_flag0 = 'ALLOW_TO_FAILOVER' 
            # Controls various backend behavior 
            # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER 

backend_hostname1 = 'Host-2' 
            # Host name or IP address to connect to for backend 0 
backend_port1 = 5432 
            # Port number for backend 0 
#backend_weight1 = 1 
            # Weight for backend 0 (only in load balancing mode) 
#backend_data_directory1 = '/data' 
            # Data directory for backend 0 
backend_flag1 = 'ALLOW_TO_FAILOVER' 
            # Controls various backend behavior 
            # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER 

#------------------------------------------------------------------------------ 
# HEALTH CHECK 
#------------------------------------------------------------------------------ 

health_check_period = 10 
            # Health check period 
            # Disabled (0) by default 
health_check_timeout = 20 
            # Health check timeout 
            # 0 means no timeout 
health_check_user = 'admin' 
            # Health check user 
health_check_password = '12345' 
            # Password for health check user 
health_check_max_retries = 10 
            # Maximum number of times to retry a failed health check before giving up. 
health_check_retry_delay = 1 
            # Amount of time to wait (in seconds) between retries. 

ответ

0

Вы должны принести до ведомого узла, прежде чем он может быть повышен. Это означает, что в вашем случае использование Slony полностью перевернется и перестроит прежнего Учителя как нового Slave.

Основная проблема заключается в том, что записи, записанные в новый мастер, должны быть скопированы на старые, прежде чем вы сможете вернуться назад. Это прежде всего проблема Slony. После того, как вы проверите, что Slony работает, и все реплицировано, вы можете устранить неполадки с вашей стороны pgpool, но до этого времени (а затем вам может потребоваться повторная привязка к PGPool). С PGPool в режиме Master/Slave PGPool является вторичным по отношению к любой другой системе репликации, которую вы используете.

+0

Это не имеет ничего общего с Slony. Когда репликация будет восстановлена, pgpool не заметит - но должен быть * указан * узел вверх. Как указывает ответ Очки, сделайте это с помощью «attach» - даже если он кажется прикрепленным, он должен быть «повторно подключен». Видел это сегодня вечером на сервере pgpool и был набросок. –

2

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

$ pcp_attach_node 10 pgpool_host 9898 админ _pcp_passwd_ 0

Последние аргументы является идентификатор узла, для вашего случая это 0.

См http://www.pgpool.net/docs/latest/pgpool-en.html#pcp_attach_node больше деталей.

 Смежные вопросы

  • Нет связанных вопросов^_^