Я хочу настроить базу данных HA postgres. Я настраиваю главную и подчиненную базы данных с синхронной потоковой репликацией на разных физических серверах. Когда есть ошибка в репликации, подчиненная база данных запускает сценарий, который переключает подчиненную базу данных на главную базу данных.
На обоих серверах настроен дополнительный виртуальный IP-адрес, при нормальной работе этот интерфейс не работает на подчиненном сервере БД. В случае сбоя сценарий отключит этот интерфейс на главном сервере БД и запустит соответствующий интерфейс на подчиненном сервере БД. Затем сценарий выполняет некоторые команды arp, чтобы сообщить локальной сети об изменении сопоставления IP-адресов. Когда клиенты db повторно подключаются, они подключаются к подчиненному серверу, который работает как главный на том же IP-адресе.
Это работает далеко, но есть сценарии, когда возникают проблемы.
Если я отключу сетевой разъем на главной машине, сработает механизм аварийного переключения. Подчиненная база данных становится главной на том же IP-адресе. Однако сценарий не может завершить работу интерфейса с виртуальным IP-адресом на (старом) мастере, потому что сеть не работает. Если я затем снова подключу сетевой плагин, на виртуальном IP будет конфликт IP-адресов.
Существуют ли концепции, позволяющие справляться с подобными ситуациями?
Я думаю, что вы ищете что-то вроде сердцебиения. Я нашел Как выполнить простое переключение IP-адресов с помощью HeartBeat что должно дать вам один из способов решения проблемы.
Я считаю, что такая установка называется использованием плавающего vip (как в виртуальном ip)
HTH