k291
|
|
« : 22 Апреля 2018, 03:38:07 » |
|
Имеется резервный сервер Ubuntu+radius+Mikrotik. БР реплицируется по Master-Slave(резервный сервер). Настраивают радиус по инструкции. При запросе с Mikrotik`a, ответ: rad_recv: Access-Request packet from host 217.10.55.66 port 55867, id=216, length=129 Threads: total/active/spare threads = 5/0/5 Waking up in 0.9 seconds. Thread 4 got semaphore Thread 4 handling request 0, (1 handled so far) NAS-Port-Type = Ethernet NAS-Port = 2206959593 Calling-Station-Id = "1:e4:8d:8c:b8:c6:83" Framed-IP-Address = 10.0.1.82 Called-Station-Id = "dhcp_1_24" User-Name = "E4:8D:8C:B8:C6:83" User-Password = "" NAS-Identifier = "Sap" NAS-IP-Address = 217.10.55.66 # Executing section authorize from file /etc/freeradius/sites-enabled/nodeny +group authorize { rlm_sql (sql): Reserving sql socket id: 4 [sql] expand: call radcheck('%{User-Name}') -> call radcheck('E4:8D:8C:B8:C6:83') rlm_sql_mysql: MYSQL check_error: 1305 received rlm_sql_getvpdata: database query error [sql] SQL query error; rejecting user rlm_sql (sql): Released sql socket id: 4 ++[sql] = fail +} # group authorize = fail Using Post-Auth-Type Reject WARNING: Unknown value specified for Post-Auth-Type. Cannot perform requested action. # Executing group from file /etc/freeradius/sites-enabled/nodeny Delaying reject of request 0 for 1 seconds Going to the next request Thread 4 waiting to be assigned a request
Все делаю правильно, повторял действия по инструкции несколько раз. Ответ один и тотже. Сервер MASTER, настроен по аналогии, но все работает как надо. Подскажите, что не так?
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #1 : 22 Апреля 2018, 16:47:16 » |
|
ну проверьте mysql клиентом с этого таза вызов call radcheck('E4:8D:8C:B8:C6:83'); Пишет же что в нем ошибка sql
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #2 : 23 Апреля 2018, 03:20:55 » |
|
Пробовал. Вот ответ: mysql> CALL radreply('E4:8D:8C:B8:C6:83', 'dhcp_1_24'); +------+-------------------+-------------------+-----------+---+ | NULL | login | Framed-IP-Address | usr_ip | = | +------+-------------------+-------------------+-----------+---+ | NULL | E4:8D:8C:B8:C6:83 | Framed-IP-Address | 10.0.1.82 | = | +------+-------------------+-------------------+-----------+---+ 1 row in set (0,01 sec)
+------+-------------------+-----------------+-----+---+ | NULL | login | Session-Timeout | 600 | = | +------+-------------------+-----------------+-----+---+ | NULL | E4:8D:8C:B8:C6:83 | Session-Timeout | 600 | = | +------+-------------------+-----------------+-----+---+ 1 row in set (0,01 sec)
Query OK, 0 rows affected (0,01 sec) И выдает новый адрес: mysql> SELECT get_ip_by_tag('1', 'dhcp_1_saperka24'); +----------------------------------------+ | get_ip_by_tag('1', 'dhcp_1_saperka24') | +----------------------------------------+ | 10.0.1.201 | +----------------------------------------+ 1 row in set (0,01 sec)
Радиус запущен. И перезагружал: ps aux | grep radi freerad 25362 0.0 0.1 479884 6184 ? Ssl 04:15 0:00 /usr/sbin/freeradius root 25441 0.0 0.0 15476 1024 pts/8 S+ 04:16 0:00 grep --color=auto radi При при таком запросе с консоли, Radius не выдает ошибок: root@vps:~# radtest E4:8D:8C:B8:C6:83 '' 127.0.0.1 0 hardpass5 Sending Access-Request of id 243 to 127.0.0.1 port 1812 User-Name = "E4:8D:8C:B8:C6:83" User-Password = "" NAS-IP-Address = 127.0.1.1 NAS-Port = 0 Message-Authenticator = 0x00000000000000000000000000000000 rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=243, length=20
А при дебаге, ошибка sql.
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #3 : 23 Апреля 2018, 04:00:26 » |
|
Пробовал перезалить базу вручную через консоль, взяв с рабочего сервера. Результат тот же. Пере создавал процедуру, проблема осталась. У человека с форума была подобная проблема, причина в кодировке. Менял кодировку, вручную писал правила. Не помогло.
|
|
« Последнее редактирование: 23 Апреля 2018, 04:22:47 от k291 »
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #4 : 23 Апреля 2018, 08:00:01 » |
|
из радиуса call radcheck('%{User-Name}') -> call radcheck('E4:8D:8C:B8:C6:83') и из консоли CALL radreply('E4:8D:8C:B8:C6:83', 'dhcp_1_24');
вам не кажется то разные ?
попробуйте из консоли мускула call radcheck('E4:8D:8C:B8:C6:83');
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #5 : 24 Апреля 2018, 21:22:21 » |
|
Вот вывод с резервного сервера, на котором ошибка: mysql> call radcheck('E4:8D:8C:B8:C6:83'); ERROR 1305 (42000): PROCEDURE nodeny.radcheck does not exist А это с центрального: mysql> call radcheck('E4:8D:8C:B8:C6:83'); +------+-------------------+--------------------+-------+----+ | NULL | login | Attribute | Value | := | +------+-------------------+--------------------+-------+----+ | NULL | E4:8D:8C:B8:C6:83 | Cleartext-Password | | := | +------+-------------------+--------------------+-------+----+ 1 row in set (0,01 sec)
Query OK, 0 rows affected (0,01 sec)
Дело в том, что между центральным и резервным серверном, настроина репликация Master-Slave. + делал перенос дампа базы. А в ответ "PROCEDURE nodeny.radcheck does not exist" Пересоздал процедуру, теперь есть ответ на резервном.
|
|
« Последнее редактирование: 24 Апреля 2018, 22:09:29 от k291 »
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #6 : 24 Апреля 2018, 21:31:51 » |
|
все зависит от тогда как настраивали и делали и зарворачивали бекап....
з.ы.ну так создайте процедуру ...
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #7 : 24 Апреля 2018, 21:43:05 » |
|
если делал бекап скриптом из поставки с нодени, то он дампит только таблицы и въюхи! вот инструкция : https://ruhighload.com/Как+настроить+mysql+master-slave+репликацию%3fтолько перед 4. шагом слей дамп с мастера на слейв, я использую scp scp /directory1/filename1 usern@destination_host:/directory2/filename2
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #8 : 24 Апреля 2018, 21:47:26 » |
|
или на мастеере сделай експорт всех функций и процедур, и импортируй их на слейве перед импортом на слейве нужно выполнить ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;
|
|
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #9 : 24 Апреля 2018, 21:48:57 » |
|
может проще было делать дамп с -R
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #10 : 24 Апреля 2018, 22:10:09 » |
|
тоже не мог сначала понять в чеп трабла, потом увидел отсутствие процедур - сделал. затем ошибки мускула типа несовместимые кодировки для сравнения сейчас работает следущая схема:
db1<=>db2->db3 master1<=>master2->slave3(delay 12h) 1 и 2 мастер мастер (основной сервер 1, второй на горячую замену) 3 - слейв с задержкой в 12 часов
+ ко всему мониторинг
если упал 1, на его место стает 2, когда подняли первый, он бегом с восстанавливается, и лишь за тем он становится обратно 1; если мастера не упали а посыпались кретические таблицы но мускул работает, тут приходит на помощь слейв с задержкой = мониторинг трубит проблему и остонавливает репликацию на мастерах, и у вас есть 11.5 часов на поднятие мастеров с слейва (для быстроты слейв 3 стает мастером а мастер 1 стает слейвом)
минус такой схемы = слейв пишет с мастер2, а что если он упадет ( но мастер2 резервный и не нагружений, поетому риск его падения минимален)
успехов
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #11 : 25 Апреля 2018, 23:08:44 » |
|
Всем спасибо! Действительно, при переносе БД не перенес процедуры. Помогло: mysqldump --routines -R -u root -p nodeny > nodeny.sql А именно "--routines -R" Если надо перенести только процедуры и тригеры(Полезно когда таблица уже созданы): mysqldump --routines -R --no-create-info --no-data --no-create-db --skip-opt -u root -p nodeny > nodeny_procedury.sql
Импортируется дамп как обычная БД: mysql -u root --password='hardpass' nodeny < nodeny.sql
|
|
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #12 : 25 Апреля 2018, 23:56:19 » |
|
только mysqldump --routines -R -u root -p nodeny > nodeny.sql
-R, --routines Dump stored routines (functions and procedures). это одно и тоже зачем два раза указывать ? и если куда то переносить надо то сразу и в архив где то так mysqldump -R -u root -p nodeny | gzip > nodeny.sql.gz
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #13 : 26 Апреля 2018, 08:53:42 » |
|
-R, --routines Dump stored routines (functions and procedures). не знал, спасибо
|
|
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #14 : 26 Апреля 2018, 10:27:56 » |
|
можно сделать чуть красивее...
в my.cnf в секцию [mysqldump] routines=TRUE
|
|
|
Записан
|
|
|
|
|