Мой PostgreSQL
служба должна начаться после OpenVPN
, и когда я проверяю порядок каталогов rc.X, они отображаются как S16openvpn и S19postgresql, поэтому они находятся в правильном порядке.
Однако подключение к базе данных через VPN не удается, и журналы всегда указывают, что PostgreSQL
не мог привязать при запуске. Я предполагаю, что для запуска всех сервисов OpenVPN и PostgreSQL
запускается перед загрузкой OpenVPN
сети полно.
Есть ли способ для PostgreSQL попытаться перезагрузить и попытаться привязаться к OpenVPN
сеть, прежде чем сдаться?
Мне кажется, вы пытаетесь привязать postgres к IP-адресу, связанному с туннелем. Если это так, ip_nonlocal_bind
это решение ваших проблем. Установка ip_nonlocal_bind позволяет вам выполнять привязку к любому IP-адресу, даже к тому, который не связан с вашим компьютером, что именно то, что вам нужно, когда вы хотите привязаться к IP-адресу, которого у вас еще нет - например, при использовании виртуальных IP-адресов, которые перемещаются между активными и пассивные узлы.
Предполагая, что это только ipv4;
echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind
Или бросить в /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind
Это мой обходной путь, который я использовал много времени в этих ситуациях: отредактируйте стартовый скрипт postresql rc.d и добавьте задержку с sleep
команда bash. Я знаю, что это не так чисто, возможно, у кого-то есть лучшее решение.
Отбросьте 2 отдельных сценария запуска и просто создайте тот, который вызывает их оба в правильной последовательности, с любой зависимой логикой, которая вам нравится.