Кластер для radius`а

 

Падение и простой любого сервиса это всегда плохо, а если представить что если упал сервис аутентификации и авторизации это простно ужастно. Что бы избежать такого, построим кластер на open source продуктах. Сервисы которые будем защищать: radius, apache, mysql. В качестве хранилища конфигурационных файлов и БД будем использовать распределенное сетевое хранилище - "raid1 через Ethernet". Для этих целей воспользуемся связкой DRBD+OCFS2. На схеме нарисовал три ноды кластера, настройку произведем на двух, но в схему закладываем требования масштабируемости, поэтому три. Распределенную файловую систему OCFS2 подключаем в /cluster0 на каждой ноде. Apache используем для dialup_admin`а - управление аккаунтами всех пользователей.

Алгоритм работы такой: Есть виртуальный ip - в нашем случае 192.168.175.254, который может мигрировать между нодами кластера. Все ноды кластера под linux. Этот ip указываем в настройках всех сетевых устройств, на которых необходимо аутентифицироваться через radius. Есть подсеть в которой находятся все активные сетевые устройства - 192.168.0.0/16. Есть маршрутизаторы cluster-peX, соединенные посредством VFI для поддержки маршрута по умолчанию через HSRP, в нашем случае - 192.168.175.253. На каждой ноде есть статический маршрут в 192.168.0.0/16 через 192.168.175.253. Сервисы radius, mysql, apache объединены в единую группу и работают на той ноде, которая в данный момент держит ip 192.168.175.254. Миграция группы с сервисами происходит целиком.

Для объединения кластерных нод используем Corosync, проще представлять как уровень 1. Для манипуляциями над сервисами используем pacemaker - уровень 2. И сами сервисы - уровень 3.

Конфиг собственно pacemaker`а выглядит приблизительно так:

crm(live)configure# show
node cluster1-srv1 \
        attributes standby="off"
node cluster1-srv2 \
        attributes standby="off"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
        params ip="192.168.175.254" cidr_netmask="24" \
        op monitor interval="30s"
primitive srv_apache ocf:heartbeat:apache \
        params configfile="/cluster0/etc/apache2/httpd.conf" statusurl="http://localhost/server-status" options="-D DEFAULT_VHOST -D PHP5 -D INFO -D LANGUAGE -D STATUS" \
        op monitor interval="10s" \
        meta target-role="Started"
primitive srv_mysqld ocf:heartbeat:mysql \
        params binary="/usr/bin/mysqld_safe" config="/cluster0/etc/my.cnf" datadir="/cluster0/var/lib/mysql" user="mysql" pid="/cluster0/var/run/mysqld/mysqld.pid" socket="/cluster0/var/run/mysqld/mysql.sock" test_passwd="pwd" test_user="check" test_table="mysql.user" \
        op start interval="0" timeout="10s" \
        op stop interval="0" timeout="10s" \
        op monitor interval="20s" timeout="10s" \
        meta migration-threshold="10" target-role="Started"
primitive srv_radius lsb:radiusd \
        op monitor interval="10s" \
        meta target-role="Started"
group cluster_group ClusterIP srv_mysqld srv_radius srv_apache \
        meta target-role="Started"
location master-prefer-node1 cluster_group 50: cluster1-srv1
property $id="cib-bootstrap-options" \
        expected-quorum-votes="2" \
        stonith-enabled="false" \
        no-quorum-policy="ignore" \
        dc-version="1.0.11-6e010d6b0d49a6b929d17c0114e9d2d934dc8e04" \
        cluster-infrastructure="openais" \
        last-lrm-refresh="1329311505"
rsc_defaults $id="rsc-options" \
        resource-stickiness="20"
 

И результат работы:

cluster1-srv2 ~ # crm_mon -rn1
============
Last updated: Sat Feb 18 17:33:02 2012
Stack: openais
Current DC: cluster1-srv1 - partition with quorum
Version: 1.0.11-6e010d6b0d49a6b929d17c0114e9d2d934dc8e04
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Node cluster1-srv2: online
Node cluster1-srv1: online
        srv_radius      (lsb:radiusd) Started
        srv_mysqld      (ocf::heartbeat:mysql) Started
        ClusterIP       (ocf::heartbeat:IPaddr2) Started
        srv_apache      (ocf::heartbeat:apache) Started

Inactive resources:
 

Level Up
Sponsors:

Контактная информация

Если у Вас есть какие-либо вопросы, Вы можете связаться с нами:

Отдел продаж: (с 10:00 до 18:00)

Icq: 155-10-6525

E-mail: sales@golas.ru