10. Сценарии переключения при отказе
Возможные сценарии переключения при отказе и ожидаемая реакция на них в условиях этого развертывания.
Сценарий 1. Сбой главного узла PostgreSQL
При возникновении сбоя в node0 (текущем главном узле PostgreSQL) автоматически выполняются следующие действия.
• Pgpool начнет выполнение /etc/pgpool-II/failover.sh.
• Узел node1 PostgreSQL будет выбран в качестве нового главного узла.
• Главный узел Pgpool-II выполнит удаленный вход в узел node1 и будет продвигать его в качестве главного.
Ожидается вмешательство вручную
Действия, выполняемые системным администратором.
• Просмотрите журналы для узла node0, чтобы определить исправность сервера.
• При необходимости выполните восстановление сервера.
• После того как он станет работоспособным, выполните следующие действия:
◦ В узле node0 выполните сценарий start_replication, чтобы сделать узел node0 следующим за узлом node2 (IP-адрес 10.91.9.41 - это IP-адрес узла node2 в этом примере):
/db/bin/start_replication.sh 10.91.9.41
◦ Запустите сервис PostgreSQL в узле node0:
sudo systemctl start postgresql-10.x
◦ Используйте команду PCP, чтобы вернуть node0 в нормальное состояние.
pcp_attach_node -h /var/run/pgpoolpcp -n 0
Сценарий 2. Сбой первого резервного узла PostgreSQL
При сбое node1 (текущего основного резервного узла PostgreSQL) автоматически выполняются следующие действия.
• Pgpool начнет выполнять файл /etcpgpool-II/failover.sh.
• Узел node2 PostgreSQL будет выбран как основной резервный узел для главного узла (в данном примере это node0).
• Pgpool выполнит удаленный вход в node2 и перенацелит его на node0.
• Теперь node2 будет резервным узлом для node0.
Ожидается вмешательство вручную
Действия, выполняемые системным администратором.
• Просмотрите журналы в узле node1, чтобы определить исправность сервера.
• При необходимости выполните восстановление сервера.
• После того как он станет работоспособным, выполните следующие действия:
◦ В узле node1 выполните сценарий start_replication, чтобы сделать узел node1 следующим за узлом node2 (IP-адрес 10.91.9.41 - это IP-адрес узла node2 в этом примере):
/db/bin/start_replication.sh 10.91.9.41
◦ Запустите сервис PostgreSQL в узле node1
sudo systemctl start postgresql-10.x
◦ Используйте команду PCP, чтобы вернуть node1 в нормальное состояние.
pcp_attach_node -h /var/run/pgpoolpcp -n 1
Сценарий 3. Сбой второго резервного узла PostgreSQL
При сбое node2 (текущего второго резервного узла PostgreSQL) автоматически выполняются следующие действия:
• Pgpool начнет выполнять файл /etcpgpool-II/failover.sh.
• Никакие дополнительные действия в узле node2 не будут влиять на текущую операцию в главном и резервном узлах.
Ожидается вмешательство вручную
Действия, выполняемые системным администратором.
• Просмотрите журналы в узле node2, чтобы определить исправность сервера.
• При необходимости выполните восстановление сервера.
• После того как он станет работоспособным, выполните следующие действия:
◦ В узле node2 выполните сценарий start_replication, чтобы синхронизировать узел node2 с узлом node1 (IP-адрес 10.91.9.24 - это IP-адрес узла node1 в этом примере):
/db/bin/start_replication.sh 10.91.9.24
◦ Запустите сервис PostgreSQL в узле node2:
sudo systemctl start postgresql-10.x
◦ Используйте команду PCP, чтобы вернуть node2 в нормальное состояние.
pcp_attach_node -h /var/run/pgpoolpcp -n 2