Перейти к содержимому

Force stopped listing как включить в яндексе

  • автор:

forum.farmanager.com

рекомендуется включить логирование в настройках плагина, воспроизвести проблему и прислать логи автору: https://github.com/michaellukashov/Far-NetBox/issues.

Как включить логирование:

Options —> Plugins configuration —> NetBox —> Logging settings

 [x] Enable logging Logging level: Debug 2 [x] Log to file: %TEMP%\&S.log

Last edited by Michael Lukashov on Sat 19 Sep, 2015 10:22, edited 2 times in total.

Michael Lukashov

Yegor Posts: 1321 Joined: Mon 04 Apr, 2005 13:41 Location: San Ramon, CA / Kharkov, UA Has thanked: 32 times Been thanked: 58 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by Yegor » Thu 20 Jan, 2011 14:48

А чем встроенный в винду WebClient хуже?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

Yegor

artemsen Posts: 752 Joined: Sun 07 Feb, 2010 08:55 Been thanked: 4 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by artemsen » Thu 20 Jan, 2011 14:51

А он с svn разве дружит?

artemsen

Yegor Posts: 1321 Joined: Mon 04 Apr, 2005 13:41 Location: San Ramon, CA / Kharkov, UA Has thanked: 32 times Been thanked: 58 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by Yegor » Thu 20 Jan, 2011 14:53

Ну если svn работает через WebDAV, то он не должен видеть разницу.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

Yegor

artemsen Posts: 752 Joined: Sun 07 Feb, 2010 08:55 Been thanked: 4 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by artemsen » Thu 20 Jan, 2011 14:56

Разница в схеме — разные поля для обозначения размера файла и т.д.

artemsen

Kerberos464 Posts: 1239 Joined: Wed 29 Jul, 2009 20:24 Location: Saint-Petersburg Has thanked: 19 times Been thanked: 1 time

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by Kerberos464 » Thu 20 Jan, 2011 15:02

не уверен, что можно так делать, но при попытке зайти на http://live.sysinternals.com/ выдаёт ошибку:

╔═══════════════════════════════ WebDAV ═══════════════════════════════╗ ║ Request error: 411 The server refused to accept request w/o a length ║ ╟──────────────────────────────────────────────────────────────────────╢ ║ < OK >║ ╚══════════════════════════════════════════════════════════════════════╝

/плач королевны ON
add. ё, ещё один плагин, который в связке с конэму отключает мне макросы в макро либе :/
/плач королевны OFF

Last edited by Kerberos464 on Thu 20 Jan, 2011 15:08, edited 1 time in total.

16.09.2012 14:35:28 +0200 — build 2799 — все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 — build 2851 — все макросы перестали работать.
31.02.2029 25:61:61 +0200 — build 6666 — весь фар перестал работать.

Kerberos464

Yegor Posts: 1321 Joined: Mon 04 Apr, 2005 13:41 Location: San Ramon, CA / Kharkov, UA Has thanked: 32 times Been thanked: 58 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by Yegor » Thu 20 Jan, 2011 15:03

artemsen wrote: Разница в схеме — разные поля для обозначения размера файла и т.д.
Есть где-нибудь внешний такой svn, чтоб попробовать?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

Yegor

artemsen Posts: 752 Joined: Sun 07 Feb, 2010 08:55 Been thanked: 4 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by artemsen » Thu 20 Jan, 2011 15:11

Yegor wrote: Есть где-нибудь внешний такой svn, чтоб попробовать?
По умолчанию (при первом запуске) создается линк на исходники Фара: http://farmanager.com/svn/trunk/

artemsen

Kerberos464 Posts: 1239 Joined: Wed 29 Jul, 2009 20:24 Location: Saint-Petersburg Has thanked: 19 times Been thanked: 1 time

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by Kerberos464 » Thu 20 Jan, 2011 17:04

а ещё есть визуальный глюк в окне настроек.
зайти в настройки и нажать Down (первый эффект). после этого нажать Tab (второй эффект).

16.09.2012 14:35:28 +0200 — build 2799 — все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 — build 2851 — все макросы перестали работать.
31.02.2029 25:61:61 +0200 — build 6666 — весь фар перестал работать.

Kerberos464

artemsen Posts: 752 Joined: Sun 07 Feb, 2010 08:55 Been thanked: 4 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by artemsen » Thu 20 Jan, 2011 17:09

Да там вообще море ошибок. На то она и версия 0.1. Поправлю!

artemsen

DeeZ Posts: 100 Joined: Sat 20 Mar, 2010 18:48

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by DeeZ » Thu 20 Jan, 2011 17:09

Ввод логина и пароля не пердусмотрен? хотел Gdocs подключить

Спасибо за плагин. очень нужный. только бы логин\пароль, и можно фаром по телефону лазить

DeeZ

artemsen Posts: 752 Joined: Sun 07 Feb, 2010 08:55 Been thanked: 4 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by artemsen » Thu 20 Jan, 2011 17:13

Пока нет, с аутентификацией я пока даже не начинал. Но будет.

artemsen

Kerberos464 Posts: 1239 Joined: Wed 29 Jul, 2009 20:24 Location: Saint-Petersburg Has thanked: 19 times Been thanked: 1 time

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by Kerberos464 » Fri 21 Jan, 2011 09:58

спасибо за новую версию!
в 0.5 (и в 0.1 тоже так было) не работают группы сортировки, скрин:
8f829fc16c1321278ae792bea542127a.jpeg (66.53 KiB) Viewed 104167 times

то, что зелёным — находится в одной группе подсветки.
хотя опция включена: √ Use sort groups Shift-F11
win7 x64, far 2.0.1796 x64.

add. а должно быть примерно так: (локальная копия с файловой панели)

4212ccc02b811cdcb20132c304f711d7.jpeg (50.19 KiB) Viewed 104166 times

16.09.2012 14:35:28 +0200 — build 2799 — все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 — build 2851 — все макросы перестали работать.
31.02.2029 25:61:61 +0200 — build 6666 — весь фар перестал работать.

Kerberos464

artemsen Posts: 752 Joined: Sun 07 Feb, 2010 08:55 Been thanked: 4 times

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by artemsen » Fri 21 Jan, 2011 10:06

Поправил, в следующей версии будут фильтры и группы.

artemsen

Kerberos464 Posts: 1239 Joined: Wed 29 Jul, 2009 20:24 Location: Saint-Petersburg Has thanked: 19 times Been thanked: 1 time

Re: WebDAV — работа с ресурсами по протоколу WebDAV

Post by Kerberos464 » Fri 21 Jan, 2011 17:08

зашёл на ресурс (вышеупомянутый sysinternals.com), выделил несколько файлов, но копируются не они, а тот, который под курсором.
это фича?

16.09.2012 14:35:28 +0200 — build 2799 — все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 — build 2851 — все макросы перестали работать.
31.02.2029 25:61:61 +0200 — build 6666 — весь фар перестал работать.

Эксперимент force_stopped_listing в Яндекс. браузере

Как включить эксперимент force_stopped_listing в Яндекс. браузере? Кейс на скриншоте. Помогите, плиииз!

Лучший ответ

1.Клавиша F12
2. Вкладка Console, справа от неё значок настроек (шестерёнка), тык на шестерёнку.
3. В выпавшем меню выбираем Experiments
4. В списке экспериментов находим/не находим нужный и ставим/не ставим галочку

muRmotУченик (155) 1 год назад

В экспериментах, в моём браузере, нету forced stopped listing.

muRmot, привет! хотела вам 1-2 вопроса задавать если конечно можете) как можно с вами связаться, или пишите мне в телеге @jesuissoul. Буду очень благодарна вам! Спасибо!

*Ася*Мастер (1200) 1 год назад

У меня его тоже нет, хоть и три браузера

Остальные ответы

Ошибка 404

В статье мы расскажем, что означает ошибка 404 на сайте. Также она может называться:

  • 404 page not found,
  • http error 404,
  • error 404.

Ниже мы опишем, почему возникает ошибка 404, а также как ее отследить и исправить.

404 ошибка (http error 404) — что это значит?

Ошибка 404 page not found — это код ответа сервера. Что это значит?

Когда вы вводите адрес сайта, браузер запрашивает его стартовую страницу у сервера. Если сервер не может найти страницу, он сообщает об этом браузеру с помощью кода 404. Это сообщение отображается на экране пользователя в браузере.

Почему такое может произойти? Есть несколько возможных причин:

  1. Вы допустили ошибку при вводе адреса страницы или при открытии файла в браузере. Или браузеру не удалось найти IP-адрес сервера. Сервер не может найти и выдать данные потому, что вы дали ему неправильные «координаты». В таком случае вам достаточно просто исправить ошибку в URL-адресе, и вместо страницы с ошибкой 404 появятся искомые страница/файл.
  2. Данные (страница или файл) не размещены на сервере, или CMS неверно отвечает на запрос пользователя. В этом случае дело обстоит сложнее и быстро справиться с проблемой не получится. Чтобы устранить ошибку 404, определите, как создавался сайт, на котором обнаружена ошибка (на CMS или без использования CMS). От этого будет зависеть способ решения проблемы.

Мы рассмотрим, что делать с ошибкой 404 и как исправить.

Как убрать ошибку 404 на сайте, созданном на CMS (WordPress, Joomla, 1С-Битрикс и т.д.)

На сайтах, созданных с использованием CMS, встречаются различные страницы с ошибкой 404 (http status 404). В зависимости от типа страницы с ошибкой различаются причины возникновения и пути решения проблемы:

  • Если вы видите на своем сайте стандартную ошибку 404 Рег.ру:

ошибка 404 1

В большинстве случаев проблема связана с отсутствием конфигурационного файла .htaccess. Как избавиться от ошибки 404? Создайте в корневой папке сайта пустой текстовый файл с расширением .htaccess и добавьте в него стандартные директивы для используемой CMS. Стандартные директивы приведены в статье: Файлы .htaccess для популярных CMS.

Важно: в панели управления cPanel файл .htaccess по умолчанию скрыт (т.е. он существует, но не виден). Следуйте инструкции, чтобы включить отображение файла. Затем сверьте его содержимое со стандартным.

Если файл .htaccess существует и его содержимое корректно, а ошибка 404 not found сохраняется, обратитесь в техническую поддержку.

  • Если вы видите иную страницу ошибки, которую отдает CMS сайта. Например:

ошибка 404 2

Ошибка на WordPress

ошибка 404 3

Пользовательская ошибка 404 not found

Возможно, страница не создана или не опубликована на этапе размещения сайта в админке CMS. Также ошибка может быть связана с формированием «человекопонятных» ЧПУ-ссылок с помощью SEO-плагинов. Чтобы избавиться от проблемы, необходимо обратиться к веб-разработчикам сайта или на тематические форумы, на которых представлена необходимая техническая информация (ошибка http 404).

Как быстро устранить ошибку 404 на сайте, созданном без использования CMS

На сайтах, созданных без использования CMS, код ошибки 404 отображается следующим образом:

ошибка 404 2

Что означает это сообщение? Запрашиваемые страница/файл отсутствуют или размещены в неправильной папке (не в корневой папке сайта).

Что делать? Откройте корневую папку сайта в панели управления хостингом и проверьте, находятся ли в ней файлы вашего сайта.

  • Если искомые файлы отсутствуют, следуйте инструкции: Как загрузить файл в корневой каталог сайта? После размещения файлов в корневой папке ошибка 404 должна исчезнуть.
  • Если файлы существуют и находятся в корневой папке, обратитесь в техническую поддержку.

Как находить и мониторить код ошибки 404?

Если вы владелец сайта, вы можете найти страницы с ошибкой с помощью специальных сервисов. Самые популярные сервисы:

  • Яндекс.Вебмастер,
  • Google Search Console,
  • Screaming Frog.

Ниже мы описали, как работать с каждым из них.

Яндекс.Вебмастер

  1. Авторизуйтесь в Яндекс.Вебмастер.
  2. Перейдите в раздел Индексирование — Страницы в поиске:

мониторинг ошибки 404 1

HTTP status 404 — что это

  1. Выберите Исключенные страницы:

мониторинг ошибки 404 2

  1. Добавьте фильтр, при котором отобразятся результаты с ошибкой «404 page not found»:

мониторинг ошибки 404 3

Google Search Console

  1. Авторизуйтесь в Google Search Console.
  2. Разверните блок Индекс и выберите Покрытие:

мониторинг ошибки 404 4

404 ошибка: что это

  1. Используйте фильтр, который покажет код ошибки 404. Для этого перейдите в раздел Сведения и кликните Отправленный URL не найден (ошибка 404):

мониторинг ошибки 404 5

Ошибка 404: что значит и как исправить

Screaming Frog

  1. Загрузите программу с официального сайта.
  2. Установите её на компьютер.
  3. Откройте программу, введите ссылку на сайт и нажмите Start:

мониторинг ошибки 404 6

  1. Перейдите во вкладку Response Code. Из выпадающего списка выберите фильтр Client Error (4xx):

мониторинг ошибки 404 7

Открывается только главная страница сайта, на внутренних страницах ошибка 404 или 500

Рассмотрим, что значит и как исправить ошибку отображения внутренних страниц сайта (error 404 или 500). Причиной проблемы является отсутствие файла .htaccess (либо он пустой, либо в нем не хватает необходимых директив для работы CMS). Решить проблему может замена текущего файла .htaccess стандартным для данной CMS.

На хостинге Linux

Если у вас ispmanager, проверьте, не включены ли Автоподдомены. Если они включены, отключите их, проверьте актуальность проблемы.

В остальных случаях для устранения внутренней ошибки 404 или 500, перейдите в корневую папку сайта: Как узнать корневую папку сайта
Создайте файл .htaccess (или замените его) со следующим содержимым:

Файл .htaccess для Joomla

## # @version $Id: htaccess.txt 14401 2010-01-26 14:10:00Z louis $ # @package Joomla # @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. # @license http://www.gnu.org/copyleft/gpl.html GNU/GPL # Joomla! is Free Software ## ##################################################### # READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE # # The line just below this section: 'Options +FollowSymLinks' may cause problems # with some server configurations. It is required for use of mod_rewrite, but may already # be set by your server administrator in a way that dissallows changing it in # your .htaccess file. If using it causes your server to error out, comment it out (add # to # beginning of line), reload your site in your browser and test your sef url's. If they work, # it has been set by your server administrator and you do not need it set here. # ##################################################### ## Can be commented out if causes errors, see notes above. Options +FollowSymLinks # # mod_rewrite in use RewriteEngine On ########## Begin - Rewrite rules to block out some common exploits ## If you experience problems on your site block out the operations listed below ## This attempts to block the most common type of exploit `attempts` to Joomla! # ## Deny access to extension xml files (uncomment out to activate) # #Order allow,deny #Deny from all #Satisfy all # ## End of deny access to extension xml files RewriteCond % mosConfig_[a-zA-Z_](=|\%3D) [OR] # Block out any script trying to base64_encode crap to send via URL RewriteCond % base64_encode.*\(.*\) [OR] # Block out any script that includes a tag in URL RewriteCond % (\<|%3C).*script.*(\>|%3E) [NC,OR] # Block out any script trying to set a PHP GLOBALS variable via URL RewriteCond % GLOBALS(=|\[|\%[0-9A-Z]) [OR] # Block out any script trying to modify a _REQUEST variable via URL RewriteCond % _REQUEST(=|\[|\%[0-9A-Z]) # Send all blocked request to homepage with 403 Forbidden error! RewriteRule ^(.*)$ index.php [F,L] # ########## End - Rewrite rules to block out some common exploits # Uncomment following line if your webserver's URL # is not directly related to physical file paths. # Update Your Joomla! Directory (just / for root) # RewriteBase / ########## Begin - Joomla! core SEF Section # RewriteCond % !-f RewriteCond % !-d RewriteCond % !^/index.php RewriteCond % (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC] RewriteRule (.*) index.php RewriteRule .* - [E=HTTP_AUTHORIZATION:%,L] # ########## End - Joomla! core SEF Section

Файл .htaccess для WordPress

# BEGIN WordPress RewriteEngine On RewriteBase / RewriteCond % !-f RewriteCond % !-d RewriteRule . /index.php [L] # END WordPress

Файл .htaccess для HostCMS

Options +FollowSymlinks AddDefaultCharset Off php_flag magic_quotes_gpc off php_flag magic_quotes_runtime off php_flag register_globals off php_flag magic_quotes_gpc off php_flag magic_quotes_runtime off php_flag register_globals off DirectoryIndex index.php index.htm index.html RewriteEngine On RewriteBase / RewriteCond % !-f RewriteCond % !-d RewriteRule ^(.*)$ /index.php 

Файл .htaccess для Bitrix

Options -Indexes ErrorDocument 404 /404.php php_flag allow_call_time_pass_reference 1 php_flag session.use_trans_sid off #php_value display_errors 1 #php_value mbstring.func_overload 2 #php_value mbstring.internal_encoding UTF-8 Options +FollowSymLinks RewriteEngine On RewriteCond % !-f RewriteCond % !-l RewriteCond % !-d RewriteCond % !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%] DirectoryIndex index.php index.html ExpiresActive on ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day" 

Файл .htaccess для ModX

# MODx supports Friendly URLs via this .htaccess file. You must serve web # pages via Apache with mod_rewrite to use this functionality, and you must # change the file name from ht.access to .htaccess. # # Make sure RewriteBase points to the directory where you installed MODx. # E.g., "/modx" if your installation is in a "modx" subdirectory. # # You may choose to make your URLs non-case-sensitive by adding a NC directive # to your rule: RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC] RewriteEngine On RewriteBase / # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin #RewriteCond % . #RewriteCond % !^example-domain-please-change\.com [NC] #RewriteRule (.*) http://example-domain-please-change.com/$1 [R=301,L] # # or for the opposite domain.com -> www.domain.com use the following # DO NOT USE BOTH # #RewriteCond % . #RewriteCond % !^www\.example-domain-please-change\.com [NC] #RewriteRule (.*) http://www.example-domain-please-change.com/$1 [R=301,L] # # Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent # https://www.domain.com when your cert only allows https://secure.domain.com #RewriteCond % !^443 #RewriteRule (.*) https://example-domain-please-change.com.com/$1 [R=301,L] # # The Friendly URLs part RewriteCond % !-f RewriteCond % !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] # # Make sure .htc files are served with the proper MIME type, which is critical # for XP SP2. Un-comment if your host allows htaccess MIME type overrides. #AddType text/x-component .htc # # If your server is not already configured as such, the following directive # should be uncommented in order to set PHP's register_globals option to OFF. # This closes a major security hole that is abused by most XSS (cross-site # scripting) attacks. For more information: http://php.net/register_globals # # To verify that this option has been set to OFF, open the Manager and choose # Reports -> System Info and then click the phpinfo() link. Do a Find on Page # for "register_globals". The Local Value should be OFF. If the Master Value # is OFF then you do not need this directive here. # # IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS : # # Your server does not allow PHP directives to be set via .htaccess. In that # case you must make this change in your php.ini file instead. If you are # using a commercial web host, contact the administrators for assistance in # doing this. Not all servers allow local php.ini files, and they should # include all PHP configurations (not just this one), or you will effectively # reset everything to PHP defaults. Consult www.php.net for more detailed # information about setting PHP directives. # #php_flag register_globals Off # # For servers that support output compression, you should pick up a bit of # speed by un-commenting the following lines. # #php_flag zlib.output_compression On #php_value zlib.output_compression_level 5 # # The following directives stop screen flicker in IE on CSS rollovers. If # needed, un-comment the following rules. When they're in place, you may have # to do a force-refresh in order to see changes in your designs. # #ExpiresActive On #ExpiresByType image/gif A2592000 #ExpiresByType image/jpeg A2592000 #ExpiresByType image/png A2592000 #BrowserMatch "MSIE" brokenvary=1 #BrowserMatch "Mozilla/4.[0-9]" brokenvary=1 #BrowserMatch "Opera" !brokenvary #SetEnvIf brokenvary 1 force-no-vary

Файл .htaccess для Drupal

# # Apache/PHP/Drupal settings: # # Protect files and directories from prying eyes. Order allow,deny # Don't show directory listings for URLs which map to a directory. Options -Indexes # Follow symbolic links in this directory. Options +FollowSymLinks # Make Drupal handle any 404 errors. ErrorDocument 404 /index.php # Force simple error message for requests for non-existent favicon.ico. # There is no end quote below, for compatibility with Apache 1.3. ErrorDocument 404 "The requested file favicon.ico was not found. # Set the default handler. DirectoryIndex index.php index.html index.htm # Override PHP settings that cannot be changed at runtime. See # sites/default/default.settings.php and drupal_initialize_variables() in # includes/bootstrap.inc for settings that can be changed at runtime. # PHP 5, Apache 1 and 2. php_flag magic_quotes_gpc off php_flag magic_quotes_sybase off php_flag register_globals off php_flag session.auto_start off php_value mbstring.http_input pass php_value mbstring.http_output pass php_flag mbstring.encoding_translation off # Requires mod_expires to be enabled. # Enable expirations. ExpiresActive On # Cache all files for 2 weeks after access (A). ExpiresDefault A1209600 # Do not allow PHP scripts to be cached unless they explicitly send cache # headers themselves. Otherwise all scripts would have to overwrite the # headers set by mod_expires if they want another caching behavior. This may # fail if an error occurs early in the bootstrap process, and it may cause # problems if a non-Drupal PHP file is installed in a subdirectory. ExpiresActive Off  # Various rewrite rules. RewriteEngine on # Block access to "hidden" directories whose names begin with a period. This # includes directories used by version control systems such as Subversion or # Git to store control files. Files whose names begin with a period, as well # as the control files used by CVS, are protected by the FilesMatch directive # above. # # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is # not possible to block access to entire directories from .htaccess, because # is not allowed here. # # If you do not have mod_rewrite installed, you should remove these # directories from your webroot or otherwise protect them from being # downloaded. RewriteRule "(^|/)\." - [F] # If your site can be accessed both with and without the 'www.' prefix, you # can use one of the following settings to redirect users to your preferred # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: # # To redirect all users to access the site WITH the 'www.' prefix, # (http://example.com/. will be redirected to http://www.example.com/. ) # uncomment the following: # RewriteCond % !^www\. [NC] # RewriteRule ^ http://www.%% [L,R=301] # # To redirect all users to access the site WITHOUT the 'www.' prefix, # (http://www.example.com/. will be redirected to http://example.com/. ) # uncomment the following: # RewriteCond % ^www\.(.+)$ [NC] # RewriteRule ^ http://%1% [L,R=301] # Modify the RewriteBase if you are using Drupal in a subdirectory or in a # VirtualDocumentRoot and the rewrite rules are not working properly. # For example if your site is at http://example.com/drupal uncomment and # modify the following line: # RewriteBase /drupal # # If your site is running in a VirtualDocumentRoot at http://example.com/, # uncomment the following line: # RewriteBase / # Pass all requests not referring directly to files in the filesystem to # index.php. Clean URLs are handled in drupal_environment_initialize(). RewriteCond % !-f RewriteCond % !-d RewriteCond % !=/favicon.ico RewriteRule ^ index.php [L] # Rules to correctly serve gzip compressed CSS and JS files. # Requires both mod_rewrite and mod_headers to be enabled. # Serve gzip compressed CSS files if they exist and the client accepts gzip. RewriteCond % gzip RewriteCond %\.gz -s RewriteRule ^(.*)\.css $1\.css\.gz [QSA] # Serve gzip compressed JS files if they exist and the client accepts gzip. RewriteCond % gzip RewriteCond %\.gz -s RewriteRule ^(.*)\.js $1\.js\.gz [QSA] # Serve correct content types, and prevent mod_deflate double gzip. RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1] RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1] # Serve correct encoding type. Header append Content-Encoding gzip # Force proxies to cache gzipped & non-gzipped css/js files separately. Header append Vary Accept-Encoding  

v1.26_Резервирование SoftWLC

Резервирование контроллеров SoftWLC необходимо для синхронизации критичных для работы системы файлов (настройки, файлы прошивок, выгрузки данных), баз данных MySQL, баз данных MongoDB, а также DHCP серверов. Такая схема обеспечивает доступность услуг и и актуальные данные на обоих контроллерах при выходе одного из строя, недоступности сети, проблем с электропитанием.

Настройка резервирования контроллеров SoftWLC состоит из следующих этапов:

  • установка и настройка keepalived (выполняется по схеме master-slave)
  • настройка rsync
  • настройка репликации MySQL (осуществляется путём встречной репликации по принципу master-master)
  • настройка replicaSet MongoDB (репликация осуществляется объединением 3 узлов в Replica Set)
  • настройка работы Eltex-PCRF в режиме кластера
  • изменение конфигурации модулей системы для работы с виртуальным IP

В примерах конфигурации в данном разделе для простоты ip-адреса будут указываться как , и , где:

  • — реальный ip-адрес первого сервера
  • — реальный ip-адрес второго сервера
  • — виртуальный ip-адрес

Для корректной работы требуется обеспечить L2 связность между двумя удаленными серверами.

Установка и настройка keepalived

Описание пакета

Пакет keepalived — это open source программное обеспечение, предназначенное для обеспечения функций высокой надежности (high availabilitty) и балансировки нагрузки (load-balancing). За первую функцию отвечает реализация протокола VRRP, а вторая основывается на модуле ядра Linux Vitrual Server (IPVS). Keepalived не разрабатывается сотрудниками Eltex и не включает доработок, за исключением конфигурации. Keepalived используется для организации резервирования контроллеров SoftWLC, при этом используется только функционал VRRP.

Установка keepalived

Для установки пакета, необходимо загрузить его на сервер и выполнить следующую команду (установка должна производиться от имени суперпользователя root на обоих серверах):

admin@ubuntu:/# sudo apt update admin@ubuntu:/# sudo apt install keepalived

После установки, необходимо добавить демона Keepalived в автозагрузку и запустить его:

admin@ubuntu:/# sudo systemctl enable keepalived admin@ubuntu:/# sudo systemctl start keepalived

Основной файл конфигурации

На обоих серверах в файле /etc/keepalived/keepalived.conf меняем следующие параметры:

— наименование сетевого интерфейса (свой для каждого сервера) аналогично записи (eth1);

— виртуальный ip-адрес (с указанием префикса) аналогично записи (100.111.195.202 /24);

— ip-адрес другого сервера аналогично записи (100.111.195.200);

/etc/keepalived/keepalived.conf Развернуть исходный код

! Configuration File for keepalived global_defs < script_user root enable_script_security >vrrp_script check_network < script "/etc/keepalived/check_ping.sh" interval 5 weight 50 fall 3 rise 3 init_fail user root >vrrp_instance VI_SWLC < state BACKUP interface virtual_router_id 1 track_script < check_network >track_interface < weight 50 > priority 150 advert_int 1 nopreempt # Uncomment and comment "nopreempt" if preemption needed #preempt_delay 180 authentication < auth_type PASS auth_pass eltex >virtual_ipaddress < dev label :1 > notify_master "/etc/keepalived/keep_notify.sh master" notify_backup "/etc/keepalived/keep_notify.sh backup" notify_fault "/etc/keepalived/keep_notify.sh fault" unicast_peer < > >

Тест-скрипт

Скрипт пингует шлюз по умолчанию и возвращает код результата. Таким образом, при успешном выполнении скрипта, гарантируется, что SoftWLC достижим для внешних клиентов.

В текущей реализации на обоих серверах, в качестве тестового скрипта, предлагается использовать следующий:

/etc/keepalived/check_ping.sh Развернуть исходный код

#!/bin/bash # host to ping # there - default gw HOST= # -q quiet # -c nb of pings to perform ping -q -c5 $HOST > /dev/null # $? var keeping result of execution # previous command if [ $? -eq 0 ] then echo `date +"%T %F"` "OK gw reachable" EXIT_CODE=0 else echo `date +"%T %F"` "ERROR gw unreacheble!" EXIT_CODE=1 fi exit $EXIT_CODE

где — шлюз по умолчанию для этого сервера аналогично записи (100.10.194.1);.

Конфигурация смены роли

При смене состояния сервера, выполняется скрипт keep_notify.sh, где и — логин и пароль от БД MySQL (по умолчанию root/root).

/etc/keepalived/keep_notify.sh Развернуть исходный код

#!/bin/bash MYSQL_USER="" MYSQL_PASSWORD="" mongo_set_role() < local role="$1" if [[ "$(which mongo)" ]]; then mongo --quiet --eval "var role=\"$role\"" admin /etc/keepalived/mongo_switch.js # Uncomment if using mongodb auth #mongo -u-p --quiet --eval "var role=\"$role\"" admin /etc/keepalived/mongo_switch.js fi > if ! lockfile-create --use-pid -r 5 /tmp/keep.mode.lock; then echo "Unable to lock" echo "Unable to lock" > /tmp/keep.mode.lock.fail exit 0 fi case "$1" in master) # ems_reload_all echo "MASTER" > /tmp/keep.mode mongo_set_role master service eltex-ems restart service tomcat8 restart service eltex-ngw restart # рестарт слейва MySQL чтобы при восстановлении связи - сразу получить изменения, # а не ждать периодического heartbeat от второго сервера mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "stop slave" mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "start slave" ;; backup) echo "BACKUP" > /tmp/keep.mode mongo_set_role slave service mongod restart service eltex-ems stop service tomcat8 stop service eltex-ngw stop mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "stop slave" mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "start slave" ;; fault) echo "FAULT" > /tmp/keep.mode mongo_set_role slave service mongod restart ;; *) echo "Usage: $0 " exit 1 esac lockfile-remove /tmp/keep.mode.lock; exit 0

Скрипт смены мастера replicaSet MongoDB.

/etc/keepalived/mongo_switch.js Развернуть исходный код
// Предоставляется окружением var role; if (role != ‘master’ && role != ‘slave’) < throw "Role must be either master or slave"; >var thisIsMaster = (role == ‘master’); var status = rs.isMaster(); var thisHost = status.me; print(«Primary: » + status.ismaster + «; applying configuration . «); var cfg = rs.conf(); for (var i = 0; i < cfg.members.length; i++) < var member = cfg.members[i]; var self = (member.host == thisHost); if (self ^ thisIsMaster) < // Конфигурация для slave member.priority = 1; member.votes = 0; print(member.host + ": secondary"); >else < // Конфигурация для master member.priority = 2; member.votes = 1; print(member.host + ": primary"); >> var result = rs.reconfig(cfg, < force: !status.ismaster >); if (result.ok == 1) < print("Reconfiguration done"); >else

Для того, чтобы скрипты работали корректно, необходимо назначить права на их исполнение:

admin@swlc01-server:/# sudo chmod +x /etc/keepalived/check_ping.sh admin@swlc01-server:/# sudo chmod +x /etc/keepalived/keep_notify.sh admin@swlc01-server:/# sudo chmod +x /etc/keepalived/mongo_switch.js

Выделение лога в отдельный файл

По умолчанию keepalived записывает лог в файл /var/log/syslog . Для удобства отладки, мониторинга и контроля работы keepalived, можно настроить ведение собственного, отдельного лог-файла.

Ниже приведен пример настройки rsyslog:

nano -w /etc/rsyslog.d/10-keepalived.conf if $programname contains 'Keepalived' then /var/log/keepalived.log if $programname contains 'Keepalived' then ~

Затем, нужно перезапустить rsyslog командой:

admin@swlc01-server:/#sudo service rsyslog restart

Теперь сообщения от демона keepalived попадут только в лог-файл /var/log/keepalived.log и не попадут в /var/log/syslog .

Способ запуска/остановки keepalived

Для запуска сервиса воспользуйтесь командой:

admin@master:/#sudo service keepalived start
admin@master:/#sudo service keepalived stop

Проверить состояние сервиса можно командой:

admin@master:/#sudo service keepalived status

На одном из серверов, при корректной настройке, должен отображаться интерфейс с виртуальным ip.

Для проверки работы сервиса keepalived, отключите сервер, у которого в интерфейсах присутствует virtual_ip. Virtual_ip должен появиться на втором сервере.

Настройка rsync

Rsync в схеме резервирования отвечает за синхронизацию служебных файлов, сервисов Eltex-EMS и Eltex-APB, а также файлов прошивок, шаблонов конфигурации, выгрузок конфигураций точек. Rsync представляет собой клиент серверное ПО. В данной схеме master-сервер выступает в роли клиента и синхронизирует каталоги slave-сервера с локальными.

Конфигурация сервера rsync

Для активации сервера rsync, необходимо на каждом сервере в файле /etc/default/rsync установить значение:
RSYNC_ENABLE=true

Создать файл /etc/rsyncd.conf. Листинг файла приведен ниже.

hosts allow =

Запись hosts allow = в конфигурации встречается в 3 местах, не забудьте исправить все значения!
/etc/rsyncd.conf Развернуть исходный код

[ems-conf] path = /usr/lib/eltex-ems/conf/ use chroot = no max connections = 2 lock file = /var/lock/rsyncd read only = no list = no uid = root auth users = backup secrets file = /etc/rsyncd.secrets strict modes = yes # IP-адрес сервера, который будет иметь доступ к ресурсу, т.е. адрес второго сервера в паре hosts allow =  ignore errors = no ignore nonreadable = yes transfer logging = no timeout = 60 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz [ems-tftp] path = /tftpboot use chroot = no max connections = 2 lock file = /var/lock/rsyncd.tftp read only = no list = no uid = root auth users = backup secrets file = /etc/rsyncd.secrets strict modes = yes hosts allow =  ignore errors = no ignore nonreadable = yes transfer logging = no timeout = 60 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz [ems-wp] path = /var/ems-data/WP use chroot = no max connections = 2 lock file = /var/lock/rsyncd.ems-wp read only = no list = no uid = root auth users = backup secrets file = /etc/rsyncd.secrets strict modes = yes hosts allow =  ignore errors = no ignore nonreadable = yes transfer logging = no timeout = 60 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

Для аутентификации, необходимо настроить пользователя rsync, для этого, на каждом сервере создайте файлы /etc/rsyncd.secrets, в которых необходимо указать пароль.

backup:rspasswd

Назначить права доступа к файлам, выполнив на обоих серверах:

admin@swlc01-server:/#sudo chmod 600 /etc/rsyncd.secrets

Настройка запуска синхронизации
Создайте файлы /etc/rsync_client.secrets, в которых укажите пароль:

admin@swlc01-server:/# echo "rspasswd" > /etc/rsync_client.secrets && chmod 600 /etc/rsync_client.secrets

Операцию синхронизации файлов осуществляет задача cron, в которой выполняется скрипт /usr/lib/eltex-ems/scripts/rsync_ems_backup.sh. Скрипт запускает rsync клиент и синхронизирует локальные директории с директориями на втором (backup) сервере. Синхронизация запускается только в случае, если сервер в состоянии master.
В 6 строке заменить HOST на ip-адрес другого сервера (Пример: HOST=100.111.195.201)

/usr/lib/eltex-ems/scripts/rsync_ems_backup.sh Развернуть исходный код

#!/bin/bash LOCKFILE="/run/lock/rsync_ems_backup" # IP address backup server HOST= # Check if we're root if [ `whoami` != "root" ] then echo "This script should be run by root." exit 1 fi # Check and create lock file if ! lockfile-create --use-pid -r 0 $LOCKFILE &> /dev/null ; then echo "Backup is already running" exit 0 fi # Check - if we're master - try to perform backup to slave SRVMODE=`cat /tmp/keep.mode` if [ "$SRVMODE" == "MASTER" ] then rsync -urlogtp --delete-after --password-file=/etc/rsync_client.secrets /usr/lib/eltex-ems/conf/ backup@$HOST::ems-conf > /tmp/rsync_ems_conf.log 2>&1 echo $? >> /tmp/rsync_ems_conf_result.log rsync -urlogtp --delete-after --password-file=/etc/rsync_client.secrets /tftpboot/ backup@$HOST::ems-tftp > /tmp/rsync_ems_tftpboot.log 2>&1 echo $? >> /tmp/rsync_ems_tftpboot_result.log rsync -urlogtp --delete-after --password-file=/etc/rsync_client.secrets /var/ems-data/WP/ backup@$HOST::ems-wp > /tmp/rsync_ems_wp.log 2>&1 echo $? >> /tmp/rsync_ems_wp_result.log else echo "Not master. No action will be performed." fi lockfile-remove $LOCKFILE

Cоздать задачу в cron на обоих серверах, для запуска синхронизации раз в минуту:

root@swlc01-server:/# crontab -l | < cat; echo "*/1 * * * * /usr/lib/eltex-ems/scripts/rsync_ems_backup.sh"; >| crontab

Проверяем список задач:

root@swlc01-server:/# crontab -l root@swlc01-server:/# */1 * * * * /usr/lib/eltex-ems/scripts/rsync_ems_backup.sh

Если задача не добавилась или случайно добавилась несколько раз — редактируем список вручную:

root@swlc01-server:/# crontab -e Select an editor. To change later, run 'select-editor'. 1. /bin/nano 

Способ запуска/остановки

Для запуска сервиса используется команда:

admin@swlc01-server:/# sudo service rsync start

Для остановки сервиса используется команда:

admin@swlc01-server:/# sudo service rsync stop

Для проверки — запущен ли сервис в данный момент, используется команда:

admin@swlc01-server:/# sudo service rsync status

Проверить работу rsync можно в EMS. Во вкладке "Информация"-Состояние системы резервирования-Rsync service.

На обоих серверах должна быть запись такого типа:

OK. Успешная синхронизация файлов из директории: /usr/lib/eltex-ems/conf/* OK. Успешная синхронизация файлов из директории: /tftpboot/* OK. Успешная синхронизация файлов из директории: /var/ems-data/WP/*

Настройка репликации MySQL

Резервирование данных, хранящихся СУБД MySQL, осуществляется путём встречной репликации по принципу master-master (ведущий-ведущий). То есть, каждый из серверов одновременно является и master и slave. При такой схеме работы, все изменения в БД на одном сервере записываются в специальный бинарный лог, который в реальном времени вычитывает второй сервер и применяет изменения. Второй сервер реплицирует данные с первого, а первый со второго. Это позволяет получить актуальную копию БД на двух хостах одновременно. При разрыве связи, изменения накапливаются, после восстановления происходит синхронизация.

Перенос дампа данных и перенос на второй сервер

При настройке резервирования в процессе эксплуатации (то есть если в MySQL на действующем сервере уже имеются данные), необходимо перенести эти данные на второй сервер. Это можно сделать при помощи утилиты mysqldump.

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

root@swlc01-server:/# mysql -uroot -proot -e "FLUSH TABLES WITH READ LOCK;" root@swlc01-server:/# mysqldump -uroot -proot --databases ELTEX_PORTAL eltex_alert eltex_auth_service eltex_ems radius wireless > mysqldump_master.sql root@swlc01-server:/# mysql -uroot -proot -e "UNLOCK TABLES;" root@swlc01-server:/# scp mysqldump_master.sql @:/home//

Затем, развернуть dump на втором сервере:

root@swlc01-server:/# mysql -uroot -proot < /home//mysqldump_master.sql

Конфигурация MySQL

Конфигурация самого демона mysqld заключается в настройке параметров ведения бинарных логов. Обозначения первый сервер и второй сервер далее условны, и применяются лишь для обозначения различий в конфигурации серверов.

В секции [mysqld] файла конфигурации /etc/mysql/mysql.conf.d/mysqld.cnf произвести следующие изменения:

В файл /etc/mysql/my.cnf добавить путь к файлу /etc/mysql/mysql.conf.d/

Закомментировать либо удалить строку на обоих серверах:

bind-address = 127.0.0.1

Указать server-id. Для серверов необходимо задать уникальные идентификаторы, к примеру, для первого:

server-id = 1

для второго:

server-id = 2

Включить бинарные логи на обоих серверах:

log_bin = /var/log/mysql/mysql-bin.log

указать параметры auto_increment_increment (шаг приращения) и auto_increment_offset (стартовую точку).

Для первого сервера:

auto_increment_increment= 2 auto_increment_offset = 1

Для второго сервера:

auto_increment_increment= 2 auto_increment_offset = 2

На обоих серверах: указать базы, для которых будут вестись логи:

binlog-do-db = eltex_alert binlog-do-db = eltex_ems binlog-do-db = wireless binlog-do-db = radius binlog-do-db = eltex_auth_service binlog-do-db = ELTEX_PORTAL binlog-do-db = eltex_doors binlog-do-db = eltex_ngw

yказать базы, для которых не будут вестись логи:

binlog-ignore-db = mysql binlog-ignore-db = Syslog binlog-ignore-db = performance_schema binlog-ignore-db = information_schema

Перезапустить сервис mysql на каждом сервер и создать БД для репликации:

admin@swlc01-server:/# sudo service mysql restart

Создание учетных записей

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

Создать в консоли MySQL учетную запись для репликации на первом сервере:

GRANT SELECT, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication'@'' IDENTIFIED BY 'password'; GRANT SELECT, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication'@'' IDENTIFIED BY 'password'; #необходимо для проверки состояния репликации из EMS FLUSH PRIVILEGES;

Создать в консоли MySQL учетную запись для репликации на втором сервере:

GRANT SELECT, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication'@'' IDENTIFIED BY 'password'; GRANT SELECT, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication'@'' IDENTIFIED BY 'password'; #необходимо для проверки состояния репликации из EMS FLUSH PRIVILEGES;

Привилегия SELECT необходима для работы проверки репликации из GUI EMS

Выдача прав сервисным пользователям

Открыть /usr/lib/eltex-ems/conf/config.txt, посмотреть какие username / password используются (по умолчанию - javauser / javapassword)

Выдаем им права на внешний доступ на обоих серверах:

GRANT ALL PRIVILEGES ON *.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL PRIVILEGES ON eltex_auth_service.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `radius`.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `wireless`.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `Syslog`.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `eltex_doors`.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `eltex_ngw`.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `ELTEX_PORTAL`.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `eltex_ems`.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `eltex_alert`.* TO 'javauser'@'%'; GRANT ALL PRIVILEGES ON `eltex_auth_service`.* TO 'javauser'@'%'; FLUSH PRIVILEGES;

Включение репликации

Запуск репликации на втором сервере

На первом сервере, в консоли MySQL, выполнить команду show master status и проанализировать полученные значения:

mysql> show master status \G *************************** 1. row *************************** File: mysql-bin.000001 Position: 00000107 Binlog_Do_DB: eltex_alert,eltex_ems,wireless,radius,eltex_auth_service,ELTEX_PORTAL,eltex_doors,eltex_ngw Binlog_Ignore_DB: mysql,Syslog,performance_schema,information_schema 1 row in set (0.00 sec)

Запомнить параметры File и Position.

Настроить и запустить репликацию второго сервера с первого (выполнить действия на втором сервере):

STOP SLAVE; CHANGE MASTER TO MASTER_HOST='', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; START SLAVE;

MASTER_LOG_FILE='mysql-bin.000001' – указать значение File, полученное на первом сервере;
MASTER_LOG_POS=107 – указать значение Position, полученное на первом сервере.

Проверить состояние репликации на втором сервере:

mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 107 Relay_Log_File: mysqld-relay-bin.000001 Relay_Log_Pos: 107 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 107 Relay_Log_Space: 107 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 2 1 row in set (0.00 sec)

Если параметры Slave_IO_Running и Slave_SQL_Running имеют значение «Yes», репликация успешно запустилась.

Запуск репликации на первом сервере

На втором сервере выполнить:

mysql> show master status \G *************************** 1. row *************************** File: mysql-bin.000001 Position: 00000107 Binlog_Do_DB: eltex_alert,eltex_ems,eltex_ont,radius,wireless,eltex_auth_service,payments,ELTEX_PORTAL Binlog_Ignore_DB: mysql,Syslog,performance_schema,information_schema 1 row in set (0.00 sec)

Настроить и запустить репликацию первого сервера со второго (выполнять действия на первом сервере):

STOP SLAVE; CHANGE MASTER TO MASTER_HOST='', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; START SLAVE;

Проверить состояние репликации на первом севере:

mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 107 Relay_Log_File: mysqld-relay-bin.000001 Relay_Log_Pos: 107 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes .

Если параметры Slave_IO_Running и Slave_SQL_Running имеют значение «Yes», значения Master_Log_File и Read_Master_Log_Pos репликация выполняется в обе стороны.

Проверка репликации из EMS-GUI

Состояние репликации MySQL можно контролировать из GUI EMS. Для этого, необходимо отредактировать конфигурационный файл /etc/eltex-ems/check-ems-replication.conf. Изменения необходимо внести на обоих серверах.

/etc/eltex-ems/check-ems-replication.conf

# Включить("Yes") / Выключить("No") проверку репликации ENABLE_REPLICATION="Yes" # Адрес первого хоста репликации HOST1= # Адрес второго хоста репликации HOST2= # параметры доступа к mysql серверу # mysql пользователь USER="replication" # mysql пароль PASSWORD="password"

ENABLE_REPLICATION - включена ли проверка репликации (установить в "Yes");
HOST1, HOST2 - ip-адреса серверов;
USER, PASSWORD - логин/пароль учетной записи, для работы репликации.

После сохранения изменений, состояние репликации можно отслеживать в GUI EMS в разделе Информация → Состояние системы резервирования → MySQL.

Настройка MongoDB

В MongoDB репликация осуществляется объединением нескольких (в типовой конфигурации - 3) узлов в Replica Set. Replica Set состоит из одного primary узла и нескольких secondary. Для упрощения предлагаем схему:

  • Primary — основной сервер mongoDB.
  • Secondary — точные копии баз(ы) данных с real-time синхронизацией.
  • Arbiter — сервер отвечает только за выборы преемника, сам стать преемником он не может, поэтому рекомендуется отдавать под арбитра минимальные ресурсы, SoftWLC на аrbiter устанавливать не требуется.

Минимальные характеристики для mongo-db arbiter:

  • vCore: 1, 64-bit x86 CPUs
  • vRAM: 2 ГБ
  • vHDD: 20Гб

Для корректной работы репликации необходимо, чтобы версии MongoDB совпадали на всех хостах.

​Все операции по изменению данных выполняются только на primary. При этом MongoDB автоматически выполняет failover и смену primary на живой узел, если текущий primary выйдет из строя. Но это требует 3+ узлов в replica set.

При конфигурации по умолчанию Replica Set из двух узлов полностью выходит из строя при отказе одного из них (даже secondary).

Установка mongodb на arbiter

При настройке репликации, необходимо, чтобы версии MongoDB совпадали на всех хостах, при обычной установке mongo , устанавливается версия 3.6.3, в нашем случае требуется актуальный патч 4 версии mongodb.

Для установки нужной версии mongodb, выполните следующие действия:

Создайте файл /etc/apt/sources.list.d/mongodb-org-4.0.list и пропишите в него репо mongo

deb [ arch=amd64 ] http://mirror.yandex.ru/mirrors/repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse

Выполните на сервере команду

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
sudo apt-get update sudo apt install mongodb-org

Проверьте, что на сервер установлена mongodb версии не ниже 4.0.28

mongo --version или dpkg -l | grep mongo

Выполните следующие команды:

sudo systemctl enable mongod.service sudo systemctl start mongod.service

Настройка replicaSet

В /etc/mongod.conf на всех узлах:

replication: replSetName: ""

где - имя replica set, выбирается произвольно, но должно быть одинаково на всех серверах.

Разрешить внешние подключения, прописав в параметре bindIp (bind_ip в старой версии mongo) адрес 0.0.0.0 (0.0.0.0 - разрешает подключения с любых ip адресов):

bindIp: 0.0.0.0
root@swlc01-server:/# service mongod restart

На первом узле зайти в консоль MongoDB:

root@swlc01-server:/# mongo

Создать конфигурацию replica set:

Если хотите использовать в конфигурации hostname вместо ip-адреса, то на всех узлах в /etc/hostname нужно указать названия нод и в /etc/hosts на всех узлах необходимо добавить все ноды по типу

rs.initiate( < _id: "replica_set_name", version: 1, members: [ < _id: 0, host : "ip_mongo_primary:27017" >, < _id: 1, host : "ip_mongo_secondary:27017" >] > )

Добавить в Replica Set узел Arbiter (на PRIMARY):

rs.add(":27017",true)

Через некоторое время, приглашение shell должно смениться на такое:

replica_set_name:PRIMARY>

Посмотреть конфигурацию Replica Set можно командой:

replica_set_name:PRIMARY> rs.config()

Для проверки состояния Replica Set, выполните в консоли MongoDB команду rs.status().

Добавление/удаление/изменение узлов в Replica Set

Настройку узлов в Replica Set можно выполнять только на PRIMARY.

Добавить в Replica Set узел Secondary (на PRIMARY):

rs.add(":27017")

Если MongoDB отвечает на эту команду ошибкой, возможно, нет связи со вторым узлом (или там прописан bindIp: 127.0.0.1), или там не настроен блок replication.
На втором узле приглашение консоли управления MongoDB должно смениться на:

root@swlc01-server:/# mongo replica_set_name:SECONDARY>

Добавить в Replica Set узел Arbiter:

replica_set_name:PRIMARY> rs.add(":27017",true)

Удалить узел из Replica Set (выполнять на PRIMARY):

replica_set_name:PRIMARY> rs.remove(":27017")

Для корректировки адреса сервера выполнить следующее:

replica_set_name:PRIMARY> cfg = rs.conf() replica_set_name:PRIMARY> cfg.members[].host = ":27017" replica_set_name:PRIMARY> rs.reconfig(cfg)

Для проверки работоспособности репликации, отключите PRIMARY сервер, сервер, который был SECONDARY, перейдет в статус PRIMARY

Работа Eltex-PCRF в режиме кластера

Настройка кластера PCRF

Между серверами PCRF нужно открыть порты 5701 tcp, 5801 tcp

На серверах в файлах конфигурации /etc/eltex-pcrf/hazelcast-cluster-network.xml нужно указать адреса сетевых интерфейсов (в строках 5 и 22 в примере - адрес самого сервера, строки 14-15 - список всех членов кластера)
пример, часть конфигурации:

   ip_server1 5701 0     ip_server1 ip_server2    ip_server1 

В конфигурации /etc/eltex-pcrf/eltex-pcrf.json нужно разрешить запуск кластера:

"cluster.enable" : true,

Перезапустить Eltex-PCRF командой

admin@swlc01-server:/# sudo service eltex-pcrf restart

Проверка состояния кластера

< "data" : < "enabled" : true, "state" : "ACTIVE", "members" : [ < "address" : "ip_server1", "local" : true, "active" : true >, < "address" : "ip_server2", "local" : false, "active" : true >], "messagesStats" : < "received" : 45157, "sent" : 45144 >, "mongo" : < "available" : false, "error" : "not running with --replSet" >>, "key" : "PcrfErrorCode.success", "message" : "Success", "code" : 0, "args" : [ ] >

Особенности настройки ESR для взаимодействия с кластером PCRF

При использовании кластера PCRF на ESR настроить взаимодействие со всеми нодами кластера используя их реальный адрес.

Настройка модулей SoftWLC

Необходимо настроить модули SoftWLC на работу с контроллером по virtual ip на обоих серверах. Изменения необходимо внести в приведенные ниже конфигурационные файлы.

Внимание! При изменении настроек подключения к БД Mysql и MongoDB следует исключительно внимательно относится к настройкам коннектов к БД - ошибки в настройке, такие как ошибки в символах между параметрами (например "?" вместо "&"), лишние символы и т. п. приведут к сложно диагностируемым ошибкам подключения к БД!

После внесения изменений в конфигурационные файлы необходимо перезапустить соответствующий сервис:

root@swlc01-server:/# service eltex- restart

В случае использования однохостовой системы на каждом из серверов SoftWLC, в конфигурационных файлах сервисов, обращающихся к БД MySQL заменять localhost или 127.0.0.1 на не требуется.

Файл /etc/eltex-apb/application.conf Развернуть исходный код

# maximum number of outgoing messages in queue for each session sessionMessageQueueSize = 100 # cache config file path cacheConfigFile = /etc/eltex-apb/ehcache.xml # path to the file with permitted hosts hostsFile = /etc/eltex-apb/hosts.json pingJob < # ping job interval interval = 60s # timeout waiting for subscribe-request after connecting the access point to the server subscribeIdleTimeout = 60s # timeout during that the session will stay opened without receiving any message messageIdleTimeout = 90s # interval of ping to be sent to the websocket session pingIdleTimeout = 30s ># eltex-mercury connection properties mercury < host = localhost port = 6565 poolSize = 50 >nbi.client.login=admin nbi.client.password=password
  • Изменить localhost на в строке 24 .

Файл /etc/eltex-pcrf/eltex-pcrf.json Развернуть исходный код

< "auth.address" : "0.0.0.0", "auth.port" : 31812, "auth.mac.open.timeout.s" : 3600, "auth.mac.welcome.service" : "WELCOME", "acct.address" : "0.0.0.0", "acct.ports" : [1813, 31813], "lease.saver.address" : "0.0.0.0", "lease.saver.port" : 4381, "aaa.instances" : 5, "aaa.host" : "127.0.0.1", "aaa.secret" : "testing123", "aaa.auth.port" : 1812, "aaa.acct.port" : 1813, "aaa.rest.port" : 7080, "aaa.timeout" : 10, "aaa.attempts" : 1, "web.monitoring.port" : 7070, "cluster.enable" : false, "cluster.eventBusPort" : 5801, "radius" : < "url": "jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 >, "mongo.pcrf" : < "connection_string": "mongodb://localhost:27017/pcrf?replicaSet=&waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0&readPreference=secondaryPreferred", "db_name": "pcrf" >, "mongo.ott" : < "connection_string": "mongodb://localhost:27017/ott?replicaSet=&waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0&readPreference=secondaryPreferred", "db_name": "ott" >, "session.storage" : < "session.check.period.s" : 300, "unauth.store.time.s" : 600, "interval.number.expired" : 3, "min.interval.s" : 45, "default.interval.s" : 600 >, "bras.coa" : < "coa.timeout" : 10, "coa.attempts" : 1, "remote.coa.port" : 3799, "executor.size" : 100, "log.clean.period.s" : 600, "log.store.period" : < "period" : 14, "unit" : "D" >>, "sql.ems" : < "url": "jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 >, "sql.wireless" : < "url": "jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 16 >, "sql.auth.service" : < "url": "jdbc:mysql://localhost/eltex_auth_service?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&useSSL=false", "user": "javauser", "password": "javapassword", "max_pool_size": 4 >, "language" : "en", "radius.nbi" : < "wdsl.url" : "http://localhost:8080/axis2/services/RadiusNbiService?wsdl", "username" : "softwlc_service", "password" : "softwlc", "connection.timeout.ms" : 30000, "request.timeout.ms" : 120000 >, "tariffs.update.interval" : < "interval" : 1, "unit" : "hours" >, "bras.cron.update.interval": < "interval" : 1, "unit": "hours" >, "filters.cache.dir" : "/var/lib/eltex-pcrf/filters/", "clickhouse": < "url": "jdbc:clickhouse://localhost:8123/radius", "user_name": "javauser", "user_password": "javapassword" >, "accounting.options": < "use_clickhouse": false, "use_mysql": true, "batch_interval_ms": 300000, "max_queue_load": 100 >>
  • Изменить mongodb://localhost на mongodb://ip_mongo_primary,ip_mongo_secondary во всех строках и указать replicaSet , который вы настроили в /etc/mongod.conf. Таким образом строка будет выглядеть примерно следующим образом
mongodb://192.168.10.3:27017,192.168.10.4:27017/pcrf?replicaSet=Cluster&waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0&readPreference=secondaryPreferred mongodb://192.168.10.3:27017,192.168.10.4:27017/ott?replicaSet=Cluster&waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0&readPreference=secondaryPreferred
  • Изменить localhost на во всех строках, кроме 14-ой строки.
  • Изменить 127.0.0.1 на во всех строках, кроме 14-ой строки.

Файл /etc/eltex-portal-constructor/application.conf Развернуть исходный код
login < # Количество попыток входа в панель администратора до наступления блокировки maxAttemptsLogin = 3 maxAttemptsIP = 5 # Количество минут блокировки после достижения максимального числа попыток входа в панель администратора blockTime = 5m >access < // Временно задаём plaintext-secret прямо здесь (HMAC256), потом будем использовать путь в FS до PEM-файла (RSA256) secret = "secret" >database < host = localhost port = 3306 name = ELTEX_PORTAL user = javauser password = javapassword pool < # Time to wait for a connection connectionTimeout = 10s # Time to wait for connection validation validationTimeout = 3s min = 1 max = 10 >cache < # Limit of cached simple entries count (for each query type) maxEntries = 1000 # Limit of total cached portal resources size maxResourceBytes = 32m # Maximum time to retain items in the cache expireTime = 30s >> sso < enabled = false # Must be in double quotes version = "1.0" rest < scheme = http host = localhost port = 80 sso_api_path = /apiman-gateway/b2b_test >auth < scheme = http host = localhost port = 80 authentication_path = /auth/realms/b2b/protocol/openid-connect/auth logout_path = /auth/realms/b2b/protocol/openid-connect/logout >params < client_id = id # URL of epadmin, URL must be in double quotes (. ) redirect_uri = "http://localhost:8080/epadmin/sso" client_secret = secret >> jetty < http.port = 9001 https < port = 9444 keystorePass = 12345 keystoreFile = /etc/eltex-portal-constructor/localhost.pfx keystoreType = PKCS12 keyAlias = 1 ciphers = [ TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA ] >multipart < maxFileSize = 100MB maxRequestSize = 100MB >> validation < public_key = /etc/eltex-doors/keys/public.pem >logging

  • Изменить localhost на в строках 15, 48, 54, 64, 95.

Файл /etc/eltex-portal/application.conf Развернуть исходный код

portal < defaultRedirectUrl = "http://eltex-co.ru" scheduler < tariffCheckerPeriod = 1d paymentsCleanerPeriod = "0 0 * * * ?" >> jetty < https < port = 9443 keystorePass = 12345 keystoreFile = /etc/eltex-portal/localhost.pfx keystoreType = PKCS12 keyAlias = 1 ciphers = [ TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA ] >> database < host = localhost port = 3306 name = ELTEX_PORTAL user = javauser password = javapassword pool < # Time to wait for a connection connectionTimeout = 10s # Time to wait for connection validation validationTimeout = 3s min = 1 max = 10 >cache < # Limit of cached simple entries count (for each query type) maxEntries = 1000 # Limit of total cached portal resources size maxResourceBytes = 32m # Maximum time to retain items in the cache expireTime = 2m >> // JWT validation. You need a key from Eltex Doors. // Or you could generate it yourself. validation < public_key = "etc/eltex-doors/keys/public.pem"
  • Изменить localhost на в строке 27.

Файл /etc/eltex-radius-nbi/radius_nbi_config.txt Развернуть исходный код

# DB radius(alias=radius) radius.jdbc.driver=org.gjt.mm.mysql.Driver radius.jdbc.dbUrl=jdbc:mysql://localhost/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 radius.jdbc.username=javauser radius.jdbc.password=javapassword radius.jdbc.maxPoolSize=48 radius.jdbc.inUse=yes # DB radius replica(alias=radiusReplicaPool) #TODO: Change it to replica url radius.jdbc.replica.driver=org.gjt.mm.mysql.Driver radius.jdbc.replica.dbUrl=jdbc:mysql://localhost/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 radius.jdbc.replica.username=javauser radius.jdbc.replica.password=javapassword radius.jdbc.replica.maxPoolSize=48 radius.jdbc.replica.inUse=yes # DB ems(alias=ems) ems.jdbc.driver=org.gjt.mm.mysql.Driver ems.jdbc.dbUrl=jdbc:mysql://localhost/eltex_ems?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&noAccessToProcedureBodies=true ems.jdbc.username=javauser ems.jdbc.password=javapassword ems.jdbc.maxPoolSize=48 ems.jdbc.inUse=yes # DB wireless (alias=wireless) wireless.jdbc.driver=org.gjt.mm.mysql.Driver wireless.jdbc.dbUrl=jdbc:mysql://localhost/wireless?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 wireless.jdbc.username=javauser wireless.jdbc.password=javapassword wireless.jdbc.maxPoolSize=48 wireless.jdbc.inUse=yes # DB logs (alias=logs) logs.jdbc.driver=org.gjt.mm.mysql.Driver logs.jdbc.dbUrl=jdbc:mysql://localhost/eltex_alert?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 logs.jdbc.username=javauser logs.jdbc.password=javapassword logs.jdbc.maxPoolSize=48 logs.jdbc.inUse=yes # DB logs (alias=eltex_auth_service) eltex_auth_service.jdbc.driver=org.gjt.mm.mysql.Driver eltex_auth_service.jdbc.dbUrl=jdbc:mysql://localhost/eltex_auth_service?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 eltex_auth_service.jdbc.username=javauser eltex_auth_service.jdbc.password=javapassword eltex_auth_service.jdbc.maxPoolSize=48 eltex_auth_service.jdbc.inUse=no # адрес ems-northbound ems.nbi.host=127.0.0.1 ems.nbi.port=8080 ems.nbi.path=northbound ems.nbi.protocol=http # eltex_auth_service auth.port=22 auth.host=127.0.0.1 auth.username=username auth.password=password # freeradius-domain-1 freeradius-domain-1.port=22 freeradius-domain-1.host=192.168.0.1 freeradius-domain-1.username=username freeradius-domain-1.password=password # freeradius-domain-2 freeradius-domain-2.port=22 freeradius-domain-2.host=192.168.0.2 freeradius-domain-2.username=username freeradius-domain-2.password=password # tomcat url tomcat.host=127.0.0.1 tomcat.port=8080 # pcrf stuff pcrf.enabled=true pcrf.url=http://localhost:7070 pcrf.username=admin pcrf.password=password # pcrf mongodb connector pcrf.mongodb.enabled=true pcrf.mongodb.uri=mongodb://localhost:27017/pcrf?replicaSet= # wifi-customer-cab mongodb connector wificab.mongodb.enabled=true wificab.mongodb.uri=mongodb://localhost:27017/wifi-customer-cab?replicaSet= # Eltex.SORM2.replicator MongoDB 'sorm2' connect sorm2.mongodb.enabled=false sorm2.mongodb.uri=mongodb://localhost:27017/sorm2?replicaSet= # wifi-customer-cab request settings wificab.timeout=90000 # Eltex.SORM2.replicator host to use API sorm2.enabled=false sorm2.url=http://localhost:7071 sorm2.username=admin sorm2.password=password #It enables records export to SORM3 while editing wifi users sorm3.enabled=false # ott mongodb connector ott.mongodb.enabled=true ott.mongodb.uri=mongodb://localhost:27017/ott?replicaSet= # metrics metric.interval.s=900 ########################################################################### ##########################DB ELTEX_PORTAL settings######################### ########################################################################### portal.db.driver=com.mysql.jdbc.Driver portal.db.url=jdbc:mysql://localhost:3306/ELTEX_PORTAL?max_allowed_packet=32362048&useUnicode=true&characterEncoding=utf8 portal.db.username=javauser portal.db.password=javapass
  • Изменить mongodb://localhost на mongodb://ip_mongo_primary,ip_mongo_secondary во всех строках и указать replicaSet , который вы настроили в /etc/mongod.conf. Таким образом строка будет выглядеть примерно следующим образом
pcrf.mongodb.uri=mongodb://192.168.10.3:27017,192.168.10.4:27017/pcrf?replicaSet=Cluster wificab.mongodb.uri=mongodb://192.168.10.3:27017,192.168.10.4:27017/wifi-customer-cab?replicaSet=Cluster sorm2.mongodb.uri=mongodb://192.168.10.3:27017,192.168.10.4:27017/sorm2?replicaSet=Cluster ott.mongodb.uri=mongodb://192.168.10.3:27017,192.168.10.4:27017/ott?replicaSet=Cluster
  • Изменить localhost на во всех строках.
  • Изменить 127.0.0.1 на во всех строках.

Файл /etc/eltex-ngw/application.conf Развернуть исходный код

// Server configuration server < // server port port = 8040 // number of threads in executor that executes handlers and different gateways threads = 50 >http < // Timeout of http connection to the end gateway connectionTimeout = 30s // Number of maximum simultaneous http connections maxConnections = 50 // Time that connection will be kept alive keepAliveTimeout = 5s // Whether to check SSL certificate checkCert = true // HTTP User Agent userAgent = eltex-ngw >sms < // Incoming (user to service) sms config incoming.config = "smsc.conf" // Outgoing (service to user) sms config outgoing.config = "smsc.conf" >call < // Incoming (user to service) call config incoming.config = "" // Outgoing (service to user) call config outgoing.config = "" >email < // Outgoing (service to user) email config outgoing.config = "" >database < host = localhost port = 3306 name = eltex_ngw user = javauser password = javapassword pool < // Time to wait for a connection connectionTimeout = 10s // Time to wait for connection validation validationTimeout = 3s min = 1 max = 10 >
  • Изменить localhost на virtual_ip в строке 44.

Файл /etc/eltex-radius/local.conf Развернуть исходный код

# Ports on which the server will listen auth_port=1812 #acct_port=1813 inner_tunnel_port=18121 # MySQL database db_host="localhost" db_port=3306 db_login="radius" db_password="radpass" db_name="radius" # MySQL 'wireless' database wireless_db_host="localhost" wireless_db_port=3306 wireless_db_login="javauser" wireless_db_password="javapassword" wireless_db_name="wireless" # PCRF # If you setting pcrf_enabled=0, then you also should enable accounting port listening in "default" server pcrf_host="127.0.0.1" pcrf_port=7080 pcrf_enabled=1 # EAP ca_cert_name="local.pem" tls_key_password="1234" # Proxying proxy_auth=0 proxy_domain_regex="^(.+\.)?enterprise\.root$" proxy_host="127.0.0.1" proxy_port=18121 proxy_secret="eltex" # Ubiquity vendor detection ubi_vendor_regex="Apple|Ubiquiti" vendor_group_enabled=1 # Settings of runtime NAS discovery dynamic_clients=false dynamic_client_subnet=192.168.0.0/16 dynamic_client_lifetime=3600 dynamic_client_rate_limit=false # Proxy SSID (for example to eltex-eap-tls) #139679 proxy_ssid_enabled=0 proxy_ssid_value="EAP_TLS" proxy_ssid_host="127.0.0.1" proxy_ssid_port=18122 proxy_ssid_secret="eltex"
  • Изменить localhost на во всех строках.
  • Изменить 127.0.0.1 на во всех строках.

Файл /etc/eltex-wifi-cab/system.xml Развернуть исходный код

   mongodb://localhost:27017/wifi-customer-cab?replicaSet= http://localhost:8080/axis2/services/RadiusNbiService?wsdl softwlc_service password 120 NBI localhost 9070 localhost 8008 false http://eltex-co.ru false https://filter.wifi.example.org/ false http://localhost:8080/wifi-cab/sso http 80 /auth/realms/b2b/protocol/openid-connect/auth /auth/realms/b2b/protocol/openid-connect/logout http 80 10 2.0 /apiman-gateway/b2b_test/getToken /apiman-gateway/b2b_test/getUserInfo /apiman-gateway/b2b_test/addUser /apiman-gateway/b2b_test/updateUser /apiman-gateway/b2b_test/delUser /apiman-gateway/b2b_test/addUserParam /apiman-gateway/b2b_test/delUserParam /apiman-gateway/b2b_test/getUserByName /apiman-gateway/b2b_test/resetPassword /apiman-gateway/b2b_test/getUserByParam /apiman-gateway/b2b_test/getUserByEmail 
  • Изменить mongodb://localhost на mongodb://ip_mongo_primary,ip_mongo_secondary в строке 4 и указать replicaSet , который вы настроили в /etc/mongod.conf. Таким образом строка будет выглядеть примерно следующим образом:
mongodb://192.168.10.3:27017,192.168.10.4:27017/wifi-customer-cab?replicaSet=Cluster
  • Изменить localhost на во всех строках.

Файл /usr/lib/eltex-ems/conf/config.txt Развернуть исходный код

# DB Event poolName1=event event.jdbc.driver=org.gjt.mm.mysql.Driver event.jdbc.dbUrl=jdbc:mysql://localhost/eltex_alert?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 event.jdbc.username=javauser event.jdbc.password=javapassword event.jdbc.maxPoolSize=32 event.jdbc.inUse=yes # remote db host access with su privileges # event.ssh.login= # event.ssh.password= # event.ssh.port= # DB Tree poolName2=tree tree.jdbc.driver=org.gjt.mm.mysql.Driver tree.jdbc.dbUrl=jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&noAccessToProcedureBodies=true tree.jdbc.username=javauser tree.jdbc.password=javapassword tree.jdbc.maxPoolSize=20 tree.jdbc.inUse=yes # DB Ont poolName3=ont ont.jdbc.driver=org.gjt.mm.mysql.Driver ont.jdbc.dbUrl=jdbc:mysql://localhost/eltex_ont?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 ont.jdbc.username=javauser ont.jdbc.password=javapassword ont.jdbc.maxPoolSize=40 ont.jdbc.inUse=yes # DB Syslog poolName4=syslog syslog.jdbc.driver=org.gjt.mm.mysql.Driver syslog.jdbc.dbUrl=jdbc:mysql://localhost/Syslog?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 syslog.jdbc.username=javauser syslog.jdbc.password=javapassword syslog.jdbc.maxPoolSize=4 syslog.jdbc.inUse=yes # remote db host access with su privileges # syslog.ssh.login= # syslog.ssh.password= # syslog.ssh.port= # DB acsmain (alias=cpe) poolName5=cpe cpe.jdbc.driver=org.gjt.mm.mysql.Driver cpe.jdbc.dbUrl=jdbc:mysql://localhost/acsmain?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 cpe.jdbc.username=javauser cpe.jdbc.password=javapassword cpe.jdbc.maxPoolSize=2 cpe.jdbc.inUse=yes # DB acscmds(alias=cmds) poolName6=cmds cmds.jdbc.driver=org.gjt.mm.mysql.Driver cmds.jdbc.dbUrl=jdbc:mysql://localhost/acscmds?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 cmds.jdbc.username=javauser cmds.jdbc.password=javapassword cmds.jdbc.maxPoolSize=2 cmds.jdbc.inUse=yes # DB acsinf(alias=inf) poolName7=inf inf.jdbc.driver=org.gjt.mm.mysql.Driver inf.jdbc.dbUrl=jdbc:mysql://localhost/acsinf?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 inf.jdbc.username=javauser inf.jdbc.password=javapassword inf.jdbc.maxPoolSize=2 inf.jdbc.inUse=yes # DB acscache(alias=cache) poolName8=cache cache.jdbc.driver=org.gjt.mm.mysql.Driver cache.jdbc.dbUrl=jdbc:mysql://localhost/acscache?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 cache.jdbc.username=javauser cache.jdbc.password=javapassword cache.jdbc.maxPoolSize=2 cache.jdbc.inUse=yes # DB radius(alias=radius) poolName9=radius radius.jdbc.driver=org.gjt.mm.mysql.Driver radius.jdbc.dbUrl=jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 radius.jdbc.username=javauser radius.jdbc.password=javapassword radius.jdbc.maxPoolSize=40 radius.jdbc.inUse=yes # remote db host access with su privileges # radius.ssh.login= # radius.ssh.password= # radius.ssh.port= # ------------------------------------------- SSID --------------------------------------------- # DB wireless (alias=wireless) poolName10=wireless wireless.jdbc.driver=org.gjt.mm.mysql.Driver wireless.jdbc.dbUrl=jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 wireless.jdbc.username=javauser wireless.jdbc.password=javapassword wireless.jdbc.maxPoolSize=30 wireless.jdbc.inUse=yes # memcached server address #memcached_server_ip_port=127.0.0.1:11211

Изменить localhost на в строках 4, 17, 26, 35, 48, 57, 66, 75, 84, 98.

Добавление пользователя в таблицу NAS

Для доступа в Личный кабинет необходимо добавить соответствующие записи в таблицу NAS.

Данная таблица находится в БД eltex_auth_service и содержит адреса клиентов, имеющих право отправлять запросы на проведение авторизации пользователей. Если клиент не включен в эту таблицу, то запросы авторизации будут игнорироваться.

Для этого в личном кабинете в разделе НастройкиСерверные адреса добавить :

  • - IP-адрес сервера-1
  • - IP-адрес сервера-2
  • - Виртуальный IP-адрес

Ключ RADIUS -eltex

Смена настроек в GUI

Также нужно настроить модули SoftWLC при помощи графического интерфейса.

Личный кабинет Wi-Fi

В разделе НастройкиИнтеграция в параметрах PCRF URL, URL NGW-клиента и URL конструктора порталов изменить localhost на виртуальный ip-адрес:

Конструктор порталов

Изменить localhost на виртуальный ip-адрес в разделах настроек:

Системные настройки → Конструктор порталов

Системные настройки → Доступ к NBI

Системные настройки → Доступ к NGW

Системные настройки → Доступ к PCRF

Системные настройки → Доступ к Mercury

EMS-GUI

В графическом интерфейсе сервера EMS изменить localhost (либо 127.0.0.1) на виртуальный ip-адрес в следующих разделах:

Администрирование → Настройка сервера → Системные модули → pcrf

Администрирование → Настройка сервера → Системные модули → radius

Администрирование → Настройка сервера → Системные модули → softwlc.nbi

Администрирование → Настройка сервера → Системные модули → system

Администрирование → Настройка сервера → Системные модули → tftpserver

Администрирование → Настройка сервера → Системные модули →wifelessCommon

Данный ключ должен совпадать с файлом /etc/eltex-wifi-cab/local_secret на каждом хосте, где установлен eltex-wifi-cab .

Если вы используете модуль netconf, то там так же необходимо актуализировать информацию

Администрирование → Настройка сервера → Системные модули → netconf

  • Нет меток

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *