{{indexmenu_n>5}} ======Резервирование Radius-сервера====== Каждый Radius-сервер описывается FSM (конечным автоматом). Radius-сервер может быть в одном из шести состояний: * **Initial** — состояние при старте fastPCRF; * **Alive** — Radius-сервер доступен, можно посылать на него запросы; * **Dead** — Radius-сервер недоступен, запросы не посылать; * **Alive-ping-sent** — послали ping на Radius-сервер в состоянии Alive, ждем ответа; * **Dead-ping-sent** — послали ping на Radius-сервер в состоянии Dead, ждем ответа; * **Disabled** — административно запрещенный сервер. Основные состояния — **Alive** и **Dead**, остальные состояния переходные. Radius-сервер считается доступным, если он находится в состояниях **Alive** или **Alive-ping-sent**. В остальных состояниях Radius-сервер считается недоступным и отправка запросов на него невозможна. Ping — это запрос Status-Server или, если Radius-сервер не поддерживает Status-Server (опция ''radius_status_server''), Access-Request с User-Name и Password равным опциям ''radius_ping_user_name'' и ''radius_ping_user_password'' соответственно. Раз в 10 секунд запускается задача watchdog, которая проверяет, надо ли посылать пинг, получен ли ответ на пинг, и в соответствии с этим переводит сервер в то или иное состояние или оставляет состояние неизменным. При старте fastPCRF все Radius-сервера находятся в состоянии **Initial**. FastPCRF посылает к ним ping и переходит в состояние **Dead-ping-sent** ожидания ответа на пинг. В состоянии **Alive** сервер пингуется только если от него не поступало никаких ответов в течение последних ''radius_keepalive'' секунд. То есть если сервер отвечает на запросы и происходит непрерывный обмен запрос-ответ, — пинги к нему не шлются. При отправке пинга сервер переходит в состояние **Alive-ping-sent** (ожидание ответа на пинг). В состоянии **Dead** сервер пингуется раз в ''radius_dead_timeout'' секунд: посылается пинг и сервер переходит в состояние **Dead-ping-sent**. То есть если ''radius_dead_timeout=3600'' (1 час), то Radius-сервер может перейти в состояние **Alive** не раньше чем через час после перехода в состояние **Dead**. В состояниях **Dead**/**Alive-ping-sent** ответа на пинг ожидание максимум ''radius_response_timeout'' секунд. Важен не сам факт ответа на пинг, а факт прихода чего-либо (любого Radius-сообщения) от сервера. Если ответ есть — сервер переходит в состояние **Alive**. Если нет ответа — в состояние **Dead**. В состояние **Disabled** сервер можно перевести только CLI-командой ''pcrf radius disable''. Это состояние аналогично состоянию **Dead** (сервер недоступен), только никакие пинги не посылаются. Вывод из состояния **Disabled** — также только CLI-командой ''pcrf radius enable''. Сервер переходит в **Dead** и немедленно шлется пинг (то есть состояние становится **Dead-ping-sent**). При переходе Radius-сервера в состояния **Dead**/**Disabled** или **Alive** watchdog оповещает fastPCRF, что такой-то сервер стал недоступен или доступен соответственно.\\ **Важно!** Резервирование Radius-серверов реализовано по схеме Master-Slaves: только один Radius-сервер считается рабочим (master), остальные — резервные (в каком бы состоянии они не находились). Radius-сервера задаются списком (каждый Radius-сервер — в отдельной опции ''radius_server''), самым предпочтительным считается сервер, заданный в первой (по порядку в ''fastpcrf.conf'') опции ''radius_server'', затем менее предпочтительный, затем еще менее и т.д. Если сервер с номером N > 1 является master’ом, — это значит, что все сервера перед ним (1..N-1) недоступны (**Dead**). Если какой-либо серверов 1..N-1 становится живым (**Alive**) — он немедленно становится master’ом и все запросы идут на него. Ответы от прежнего master’а принимаются. Если становится недоступным текущий master, — ищется самый первый сервер в состоянии **Alive** и он становится master’ом. Radius-серверам авторизации не шлется никаких сообщений, когда они получают или теряют статус мастера. А accounting серверам — шлется: если accounting-сервер теряет статус мастера, ему посылается Accounting-Off; если accounting-сервер обретает статус мастера, ему посылается Accounting-On. В Accounting-On/Off посылаются следующие атрибуты: * NAS-атрибуты: NAS-IP-Address, NAS-IPv6-Address, NAS-Identifier. Посылается либо только один из этих атрибутов (приоритет именно такой, как эти атрибуты здесь перечислены — самый приоритетный NAS-IP-Address), либо, если опция ''radius_add_all_nas_ids=1'', все известные; * Acct-Status-Type = Accounting-On или Accounting-Off; * Acct-Session-Id = 0 — это значение acct-session-id не может встретиться ни у какой acct-сессии.