ThingWorx высокой доступности > Высокая доступность в PostgreSQL
Высокая доступность в PostgreSQL
В PostgreSQL 11 данные всех узлов должны синхронизироваться для каждого узла, который должен становиться текущим при получении запросов на чтение или запись. Единого решения для исключения потенциальных проблем синхронизации не существует, поэтому имеется много опций режима высокой доступности (HA) для выбора. Сравнение решений высокой доступности для PostgreSQL 11 в виде списка в табличном формате доступно здесь: https://www.postgresql.org/docs/11/different-replication-solutions.htmll.
На следующей схеме приведена рекомендуемая PTC конфигурация развертывания PostgreSQL HA.
PostgreSQL
ThingWorx может записывать большой объем содержимого в свою базу данных, и важно сохранять неизменной последовательность записи на всех узлах PostgreSQL. PTC рекомендует конфигурировать все узлы PostgreSQL для синхронной репликации в рамках архитектуры вложенной репликации, используя ограничения, которые она размещает для синхронной репликации. Для этой опции имеются следующие требования.
Необходимо развернуть три узла одинакового размера на сервере PostgreSQL.
Один узел должен быть главным, на него должны направляться запросы на запись. Главный узел передает поток записей упреждающей журнализации (WAL) резервному узлу и просто фиксирует транзакции при подтверждении их резервным узлом.
Один резервный узел должен использоваться для получения потокового содержимого с главного узла. Он также будет направлять поток содержимого с главного узла второму резервному узел.
Другой дополнительный резервный узел должен использоваться для получения потокового содержимого с первого резервного узла. В случае сбоя узла или перехода одного узла в автономный режим этот узел будет одним из двух оставшихся узлов и будет по-прежнему выполнять процесс подтвержденной потоковой передачи главного или резервного узла.
Pgpool-II
Для выполнения PostgreSQL в конфигурации высокой доступности запросы на запись и чтение должны направляться соответствующему узлу, работоспособность узла должна контролироваться, а неработоспособные узлы должны быть переведены в автономный режим и восстановлены. PTC рекомендует для выполнения этих заданий использовать Pgpool-II. Для этой опции имеются следующие требования.
Необходимо развернуть два серверных узла Pgpool одинакового размера. Они должны работать в режиме "активный/пассивный".
Один из них должен работать как главный узел. Он должен направлять трафик записи главному узлу PostgreSQL, а трафик чтения - резервному узлу PostgreSQL.
Один узел нужно использовать для работы в качестве резервного. При сбое главного узла Pgpool он будет принимать на себя распределение трафика.
Для управления узлами Pgpool-II нужен один виртуальный IP-адрес. Главный узел будет использовать этот адрес для получения трафика PostgreSQL от клиентов.
Замечания относительно Pgpool-II.
Pgpool-II не поддерживается в среде Windows.
В реализации PostgreSQL в облаке может использоваться механизм непосредственного аварийного переключения DNS вместо Pgpool-II.
Чтобы уменьшить общее количество серверов в среде HA, можно выполнять процесс Pgpool-II на том же сервере, что и приложение ThingWorx.
PTC не рекомендует использовать Pgpool-II для управления репликацией PostgreSQL. В руководстве, предоставленном в этом документе, используется потоковая репликация (SR) PostgreSQL, а Pgpool-II выполняет маршрутизацию трафика, мониторинг работоспособности узла и автоматизацию переключения при отказе.
Было ли это полезно?