Когда клиент проходит аутентификацию, на сервере происходит проверка соответствия имени пользователя и пароля данным из базы данных пользователей. Если данные совпадают, то клиент проходит авторизацию. Однако при большом количестве пользователей процесс авторизации может занимать длительное время.
Для решения этой проблемы предлагается использовать параллельные серверы и балансировку нагрузки между ними в зависимости от загруженности каждого сервера. При этом для клиентов сохраняется единая точка входа — сервер Radius, который на самом деле заменяется на proxy-сервер (он только балансирует запросы между известными ему другими серверами). Proxy-сервер запоминает, что если он авторизовал пользователя A на сервере B, то запрос будет направлен преимущественно на этот же сервер B.
Пакет FreeRadius настроен как балансирующий proxy-сервер, который распределяет запросы от многих клиентов на одну точку доступа к нескольким серверам.
Шаг 1. Добавление прокси в список клиентов серверов
В конфигурационном файле clients.conf
на стороне Radius-сервера определить прокси как клиента:
client client1 { ipv4addr = 10.10.10.61 secret = testing123 }
Шаг 2. Добавление клиента в список клиентов прокси
В конфигурационном файле clients.conf
на стороне прокси определить клиента:
client client1 { ipv4addr = 10.10.10.60 secret = testing123 }
Шаг 3. Добавление серверов и параметров балансировки в конфигурацию прокси
В файле proxy.conf
конфигурации прокси:
home_server localhost {}
соответственно числу серверов;ipv4addr = адрес_сервера
:home_server server1 { ipv4addr = 10.10.10.62 } home_server server2 { ipv4addr = 10.10.10.63 }
home_server_pool my_auth_failover {}
type = fail-over
на type = load-balance
(описание режимов балансировки в разделе Варианты режимов балансировки)home_server = localhost
home_server = имя_секции
из пункта 2 home_server_pool my_auth_failover { type = load-balance //home_server = localhost home_server = server1 home_server = server2 }
mods-enabled
(там находятся символические ссылки на конфигурации модулей, которые "должны быть загружены").
fail-over
— запрос отправляется на первый живой домашнему серверу в списке. Т.е. если первый домашний сервер отмечен как "мертвый", то выбирается второй и т.д.load-balance
— выбирается наименее загруженный домашний сервер, где "наименьшая загруженность" определяется путем определения количества запросов, отправленных на этот домашний сервер, и вычитанием количество ответов, полученных от этого домашнего сервера.client-balance
— домашний сервер выбирается путем хэширования IP-адреса источника пакета. Если этот домашний сервер не работает, то используется следующий по списку, как и в случае при "fail-over".client-port-balance
— выбор домашнего сервера осуществляется путем хэширования IP-адреса и порта источника пакета. Если этот домашний сервер не работает, то используется следующий по списку используется, как и в случае с "fail-over".keyed-balance
— выбор домашнего сервера осуществляется путем хэширования (FNV) содержимого атрибута Load-Balance-Key из элементов управления. Затем запрос отправляется на домашний сервер выбранный пользователем:server = (hash % num_servers_in_pool)
Если в элементах управления отсутствует Load-Balance-Key, метод балансировки нагрузки идентичен "load-balance".
Для большинства не-EAP методов аутентификации атрибут User-Name является хорошим ключом. Политика "unlang" может быть использована для копирования User-Name в атрибут Load-Balance-Key атрибут. Этот метод может не работать для сессий EAP, поскольку имя пользователя вне туннеля TLS часто является статическим статичным, например, "anonymous@realm".