Возможно ли реализовать два OpenVPN с возможностью отказоустойчивости и репликации? То есть, если один выйдет из строя/откажется, другой будет доступен для аутентификации, настройки сервера/клиента и т. д.?
решение1
Я не понял, зачем стрелять из пушки в лету. ИХМО, есть более простой способ: использовать встроенные функции OpenVPN и linux iproute2 для многопутевого резервирования. Я буду безопаснее, стабильнее и менее ресурсоемким.
Источник:https://openvpn.net/index.php/open-source/documentation/howto.html
Реализация конфигурации балансировки нагрузки/отказа Клиент
Конфигурация клиента OpenVPN может ссылаться на несколько серверов для балансировки нагрузки и отказоустойчивости. Например:
remote server1.mydomain
remote server2.mydomain
remote server3.mydomain
укажет клиенту OpenVPN попытаться подключиться к server1, server2 и server3 в указанном порядке. Если существующее соединение разорвано, клиент OpenVPN повторит попытку последнего подключенного сервера, а если это не удастся, перейдет к следующему серверу в списке. Вы также можете указать клиенту OpenVPN рандомизировать свой список серверов при запуске, чтобы нагрузка клиента была вероятностно распределена по пулу серверов.
remote-random
Если вы также хотите, чтобы сбои разрешения DNS приводили к переходу клиента OpenVPN на следующий сервер в списке, добавьте следующее:
resolv-retry 60
Параметр 60 сообщает клиенту OpenVPN, что необходимо попытаться разрешить каждое удаленное DNS-имя в течение 60 секунд, прежде чем переходить к следующему серверу в списке.
Список серверов также может относиться к нескольким демонам сервера OpenVPN, работающим на одном компьютере, каждый из которых прослушивает соединения на своем порту, например:
remote smp-server1.mydomain 8000
remote smp-server1.mydomain 8001
remote smp-server2.mydomain 8000
remote smp-server2.mydomain 8001
Если ваши серверы представляют собой многопроцессорные машины, запуск нескольких демонов OpenVPN на каждом сервере может быть выгоден с точки зрения производительности.
OpenVPN также поддерживает директиву remote, ссылающуюся на DNS-имя, которое имеет несколько записей A в конфигурации зоны для домена. В этом случае клиент OpenVPN будет случайным образом выбирать одну из записей A каждый раз, когда домен разрешается. Сервер
Самый простой подход к конфигурации балансировки нагрузки/отказа на сервере — использовать эквивалентные файлы конфигурации на каждом сервере в кластере, за исключением использования отдельного виртуального пула IP-адресов для каждого сервера. Например:
сервер1
server 10.8.0.0 255.255.255.0
сервер2
server 10.8.1.0 255.255.255.0
сервер3
server 10.8.2.0 255.255.255.0
решение2
Отказоустойчивость? Да, я делаю это постоянно, используя heartbeat и CRM. Не стоит пытаться реплицировать или сохранять состояние; когда происходит отказоустойчивость, все подключенные клиенты в любом случае повторно аутентифицируются, и это нормально для дорожных воинов. Это не было бы нормально для VPN-сетей типа site-to-site, но (imho) OpenVPN — неподходящий инструмент для них.