...
- Настройка репликации базы данных mongodb
- Настройка приложения WNAM для использования реплицированной базы
- Настройка кластерного IP-адреса серверов
Репликация mongodb
Механизм обеспечения отказоустойчивости базы данных путём репликации её на несколько серверов встроен в mongodb и очень подробно описан в официальной документации. Он основан на использовании набора репликации (replica set), функционирующем на основном (primary) и одном или более резервных (secondary) серверов, возможно с использованием арбитра (arbiter). Вы можете перенастроить уже работающую у вас базу mongo для работы в кластере, без потери данных.
Минимальный набор серверов для включения в кластер состоит из основного, резервного экземпляра сервиса, и арбитра. Арбитр не хранит данные, а является лишь посредником при проведении голосования по выбору мастера. Возможно запустить службу арбирта на одном из двух серверов с базами, на нестандартных портах. Допустим, мы хотим создать кластер из трёх серверов (виртуальных машин):
№ | ИмяАдрес | 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 |
...
...
Настройка кластерного IP-адреса
...
Для того, чтобы внешние по отношению к серверам WNAM воспринимали оба сервера как один кластер, необходимо настроить средство, позволяющее путём голосования выбрать активный сервер, присвоить ему кластерный адрес, и переключать его в случае сбоя активного узла. Такое повоедение можно получить, если установить и настроить простое средство кластеризации серверов Linux - ucarpd.
Необходимо его установить на двух серверах - primary и secondary. Сервер-арбитр участвует только в выборах активного узла mongodb, но не в IP-кластере.
apt-get install ucarp
Настройка ucarpd проста и требует изменения только конфигурационного файла /etc/network/interfaces. Мы выберем кластерный адрес 1.2.3.91. На него можно зарегистрировать ваше DNS-имя wnam.domain.net.
На первом (активном) сервере:
iface eth0 inet static
address 1.2.3.89
netmask 255.255.255.192
network 1.2.3.64
broadcast 1.2.3.127
gateway 1.2.3.65
dns-nameservers 1.2.3.5
dns-search domain.net
ucarp-vid 1
ucarp-vip 1.2.3.91
ucarp-password WNAMpassword
ucarp-advskew 0
ucarp-advbase 1
ucarp-master yes
iface eth0:ucarp inet static
address 1.2.3.91
netmask 255.255.255.255
На втором (резервном) сервере:
iface eth0 inet static
address 1.2.3.90
netmask 255.255.255.192
network 1.2.3.64
broadcast 1.2.3.127
gateway 1.2.3.65
dns-nameservers 1.2.3.5
dns-search domain.net
ucarp-vid 1
ucarp-vip 1.2.3.91
ucarp-password WNAMpassword
ucarp-advskew 30
ucarp-advbase 1
ucarp-master no
iface eth0:ucarp inet static
address 1.2.3.91
netmask 255.255.255.255
Перезапустите сетевую службу на обоих серверах (service networking restart) и проверьте, что основной первый сервер получил требуемый кластерный адрес.
Попробуйте обратиться к веб-интерфейсу WNAM через кластерный адрес или имя. Попробуйте теперь отключить сетевой интерфейс первого сервера. Через не более чем 5 секунд система WNAM будет снова доступна по кластерному адресу, а база данных будет указывать на резервный сервер. При включении первого сервера произойдет повторное переключения кластерного адреса обратно, и репликация базы.
Для внешних клиентов - беспроводных контроллеров, серверов доступа, в настройках RADIUS-клиента, форм перенаправления и т.п. - вы везде должны использовать только кластерный адрес 1.2.3.91 или DNS-имя wnam.domain.net.