Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Начиная с версии 1.1.512 WNAM позволяет создавать отказоустойчивые конфигурации путём объединение двух или более серверов в кластер. Это требуется, если вы хотите обеспечить полную непрерывность предоставления услуги авторизации беспроводного доступа путём дублирования управляющих серверов и баз дынныхданных. В случае выхода из строя одного из серверов кластера, нарушения сетевой связности, отказа жёсткого диска и базы данных ваша система с точки зрения пользователей продолжит работыработу, а данные не потеряются. Время переключения составляет порядка 10 секунд. Не забывайте, что использование этого механизма не отменяет необходимости делать периодический бэкап (дамп) базы.

Для работы механизма кластеризации требуется mongodb версии >3.0 и утилита ucarp.

Внимание! Механизм работы кластер высокой доступности является лицензируемым.

Для настройки кластера вы должны выполнить три действия:

...

Минимальный набор серверов для включения в кластер состоит из основного, резервного экземпляра сервиса, и арбитра. Арбитр не хранит данные, а является лишь посредником при проведении голосования по выбору мастера. Возможно запустить службу арбирта арбитра на одном из двух серверов с базами, на нестандартных портах. Допустим, мы хотим создать кластер из трёх серверов (физических или виртуальных машин):

ИмяIP-адресРольПриоритет
1wnam-srv1.domain.net1.2.3.89PRIMARY2
2wnam-srv2.domain.net1.2.3.90SECONDARY1
3wnam-arbiter.domain.net1.2.3.92ARBITER0

Вы должны на каждом из серверов в файлах /etc/hosts сделать записи вида "127.0.0.1 localhost wnam-srv1.domain.net", иначе кластер не соберется. В конфигурационных файлах /etc/mongod.conf на каждом из серверов добавьте:

...

проверьте статус репликации:
 rs.status()

У вас должно получиться что-то похожее на этоПри нормально настроенной репликации вывод этой команды будет сходен с таким:

rs0:PRIMARY> rs.status();
{
"set" : "rs0",
"date" : ISODate("2015-12-13T15:56:18.191Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "wnam-srv1.domain.net:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 16387,
"optime" : Timestamp(1450020906, 3),
"optimeDate" : ISODate("2015-12-13T15:35:06Z"),
"electionTime" : Timestamp(1450020295, 1),
"electionDate" : ISODate("2015-12-13T15:24:55Z"),
"configVersion" : 6,
"self" : true
},
{
"_id" : 1,
"name" : "wnam-srv2.domain.net:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1886,
"optime" : Timestamp(1450020906, 3),
"optimeDate" : ISODate("2015-12-13T15:35:06Z"),
"lastHeartbeat" : ISODate("2015-12-13T15:56:16.803Z"),
"lastHeartbeatRecv" : ISODate("2015-12-13T15:56:17.362Z"),
"pingMs" : 0,
"syncingTo" : "wnam-srv1.domain.net:27017",
"configVersion" : 6
},
{
"_id" : 2,
"name" : "wnam-arbiter.domain.net:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 1886,
"lastHeartbeat" : ISODate("2015-12-13T15:56:17.004Z"),
"lastHeartbeatRecv" : ISODate("2015-12-13T15:56:17.361Z"),
"pingMs" : 0,
"configVersion" : 6
}
],
"ok" : 1
}

На этом настройка mongodb завершена. Если вы переводите в реплицированный режим имеющуюся базу, вы должны увидеть появления появление соответствующих файлов с базой на втором (secondary) сервере (/var/lib/mongodb/). 

Настройка WNAM

Вы должны установить WNAM на обоих серверах (primary и secondary) установить WNAM совершенно одинаково . Вы (версия, пакеты, скрипты, настройки FreeRADIUS). Через административный веб-интерфейс вы должны настроить WNAM на основном сервере, ввести лицензионный ключ, позволяющий использовать кластерную конфигурацию.

...

   mongodb_host=wnam-srv1.domain.net;wnam-srv2.domain.net;wnam-arbiter.domain.net:30000
Запустите Перезапустите WNAM на основном и резервном сервере. В административном веб-интерфейсе каждого из них на главной странице вы увидите дополнительные записи:


При этом оба сервера, фактически, будут обращаться к одной базе данных. Проверьте, что будет, если изменить настройки на одном сервере WNAM, и проверить изменения на втором.

...

Для того, чтобы внешние по отношению к серверам WNAM пользователи и устройства воспринимали оба сервера как один кластер, необходимо настроить средство, позволяющее путём голосования выбрать активный сервер, присвоить ему кластерный адрес, и переключать его в случае сбоя активного узла. Такое повоедение поведение можно получить, если установить и настроить простое средство кластеризации серверов Linux - ucarpd.

Необходимо его установить на двух серверах - primary и secondary. Сервер-арбитр участвует только в выборах активного узла mongodb, но не в IP-кластере, поэтому на нём дополнительные настройки не нужны.

   apt-get install ucarp

Настройка ucarpd проста и требует изменения только конфигурационного файла /etc/network/interfaces. Мы выберем кластерный адрес 1.2.3.91. На него можно зарегистрировать ваше DNS-имя сервиса wnam.domain.net.

На первом (активном) сервере:

...

Перезапустите сетевую службу на обоих серверах (service networking restart) и проверьте, что основной первый сервер получил требуемый кластерный адрес.

Попробуйте обратиться к веб-интерфейсу WNAM через кластерный адрес или имя. Попробуйте теперь отключить сетевой интерфейс первого сервера. Через не Не более чем через 5 секунд система WNAM будет снова доступна по кластерному адресу, а база данных будет указывать на резервный сервер. При включении первого сервера произойдет повторное переключения кластерного адреса обратно, и репликация базы.

Для внешних клиентов - беспроводных контроллеров, серверов доступа, в настройках RADIUS-клиента, форм перенаправления и т.пд. - вы везде должны использовать только кластерный адрес 1.2.3.91 или DNS-имя wnam.domain.net.

...