Биллинговая система Nodeny
29 Апреля 2024, 18:54:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2 3
  Печать  
Автор Тема: NoDeny High Availability Service (NoDeny Кластер)  (Прочитано 11316 раз)
Andrey Zentavr
NoDeny
Старожил
*

Карма: 29
Offline Offline

Сообщений: 301



Просмотр профиля
« : 23 Июля 2010, 11:47:04 »

Попросили меня обдумать возможность создания кластера для NoDeny.
Не пробовал ли кто-нибудь реализовать?

У меня пока две идеи на уме:
Идея 1: Виртуализация
Ставим два сервера, на обоих поднимаем что-то типа DRBD/Heartbeat (Линукс) + Xen. В Dom1 ставим Фрю. Примерно как я расписывал тут:
http://www.opennet.ru/base/net/xen_cluster_howto.txt.html - Создание кластера высокой доступности для XEN с Live миграцией в CentOS 5.3 с использованием VLAN и DRBD
+ http://www.opennet.ru/tips/2248_xen_freebsd_virtual.shtml
+ http://www.opennet.ru/tips/2369_xen_freebsd_virtual_guest_install.shtml

Минус тут я вижу один: если упадёт что-то внутри виртуальной машины - то система не работает.
Плюс: Если один из серверов мёртвый - второй подхватывает работу.

Идея 2: Два парралельных сервера
Ставим два сервера, поднимаем MySQL репликацию БД bill, ставим какой-нить carp (man 4 carp). Ставим набор Perl скриптов биллинга.

Минус: как быть со скриптом nomounth.pl? Не совсем хочется с людей два раза абонплату снимать.
Плюс: мне кажется с настройкой этого добра попроще чем в первом случае.
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #1 : 23 Июля 2010, 12:10:02 »

2-й вариант намного лутше чем 1-й

но есть ище 3-й вариант
ставиш 3 сервера
1-й основная бд
2-й реплецированая бд
3-й ядро биллинга

плюс: не гемороишся с кластерами и carp-ами и переходом на новый месяц
минус: сателиты работают только с 1-й бд
« Последнее редактирование: 23 Июля 2010, 12:11:42 от VitalVas » Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #2 : 23 Июля 2010, 12:19:18 »

зачем тебе чтото делать на второй БД?
они ж slave
просто в режиме выборки считай будет работать
Записан
Andrey Zentavr
NoDeny
Старожил
*

Карма: 29
Offline Offline

Сообщений: 301



Просмотр профиля
« Ответ #3 : 23 Июля 2010, 14:05:04 »

2-й вариант намного лутше чем 1-й

но есть ище 3-й вариант
ставиш 3 сервера
1-й основная бд
2-й реплецированая бд
3-й ядро биллинга

плюс: не гемороишся с кластерами и carp-ами и переходом на новый месяц
минус: сателиты работают только с 1-й бд

Здесь узкое место - 3й сервер. Упал сервер - нету биллинга.
Дело в том, что сегодня ночью у нас что-то случилось с сервером биллинга - то ли электропитание прыгнуло, то ли УПС спортачил...  В общем имеем выгоревший блок питания, выгоревший слот на материнке и мёртвую сетевую. Сервер переставили. Но 4 часа даунтайма не хорошо сказалось на клиентах.

Я думаю третий предложенный Вами вариант не совсем надёжен.

ПыСы: А что по этому поводу думают авторы своего детища?
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #4 : 23 Июля 2010, 14:30:40 »

Здесь узкое место - 3й сервер. Упал сервер - нету биллинга.
Дело в том, что сегодня ночью у нас что-то случилось с сервером биллинга - то ли электропитание прыгнуло, то ли УПС спортачил...  В общем имеем выгоревший блок питания, выгоревший слот на материнке и мёртвую сетевую. Сервер переставили. Но 4 часа даунтайма не хорошо сказалось на клиентах.

Я думаю третий предложенный Вами вариант не совсем надёжен.
а ты подумай логически
упадет сервер с ядром: перестанет считатся трафик, отключаться некоторая логика, а инет будет в абонентов, т.к. сателит работает НАПРЯМУЮ с бд

самое узкое место в этой схеме - это основная бд
по этому и делается 2-а или больше сервера с бд, чтоб а аварийной ситуации можно было оперативно восстановить работу абонентов

что до питания - на 2-е фазы ставиш 2-е упс-ки и сервер с 2-а блоками питания(например Dell PowerEdge 2850)
 
Записан
stix
NoDeny
Спец
*

Карма: 72
Offline Offline

Сообщений: 1872


Nodeny Support Team

205539
Просмотр профиля
« Ответ #5 : 23 Июля 2010, 14:37:52 »

кластер правильней юзать
Записан
blackjack
NoDeny
Старожил
*

Карма: 24
Offline Offline

Сообщений: 352


Просмотр профиля Email
« Ответ #6 : 23 Июля 2010, 15:46:43 »

Цитировать
упадет сервер с ядром: перестанет считатся трафик, отключаться некоторая логика, а инет будет в абонентов, т.к. сателит работает НАПРЯМУЮ с бд

бред
Записан
Andrey Zentavr
NoDeny
Старожил
*

Карма: 29
Offline Offline

Сообщений: 301



Просмотр профиля
« Ответ #7 : 23 Июля 2010, 17:04:41 »

Здесь узкое место - 3й сервер. Упал сервер - нету биллинга.
Дело в том, что сегодня ночью у нас что-то случилось с сервером биллинга - то ли электропитание прыгнуло, то ли УПС спортачил...  В общем имеем выгоревший блок питания, выгоревший слот на материнке и мёртвую сетевую. Сервер переставили. Но 4 часа даунтайма не хорошо сказалось на клиентах.

Я думаю третий предложенный Вами вариант не совсем надёжен.
а ты подумай логически
упадет сервер с ядром: перестанет считатся трафик, отключаться некоторая логика, а инет будет в абонентов, т.к. сателит работает НАПРЯМУЮ с бд

самое узкое место в этой схеме - это основная бд
по этому и делается 2-а или больше сервера с бд, чтоб а аварийной ситуации можно было оперативно восстановить работу абонентов

что до питания - на 2-е фазы ставиш 2-е упс-ки и сервер с 2-а блоками питания(например Dell PowerEdge 2850)
 

У меня ещё почти половина абонентов юзает авторизатор.
Я так понимаю, что если ядро биллинга упало, то агент авторизации/PPPoE-сервер спокойно в базу бросит запрос, что абонент авторизирован, а модуль фаерволла в течении некоторого времени (вроде 45 секунд) откроет интернет. Но пока ядро мёртвое - снятие средств/подсчёт трафика не работает. Верно?
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #8 : 23 Июля 2010, 17:07:26 »

Слишком перемудрили ))

Вариант с виртуализацией это гемор, если хочется потрахатся тогда конечно, только причем там дрпд и хертбет непонятно, это вчерашний день. Миграция машин внутри виртуальной инфрастукрутры должна происходить свободно, но это так отвлеченно в облако ))

Вам минимум надо 2 машины, на которые заливаем мускул (мастер- мастер или мастер - слейв в зависимости от нагрузки ) и нодени. Поднимаем хертбит на фре (/usr/ports/sysutils/heartbeat) или карп, как захочете. В обеих машинках прописывает скрипты в кроне. Только на одной переход на новый месяц  откланяем минут на 10-15 позже чем на первой. Скрипт перехода построен таким образом что не будет повторно снимать абонплату с тех с кого снял.
При падении одного сервера, мы автоматом переключаем ип на второй , который на себя берет основную нагрузку, так как мускулы у нас синхронизированы, то соотвественно файрволы будут включены ровно в таком же виде какой был на первом сервере.
Минусом будет разрыв сессий у пользователй. Но я думаю они переживут.
Записан
Andrey Zentavr
NoDeny
Старожил
*

Карма: 29
Offline Offline

Сообщений: 301



Просмотр профиля
« Ответ #9 : 24 Июля 2010, 01:34:25 »

Вариант с виртуализацией это гемор, если хочется потрахатся тогда конечно, только причем там дрпд и хертбет непонятно, это вчерашний день. Миграция машин внутри виртуальной инфрастукрутры должна происходить свободно, но это так отвлеченно в облако ))
Можно использовать какую-нибудь кластерную ФС. Пример выше был "из собственного опыта". Поднималось всё для одного завода в запорожье. ..на Линухах.

Вам минимум надо 2 машины, на которые заливаем мускул (мастер- мастер или мастер - слейв в зависимости от нагрузки ) и нодени. Поднимаем хертбит на фре (/usr/ports/sysutils/heartbeat) или карп, как захочете. В обеих машинках прописывает скрипты в кроне. Только на одной переход на новый месяц  откланяем минут на 10-15 позже чем на первой. Скрипт перехода построен таким образом что не будет повторно снимать абонплату с тех с кого снял.
При падении одного сервера, мы автоматом переключаем ип на второй , который на себя берет основную нагрузку, так как мускулы у нас синхронизированы, то соотвественно файрволы будут включены ровно в таком же виде какой был на первом сервере.
Минусом будет разрыв сессий у пользователй. Но я думаю они переживут.
То есть, грубо говоря, на одном сервере ставим снятие первого числа, на втором - второго. При втором запуске скрипт nomounth.pl увидит что уже за, предположим, август месяц абонка была снята вчера (почему переспрашиваю - потому что не сильно хочется в полночь каждого первого числа судорожно отрубать из крона второй скрипт) и ничего снимать не будет.

...Если я правильно рассуждаю, то, в принципе, MySQL Multi-Master replication + carp(4) = profit?
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #10 : 24 Июля 2010, 11:26:05 »

Крон перехода ставим не второго а именно первого числа но не в полночь а в пол первого ночи. Иначе потребуется включать переход с ключиком в строке.

Кластерная фс вам не нужна, данные файловой системы на нодени не меняются. Скрипты не меняются, поэтому даже рсинк излишен. А БД реплицируется между системами через свои каналы. Ессно репликация мастер мастер предпочтительнее, в виду того что падение системы может произойти в тот момент когда вы спите Конечно  смотреть на нагрузку надо 

 
Записан
blackjack
NoDeny
Старожил
*

Карма: 24
Offline Offline

Сообщений: 352


Просмотр профиля Email
« Ответ #11 : 23 Декабря 2010, 13:21:59 »

не подскажете чем чревато 2 запущеных ядра на разных серверах которые работают с отдельными базами в режиме мастер-мастер?
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #12 : 24 Декабря 2010, 22:47:31 »

сначало хотелось бы понять зачем вам два ядра
Записан
Rico-X
NoDeny
Старожил
*

Карма: 7
Offline Offline

Сообщений: 350


Просмотр профиля
« Ответ #13 : 19 Января 2011, 21:40:39 »

Тема актуальна. Нашел готовую реализацию решения для другого биллинга http://xlabz.org/archives/303
Там в теме дан интересный скрипт который проверяет в каком состоянии находится сервер в данный момент (Основной или резервный) и в зависимости от этого запускает или останавливает ядро биллинга. Если кто заинтересован, может помочь и переделать данный скрипт под NODENY?
Записан
Sork
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 29

Nodeny 50.32.


Просмотр профиля
« Ответ #14 : 16 Марта 2011, 20:15:39 »

остался непонятен момент - будут ли авторизоваться пользователи на сателлите, который подключен к Slave-БД при мертвом ядре биллинга?

Можно было бы тогда разместить биллинг в Датацентре, на каждый сателлит реплицировать БД даже на разных площадках и не иметь проблем при проблемах доступа к основной БД (переключаться на Slave).
« Последнее редактирование: 16 Марта 2011, 20:19:55 от Sork » Записан
Страниц: [1] 2 3
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!