Начиная с версии 1.1.512 WNAM позволяет создавать отказоустойчивые конфигурации путём объединение двух или более серверов в кластер. Это требуется, если вы хотите обеспечить полную непрерывность предоставления услуги авторизации беспроводного доступа путём дублирования управляющих серверов и баз дынныхданных. В случае выхода из строя одного из серверов кластера, нарушения сетевой связности, отказа жёсткого диска и базы данных ваша система с точки зрения пользователей продолжит работыработу, а данные не потеряются. Время переключения составляет порядка 10 секунд. Не забывайте, что использование этого механизма не отменяет необходимости делать периодический бэкап (дамп) базы.
Для работы механизма кластеризации требуется mongodb версии >3.0 и утилита ucarp.
Внимание! Механизм работы кластер высокой доступности является лицензируемым.
Для настройки кластера вы должны выполнить три действия:
...
Минимальный набор серверов для включения в кластер состоит из основного, резервного экземпляра сервиса, и арбитра. Арбитр не хранит данные, а является лишь посредником при проведении голосования по выбору мастера. Возможно запустить службу арбирта арбитра на одном из двух серверов с базами, на нестандартных портах. Допустим, мы хотим создать кластер из трёх серверов (физических или виртуальных машин):
№ | Имя | IP-адрес | Роль | Приоритет |
---|---|---|---|---|
1 | wnam-srv1.domain.net | 1.2.3.89 | PRIMARY | 2 |
2 | wnam-srv2.domain.net | 1.2.3.90 | SECONDARY | 1 |
3 | wnam-arbiter.domain.net | 1.2.3.92 | ARBITER | 0 |
Вы должны на каждом из серверов в файлах /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 пользователи и устройства воспринимали оба сервера как один кластер, необходимо настроить средство, позволяющее путём голосования выбрать активный сервер, присвоить ему кластерный адрес, и переключать его в случае сбоя активного узла. Такое повоедение поведение можно получить, если установить и настроить простое средство кластеризации серверов 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.
...