ThingWorx высокой доступности > Пример развертывания PostgreSQL высокой доступности с Pgpool-II > 9. Сконфигурируйте сервис наблюдения для главного и резервного узлов Pgpool-II
9. Сконфигурируйте сервис наблюдения для главного и резервного узлов Pgpool-II
Шаг 1
Отредактируйте файл pgpool.conf в каждом узле Pgpool-II, чтобы он содержал соответствующие настройки и значения для сервиса наблюдения.
Настройка
Значение
Описание
use_watchdog
on
Включает сервис наблюдения в Pgpool-II
wd_hostname
"10.91.9.101"
или
"10.91.9.102"
Имя хост-компьютера или IP-адрес этого сервиса наблюдения
wd_port
9000
Номер порта этого сервиса наблюдения
delegate_IP
"10.91.9.100"
Виртуальный IP-адрес, используемый клиентами для доступа к PostgreSQL (через Pgpool-II)
ifconfig_path
'/etc/pgpool2'
Абсолютный путь к папке, содержащей команды или сценарии if_up_cmd и if_down_cmd
if_up_cmd
"ifup.sh $_IP_$ <eni id of Pgpool node>"
Команда, выдаваемая, когда Pgpool-II пытается вызвать виртуальный IP-интерфейс с адресом delegate_IP. Можно извлечь идентификатор eni узла Pgpool-II, войдя в консоль администрирования EC2 и перейдя к экземпляру Pgpool-II. В его описании на консоли найдите запись Сетевые интерфейсы, щелкните eth0 и найдите идентификатор интерфейса. Используйте его для $<eni id of Pgpool node>.
if_down_cmd
ifdown.sh $_IP_$ <eni id of Pgpool node>
Команда, выдаваемая, когда Pgpool-II пытается закрыть виртуальный IP-интерфейс с адресом delegate_IP. См. if_up_cmd, чтобы получить идентификатор eni для узла Pgpool-II.
arping_path
'/usr/bin'
Путь к пакету установки iputils-arping
arping_cmd
"arping -U $_IP_$ -w 1"
Команда arping, используемая для проверки IP-адресов.
heartbeat_destination0
"10.91.9.102"
или
"10.91.9.101"
IP-адрес, для которого выполняется проверка контрольного сигнала; значение параметра other_pgpool_hostname0
heartbeat_destination_port0
9694
Используйте значение по умолчанию.
heartbeat_device
"eth0"
Сетевая плата для IP-адреса при обмене контрольными сигналами
other_pgpool_hostname0
"10.91.9.102"
или
"10.91.9.101"
IP-адрес другого экземпляра сервера Pgpool-II
other_pgpool_port0
5432
Порт, прослушиваемый другим узлом Pgpool-II
other_wd_port0
9000
Порт, прослушиваемый другим сервисом наблюдения Pgpool-II
Шаг 2
Создайте сценарий ifup.sh, который должен использоваться в настройке if_up_cmd файла pgpool.conf.
1. Разместите сценарий в каталоге /etc/pgpool2.
2. Убедитесь, что его владельцем является PostgreSQL и что он принадлежит пользователю postgres.
3. Убедитесь, что для его разрешений задано значение 755.
4. Файл должен содержать следующее:
#!/bin/bash -x
/sbin/ifconfig eth0:0 inet $1 netmask 255.255.255.0
Шаг 3
Создайте сценарий ifdown.sh, который должен использоваться в настройке if_down_cmd файла pgpool.conf.
1. Поместите этот файл в каталог /etc/pgpool2.
2. Убедитесь, что его владельцем является PostgreSQL и что он принадлежит пользователю postgres.
3. Убедитесь, что для его разрешений задано значение 755.
4. Файл должен содержать следующее:
#!bin/bash -x
/sbin/ifconfig eth0:0 down
Шаг 4
Задайте открытые ключи SSH, соответствующие записи .ssh/authorized_keys пользователя PostgreSQL, на каждом сервере баз данных PostgreSQL в каталоге /root/.ssh. Процессы Pgpool-II высокой доступности (с сервисом наблюдения) выполняются пользователем root, и при необходимости переключения при отказе серверов баз данных PostgreSQL он отвечает за выполнение сценария /etc/pgpool2/failover.sh.
* 
При переключении при отказе будут появляться сообщения Permission Denied, связанные с ключами.
Шаг 5
PTC рекомендует перед начальным запуском узлов Pgpool-II с сервисом наблюдения очистить или отменить файл pgpool_status в каталоге /var/log/postgresql. В результате при запуске Pgpool-II будет использовать базу данных PostgreSQL, сконфигурированную для node0 в файле pgpool.conf. Если после сбоя и переключения при отказе главный узел не соответствует записи node0 в файле pgpool.conf, сохраните файл pgpool_status, поскольку в нем отслеживается изменение текущего главного узла между запуском и остановкой процесса Pgpool-II.
Шаг 6
Запустите процесс pgpool от имени пользователя root в первом экземпляре Pgpool-II. Не запускайте его как сервис. Выполните команды:
sudo su
/usr/sbin/pgpool -n -f /etc/pgpool2/pgpool.conf > ~postgres/pgpool.log
2>&1 &
.
Шаг 7
Просмотрите записи Pgpool-II в syslog, чтобы убедиться в правильности инициализации сервиса наблюдения.
more /var/log/syslog | grep pgpool
Выходные данные должны подтверждать, что сервис наблюдения и Pgpool-II успешно инициализированы и запущены.
Шаг 8
PTC рекомендует для очистки этого журнала перед выполнением нового процесса Pgpool-II создать резервную копию существующего журнала syslog для архивной справки, а затем вызвать следующую команду:
> /var/log/syslog
. Убедитесь, что в файле ~postgres/pgpool.log нет записей об ошибках. Убедитесь, что процессы Pgpool-II запущены.
Шаг 9
В конфигурации по умолчанию, указанной в разделе PostgreSQL HA, для настройки num_init_children в файле pgpool.conf задано значение 125. Должно существовать 125 процессов со статусом "wait for connection request", в том числе с префиксом "PCP:" Существует несколько других процессов, созданных pgpool-II и сервисом наблюдения.
Шаг 10
Проверьте конфигурацию интерфейса (ifconfig), чтобы убедиться, что создан виртуальный IP-адрес. Убедитесь, что создан новый сетевой интерфейс с IP-адресом, назначенным параметру delegate_IP в файле pgpool.conf. Он должен меть имя eth0:0.
Шаг 11
Запустите процесс Pgpool-II от имени пользователя root во втором экземпляре сервера Pgpool-II. Не запускайте его как сервис. Теперь в журналах должно быть видно, что один экземпляр был продвинут до статуса главного, а другой успешно запущен. Главный узел должен сообщить, что он принял запрос на регистрацию от неглавного экземпляра Pgpool-II (через его IP-адрес).
Шаг 12
Чтобы остановить процессы Pgpool-II, используйте следующие команды от имени пользователя root:
sudo su
/usr/sbin/pgpool --mode=immediate stop
Было ли это полезно?