forum.bitel.ru http://forum.bitel.ru/ |
|
Несколько Access+Accounting одновременно http://forum.bitel.ru/viewtopic.php?f=44&t=12591 |
Страница 1 из 1 |
Автор: | fmaks [ 23 авг 2017, 15:56 ] |
Заголовок сообщения: | Несколько Access+Accounting одновременно |
Здравствуйте. Вопрос в следующем - могут ли одновременно работать несколько Access/Accounting серверов с одинаковым rootDeviceId? Суть в следующем: одна группа Access/Accounting принимает запросы авторизации/аккаунтинга, предположим, одной группы клиентов, вторая, параллельно, обслуживает другую группу. Находил темы про резервирование и проблемы с ним в части аккаунтинга, но это не совсем то. Пока, не требуется именно резервирование, нужно разделить обработку RADIUS-запросов от групп клиентов. Запускаю вторую группу Access/Accounting серверов, естественно app.id у всех приложений разный. Получаю, на боевом сервере в accounting/error.log: Код: accounting 08-23/13:04:35 ERROR [accwrkr-2-p-12-t-1] SessionFlushingManager - Cannot find session for update with id=2610999, connectionId=2730751, sessionStart=2017-08-23 00:00:00.0 in DB! accounting 08-23/13:04:35 ERROR [accwrkr-2-p-12-t-1] SessionFlushingManager - Cannot find connection with id=2730751 in DB while flush! accounting 08-23/13:04:35 ERROR [accwrkr-2-p-12-t-1] SessionFlushingManager - Cannot find session for update with id=2610997, connectionId=2730750, sessionStart=2017-08-23 00:00:00.0 in DB! accounting 08-23/13:04:35 ERROR [accwrkr-2-p-12-t-1] SessionFlushingManager - Cannot find connection with id=2730750 in DB while flush! accounting 08-23/13:05:01 ERROR [accwrkr-3-p-13-t-1] SessionFlushingManager - Cannot find session for finish with id=2610999, connectionId=2730751, sessionStart=2017-08-23 00:00:00.0 in DB! accounting 08-23/13:05:01 ERROR [accwrkr-3-p-13-t-1] SessionFlushingManager - Cannot find connection with id=2730751 in DB while flush/finish! accounting 08-23/13:05:01 ERROR [accwrkr-3-p-13-t-1] SessionFlushingManager - Cannot find session for finish with id=2610997, connectionId=2730750, sessionStart=2017-08-23 00:00:00.0 in DB! accounting 08-23/13:05:01 ERROR [accwrkr-3-p-13-t-1] SessionFlushingManager - Cannot find connection with id=2730750 in DB while flush/finish! mq 08-23/13:09:48 ERROR [event-proc-p-2-t-1] Consumer - com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction ru.bitel.bgbilling.common.BGException: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at ru.bitel.bgbilling.modules.inet.api.server.bean.InetConnectionDao.closeConnection(InetConnectionDao.java:484) at ru.bitel.bgbilling.modules.inet.accounting.Accounting.connectionStop(Accounting.java:1653) at ru.bitel.bgbilling.modules.inet.radius.InetNas.stopConnection(InetNas.java:845) at ru.bitel.bgbilling.modules.inet.radius.InetNas.stopConnection(InetNas.java:793) at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.notify(InetRadiusProcessor.java:2599) at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.notify(InetRadiusProcessor.java:86) at ru.bitel.bgbilling.kernel.event.AbstractConsumer.notify(AbstractConsumer.java:353) at ru.bitel.bgbilling.kernel.event.Consumer.notify(Consumer.java:19) at ru.bitel.bgbilling.kernel.event.Consumer.onMessage0(Consumer.java:91) at ru.bitel.bgbilling.kernel.event.Consumer$EventListenerRunnable.runImpl(Consumer.java:51) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.Util.getInstance(Util.java:387) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009) at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5094) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at ru.bitel.bgbilling.modules.inet.api.server.bean.InetConnectionDao.closeConnection(InetConnectionDao.java:477) ... 14 more на втором сервере access/error.log Код: connection 08-23/13:11:42 ERROR [sa-p-12-t-93] AcknowledgeConsumer - java.util.concurrent.TimeoutException: Timeout waiting task done (or answer) ru.bitel.bgbilling.common.BGException: java.util.concurrent.TimeoutException: Timeout waiting task done (or answer) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:276) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.notify(AsyncEventWorker.java:201) at ru.bitel.bgbilling.kernel.event.AcknowledgeConsumer.onMessage0(AcknowledgeConsumer.java:83) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:176) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:109) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:246) at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:139) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:152) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: java.util.concurrent.TimeoutException: Timeout waiting task done (or answer) ... 17 more ... connection 08-23/13:29:41 ERROR [sa-p-12-t-52] InetSaStateModifyEvent - Connection not found with id=2738404 connection 08-23/13:29:41 ERROR [sa-p-12-t-52] InetSaStateModifyEvent - Connection not found with id=2738429 connection 08-23/13:29:41 ERROR [sa-p-12-t-52] InetSaStateModifyEvent - Connection not found with id=2738431 connection 08-23/13:29:41 ERROR [sa-p-12-t-52] InetSaStateModifyEvent - Connection not found with id=2738380 connection 08-23/13:29:41 ERROR [sa-p-12-t-52] InetSaStateModifyEvent - Connection not found with id=2738394 connection 08-23/13:29:41 ERROR [sa-p-12-t-52] InetSaStateModifyEvent - Connection not found with id=2738387 connection 08-23/13:29:41 ERROR [sa-p-12-t-52] InetSaStateModifyEvent - Connection not found with id=2738473 connection 08-23/13:29:41 ERROR [sa-p-12-t-52] InetSaStateModifyEvent - Connection not found with id=2738466 ... connection 08-23/13:12:42 ERROR [sa-p-12-t-24] ServiceActivatorDeviceWorker - [Ljava.lang.Object;@ad59779 accounting/error.log Код: accounting 08-23/13:19:59 ERROR [accwrkr-3-p-13-t-1] SessionFlushingManager - Cannot find connection with id=2739853 in DB while flush/finish! accounting 08-23/13:20:12 ERROR [accwrkr-2-p-12-t-1] SessionFlushingManager - Cannot find session for update with id=0, connectionId=2739853, sessionStart=2017-08-23 12:54:52.0 in DB! accounting 08-23/13:20:12 ERROR [accwrkr-2-p-12-t-1] SessionFlushingManager - Cannot find connection with id=2739853 in DB while flush! accounting 08-23/13:20:19 ERROR [accwrkr-3-p-13-t-1] WorkerTask - com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction ru.bitel.bgbilling.common.BGException: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at ru.bitel.bgbilling.modules.inet.accounting.SessionFlushingManager.flush(SessionFlushingManager.java:460) at ru.bitel.bgbilling.modules.inet.accounting.Accounting.sessionFinish(Accounting.java:1776) at ru.bitel.bgbilling.modules.inet.accounting.InetConnectionCallRuntime.finish(InetConnectionCallRuntime.java:426) at ru.bitel.bgbilling.modules.inet.accounting.InetConnectionCallRuntime.tryFinish(InetConnectionCallRuntime.java:369) at ru.bitel.bgbilling.modules.inet.accounting.worker.SessionFinishWorker.runImpl(SessionFinishWorker.java:112) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.Util.getInstance(Util.java:387) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009) at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5094) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at ru.bitel.bgbilling.modules.inet.accounting.SessionFlushingManager.merge(SessionFlushingManager.java:909) at ru.bitel.bgbilling.modules.inet.accounting.SessionFlushingManager.flush(SessionFlushingManager.java:385) ... 13 more accounting 08-23/13:20:32 ERROR [accwrkr-2-p-12-t-1] SessionFlushingManager - Cannot find session for update with id=0, connectionId=2739853, sessionStart=2017-08-23 12:54:52.0 in DB! Извините за простыни, не нашёл как под кат убрать. Может я что не донастроил? При чём, на второй access/accounting RADIUS запросы пока совсем не попадают. Я так понимаю они общаются через ActiveMQ, но deadlock-и то откуда? Не могут разделить - кто будет выполнять? Или, всё же, ошибка в настройке? |
Автор: | fmaks [ 23 авг 2017, 19:51 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Настройки access и accounting серверов "из коробки", различаются только app.name и app.id. У всех rootDeviceId=1 так как в BG они относятся к одной группе access+accounting. Если нужно, конфиги выложу. inet: вер. 6.2.713 / 10.03.2017 18:23:44 |
Автор: | Cromeshnic [ 24 авг 2017, 08:42 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Я думаю, если на одном rootDeviceId, то тут от предыдущих тем про резервирование нет отличий: можно несколько access, но только 1 accounting. У меня так сделано. Вы же группы клиентов на самом оборудовании хотите разделать по радиусам? Т.е. разные группы авторизации в разные порты радиусов? Продублировать ветки устройств в разных rootDeviceId не вариант? Или там общие ресурсы нужно разделять (порты устройств, например)? Если нельзя, то хз даже. А зачем именно разные радиусы тогда вообще? В чём смысл? |
Автор: | Cromeshnic [ 24 авг 2017, 08:45 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
У меня, например, одни и те же устройства есть в разных ветках - отличаются схемами подключений: IPoE и PPPoE. Соответственно, разные радиусы, разные типы устройств, обработчики. Общих ресурсов нет: порты, пулы адресов разные. |
Автор: | fmaks [ 24 авг 2017, 16:22 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Вот дело в том, что пулы адресов разделяемые. Есть клиенты из других регионов в другом часовом поясе. Хотелось бы access/accounting завести в другом часовом поясе, чтобы время в логах правильное было. Они даже авторизоваться будут на других железках. |
Автор: | ikoctya [ 07 июн 2018, 10:27 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Вопрос к разработчикам. Дерево такое: Access - Accounting - Dhcp Relay - коммутаторы. Конфигурация dhcp прописана на Access. Хочу продублировать, т.е. запустить второй access сервер на другой машине. К примеру я его запускаю с другим app-id и соответствующими настройками inet-access.xml Но тогда как указывать в конфигурации dhcp.option.serverIdentifier=x.x.x.x ??? |
Автор: | Amir [ 07 июн 2018, 19:04 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
В inet-access.xml через Код: <param name="dhcp.option.serverIdentifier" value="1.2.3.4"/> По второму параметру - если InetAccess получает DHCP-запрос, где serverIdentifier не совпадает с указанным в этом параметре, то InetAccess будет пропускать такой запрос.
<param name="dhcp.filter.serverIdentifier" value="1.2.3.4"/> |
Автор: | ikoctya [ 08 июн 2018, 10:48 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Получается в конфигурации устройства уже не нужно прописывать dhcp.option.serverIdentifier ? А в каком месте дерева расположить второй dhcp access сервер? Или его в дерево вообще можно не добавлять, а просто добавить ip через запятую в корневое устройства дерева!? |
Автор: | Amir [ 08 июн 2018, 11:22 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Цитата: Получается в конфигурации устройства уже не нужно прописывать dhcp.option.serverIdentifier ? Да, не нужно. Иначе он переопределить значение из xml.Цитата: А в каком месте дерева расположить второй dhcp access сервер? Или его в дерево вообще можно не добавлять, а просто добавить ip через запятую в корневое устройства дерева!? Не нужно добавлять в дереве, нужно указать в xml тот же rootDeviceId.
|
Автор: | ikoctya [ 08 июн 2018, 11:45 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Amir писал(а): Цитата: Не нужно добавлять в дереве, нужно указать в xml тот же rootDeviceId. Но rootDeviceId является основным/старым dhcp access сервером. Проблем не возникнет с задвоением или игнорированием dhcp-пакетов? |
Автор: | ikoctya [ 09 июн 2018, 13:33 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
А каким образом сделать, чтобы второй access сервер не проверял uptime устройств и вообще все что уже сделано первым сервером. Получается несколько избыточно |
Автор: | ikoctya [ 13 июн 2018, 18:00 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
<param name="snmp.checkUptime" value="0"/> - не катит. |
Автор: | Amir [ 13 июн 2018, 22:11 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
А что еще кроме uptime дублирует? Там manage.uptime.pause, а не snmp.checkUptime. Но его тогда нужно будет убрать из конфигурации устройств, иначе он переопределит значение из xml. |
Автор: | ikoctya [ 14 июн 2018, 19:06 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Amir писал(а): Там manage.uptime.pause, а не snmp.checkUptime. Но его тогда нужно будет убрать из конфигурации устройств, иначе он переопределит значение из xml. Почистил дерево, убрал все manage.uptime.*, прописал их только в xml первого сервера, на втором прописал только snmp.checkUptime=0, Но все равно второй пытается аптайм узнать. Где еще посмотреть? |
Автор: | ikoctya [ 19 июн 2018, 10:35 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
А как можно еще выяснить, почему резервный сервер тоже запрашивает аптайм? |
Автор: | Cromeshnic [ 19 июн 2018, 11:08 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Amir писал(а): Там manage.uptime.pause, а не snmp.checkUptime. - ikoctya писал(а): на втором прописал только snmp.checkUptime=0 Мб в этом дело? |
Автор: | ikoctya [ 19 июн 2018, 11:18 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
нет, это попытка как раз отключить проверку, проверил. |
Автор: | ikoctya [ 09 июл 2018, 12:30 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Что еще можно проверить? Делает ли второй access сервер все проверки заново или просто берет из какой-то очереди и всего лишь "помогает" первому серверу |
Автор: | ikoctya [ 24 сен 2018, 13:23 ] |
Заголовок сообщения: | Re: Несколько Access+Accounting одновременно |
Кстати, radius/dhcp (в моем случае) логи, по правой кнопке на сессии, показываются через раз. Видимо как то не совсем дублируется access сервер |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |