Высокая доступность сервиса OpenVPN

Высокая доступность сервиса OpenVPN

В настоящее время я разрабатываю сервис OpenVPN, который обеспечит интернет-пользователям повышенную конфиденциальность.

На данный момент я намерен использовать выделенные серверы под управлением CentOS и Xen, чтобы предоставить нескольким доменам по одному серверу OpenVPN для обеспечения высокой доступности и балансировки нагрузки.

  1. Если один domU выйдет из строя, я хочу автоматически поднять второй domU на том же хосте. Возможен ли такой тип отказоустойчивости?

  2. Существуют ли какие-либо решения для балансировки нагрузки VPN-подключений к серверам domU?

решение1

  1. Да, можно отслеживать состояние Xen DomU и запускать произвольные команды, если DomU выходит из строя. Вы можете запустить экземпляр демона Monit на третьем хосте (DomU или физическом), который проверяет основной OpenVPN DomU и сообщает Dom0 о необходимости запустить вторичный DomU, если основной вышел из строя. В документации Monit есть много примеров, которые покажут, как это реализовать:

  2. Да, OpenVPN имеет некоторые встроенные возможности обеспечения высокой доступности и/или распределения нагрузки, и его довольно просто настроить.

Во-первых, вы будете запускать несколько серверов OpenVPN параллельно, каждый из которых будет слушать свой собственный IP-адрес. Серверы не делятся состоянием и ничего не знают друг о друге.

Затем вы указываете несколько опций '--remote' либо в командной строке, либо в конфигурационном файле клиента OpenVPN. Когда клиенту доступны несколько опций удаленного сервера, он случайным образом выберет одну и подключится к ней. Если этот сервер не удаётся, он попытается подключиться ещё раз, а затем случайным образом выберет другой сервер, если подключение не удаётся. Для получения дополнительной информации см. документацию OpenVPN здесь:

Возможно, вам будет интересно увидеть мой ответ на аналогичный вопрос здесь:

Как я уже отмечал в другом своем ответе, вам, вероятно, стоит обратить внимание на следующие клиентские опции, в частности:

  • подключиться-повторить попытку
  • подключиться-повторить-макс
  • удаленно-случайный
  • ifconfig-pool-persist

Конечно, это не настоящая балансировка нагрузки, потому что клиент OpenVPN не выбирает сервер с наименьшей нагрузкой или наименьшим количеством клиентов — он просто выбирает сервер случайным образом. Если вам нужна настоящая балансировка нагрузки, чтобы гарантировать, что нагрузка на серверы остается равномерной, вам нужно будет найти какое-то выделенное решение для балансировки нагрузки, либо аппаратное, либо программное.

решение2

  1. Возможно, вы могли бы настроить две VM domU как два узла обычного кластера Linux HA. Но я думаю, что эта конфигурация может работать, только если второй узел находится в режиме ожидания, а не выключен. Если вы хотите, чтобы резервный узел domU запускался, если первый не работает, я думаю, вам нужно написать скрипт на уровне dom0, который будет работать вечно, проверяя работоспособность первого узла и в случае сбоя принудительно отключая его полностью и запуская резервную копию (я не думаю, что такой скрипт оболочки должен быть слишком сложным, или, может быть, вы можете использовать какое-нибудь хорошее программное обеспечение для Linux, которое может выполнить эту работу, но это может быть более навязчиво).

  2. Также для этого вы можете рассмотреть две виртуальные машины, как обычные машины Linux, и установить и использовать стандартное решение Linux для балансировки нагрузки.

решение3

Для настройки кластера OpenVPN HA вы можете использовать комбинацию OpenVPN, WAN Load Balancing и OSPF. Здесь есть свежий HOWTO: http://www.vyatta4people.org/highly-available-openvpn-connection-between-two-offices/ Наслаждаться!

Связанный контент