Изменения документа Отказоустойчивый кластер Платформы НЕЙРОСС
Редактировал(а) admin 2026/08/27 15:47
Сводка
-
Свойства страницы (3 изменено, 0 добавлено, 0 удалено)
-
Объекты (0 изменено, 0 добавлено, 1 удалено)
Подробности
- Свойства страницы
-
- Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. superadmin1 +XWiki.pugachevskaya_elena - Язык по умолчанию
-
... ... @@ -1,1 +1,1 @@ 1 - ru1 +en - Содержимое
-
... ... @@ -1,4 +1,7 @@ 1 -В данном разделе приведена пошаговая инструкция по развёртыванию кластера «с нуля», обеспечивающего базовую функциональность горячего резервирования сервера Платформы НЕЙРОСС с нативным типом установки (в среде ОС). 1 +{{layout}} 2 +{{layout-section ac:type="two_right_sidebar"}} 3 +{{layout-cell}} 4 +(% style="font-size: 14.0px;letter-spacing: 0.0px;" %)В данном разделе приведена пошаговая инструкция по развёртыванию кластера «с нуля», обеспечивающего базовую функциональность горячего резервирования сервера Платформы НЕЙРОСС с нативным типом установки (в среде ОС). 2 2 3 3 {{info}} 4 4 Ниже рассмотрен пример построения кластера при работе нативной версии в среде ОС Ubuntu Server 20.04.3 LTS. При необходимости разворачивания кластера в среде ОС Astra Linux рекомендуем обратиться к специалистам компании ИТРИУМ, мы вышлем подготовленный файл. ... ... @@ -7,11 +7,21 @@ 7 7 {{error}} 8 8 При необходимости горячего резервирования контейнеризированной версии Платформы НЕЙРОСС рекомендуем обратиться к специалистам компании ИТРИУМ. 9 9 {{/error}} 13 +{{/layout-cell}} 10 10 11 -== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Общиесведения"/}}Общие сведения(%%) == 15 +{{layout-cell}} 16 +[[image:attach:ui.Параметры узла.WebHome@content.png||thumbnail="true" height="10"]] Содержание: 12 12 13 -Отказоустойчивый кластер обеспечивает высокий уровень готовности резервного сервера для максимальной доступности сервисов системы. Самый простой кластер состоит из 2-х узлов (компьютеров, серверов), образующих его, настроенных на мониторинг друг друга и управление соответствующими ресурсами кластера. 18 +{{toc depth="2"/}} 19 +{{/layout-cell}} 20 +{{/layout-section}} 14 14 22 +{{layout-section ac:type="single"}} 23 +{{layout-cell}} 24 +== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Общиесведения"/}}(% style="font-size: 20.0px;letter-spacing: -0.008em;" %)Общие сведения(%%) == 25 + 26 +Отказоустойчивый кластер обеспечивает высокий уровень готовности резервного сервера для максимальной доступности сервисов системы. (% style="letter-spacing: 0.0px;" %)Самый простой кластер состоит из 2-х узлов (компьютеров, серверов), образующих его, настроенных на мониторинг друг друга и управление соответствующими ресурсами кластера. 27 + 15 15 [[image:attach:Platform_Cluster_Scheme.png||width="400"]] 16 16 17 17 \\ ... ... @@ -18,9 +18,9 @@ 18 18 19 19 Для настройки кластера и его ресурсов можно применять любую из двух утилит //pcs// или //crm//. При этом настройку можно осуществлять и той и другой в любом удобном порядке, поэтому некоторые действия описаны с использование одной утилиты, а некоторые – другой. 20 20 21 -== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Действиянакаждомсервере(NODE1иNODE2)"/}}Действия на каждом сервере (NODE 1 и NODE2)(%%) == 34 +== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Действиянакаждомсервере(NODE1иNODE2)"/}}(% style="letter-spacing: 0.0px;" %)Действия на каждом сервере (NODE 1 и NODE2)(%%) == 22 22 23 -Актуализируйте и обновите версии пакетов: 36 +(% style="letter-spacing: 0.0px;" %)Актуализируйте и обновите версии пакетов: 24 24 25 25 {{code language="bash"}} 26 26 sudo apt update ... ... @@ -69,7 +69,7 @@ 69 69 70 70 Вывод команды приведён в коде ниже: 71 71 72 -{{code language="java"}}85 +{{code}} 73 73 hacluster:x:113:117::/var/lib/pacemaker:/usr/sbin/nologin 74 74 {{/code}} 75 75 ... ... @@ -97,13 +97,13 @@ 97 97 98 98 Найдите строку: 99 99 100 -{{code language="java"}}113 +{{code}} 101 101 receiver_parent_pids=`ps -ef | tr -s " " | grep "[w]al receiver process" | cut -d " " -f 3` 102 102 {{/code}} 103 103 104 104 И замените её на: 105 105 106 -{{code language="java"}}119 +{{code}} 107 107 receiver_parent_pids=`ps -ef | tr -s " " | grep "[w]al\s*receiver" | cut -d " " -f 3` 108 108 {{/code}} 109 109 ... ... @@ -146,7 +146,7 @@ 146 146 147 147 При необходимости проверить конфигурацию (на всех серверах должен быть файл с одинаковым содержимым) выполните: 148 148 149 -{{code language="java"}}162 +{{code}} 150 150 cat /etc/corosync/corosync.conf 151 151 totem { 152 152 version: 2 ... ... @@ -214,7 +214,7 @@ 214 214 215 215 В случае //stonith-enabled=true// вы увидите: 216 216 217 -{{code language="java"}}230 +{{code}} 218 218 Cluster name: HACLUSTER 219 219 220 220 WARNINGS: ... ... @@ -304,7 +304,7 @@ 304 304 305 305 Добавьте в него необходимые разрешения следующим образом: 306 306 307 -{{code language="java"}}320 +{{code}} 308 308 # TYPE DATABASE USER ADDRESS METHOD 309 309 # "local" is for Unix domain socket connections only 310 310 local all all trust ... ... @@ -332,7 +332,7 @@ 332 332 333 333 Добавьте (или расскомментируйте) следующие строки: 334 334 335 -{{code language="java"}}348 +{{code}} 336 336 listen_addresses = '*' 337 337 wal_level = replica 338 338 logging_collector = on ... ... @@ -407,7 +407,7 @@ 407 407 В некоторых описаниях настройки упоминается ещё параметр config="/etc/postgresql/12/main/postgresql.conf". 408 408 409 409 {{info}} 410 -Если не выполнено исправление //resource-agents// (описано выше), то настройка параметра //check_wal_receiver="true"//, приведёт на узле NODE2 к появлению ошибки в //HA-pgsql-receiver-status// (вывод команды //sudo crm_mon -Afr//) и ежеминутных предупреждений в логах //(journalctl -f) "WARNING: wal receiver process is not running//". Настройка параметра(%%)// check_wal_receiver="false"// отключает проверку и мониторинг 'WAL receiver process'. 423 +Если не выполнено исправление //resource-agents// (описано выше), то настройка параметра //check_wal_receiver="true"//, приведёт на узле NODE2 к появлению ошибки в //HA-pgsql-receiver-status// (вывод команды //sudo crm_mon -Afr//) и ежеминутных предупреждений в логах //(journalctl -f) "WARNING: wal receiver process is not running//". (% style="color: rgb(51,51,51);" %)Настройка параметра(%%)// check_wal_receiver="false"//(% style="color: rgb(51,51,51);" %) отключает проверку и мониторинг 'WAL receiver process'. 411 411 {{/info}} 412 412 413 413 ... ... @@ -477,8 +477,8 @@ 477 477 --group master-group 478 478 {{/code}} 479 479 480 -в параметрах (%%)//binfile//, (%%)//cmdline_options// и (%%)//user// укажите соответственно исполняемый файл с полным путём от корня, параметры запуска исполняемого файла, имя пользователя системы (от имени которого будет выполняться файл), всё указывается в кавычках(%%) 481 -параметры (%%)//cmdline_options// и (%%)//user// не являются обязательными 493 +(% style="color: rgb(51,51,51);" %)в параметрах (%%)//binfile//(% style="color: rgb(51,51,51);" %), (%%)//cmdline_options//(% style="color: rgb(51,51,51);" %) и (%%)//user//(% style="color: rgb(51,51,51);" %) укажите соответственно исполняемый файл с полным путём от корня, параметры запуска исполняемого файла, имя пользователя системы (от имени которого будет выполняться файл), всё указывается в кавычках(%%) 494 +(% style="color: rgb(51,51,51);" %)параметры (%%)//cmdline_options//(% style="color: rgb(51,51,51);" %) и (%%)//user//(% style="color: rgb(51,51,51);" %) не являются обязательными 482 482 483 483 == {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Созданиересурсафенсинга"/}}Создание ресурса фенсинга == 484 484 ... ... @@ -485,7 +485,7 @@ 485 485 Для защиты разделяемых ресурсов и изоляции узла кластера при его неисправности существует механизм фенсинга (изоляции). 486 486 Чтобы вывести список доступных агентов изоляции //fence-agents// используйте команду: 487 487 488 -{{code language="java"}}501 +{{code}} 489 489 sudo pcs stonith list 490 490 {{/code}} 491 491 ... ... @@ -492,7 +492,7 @@ 492 492 493 493 Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//: 494 494 495 -{{code language="java"}}508 +{{code}} 496 496 sudo crm 497 497 configure 498 498 primitive st-ssh stonith:external/ssh params hostlist="node1 node2" ... ... @@ -514,7 +514,7 @@ 514 514 515 515 выглядит следующим образом: 516 516 517 -{{code language="java"}}530 +{{code}} 518 518 Cluster Summary: 519 519 * Stack: corosync 520 520 * Current DC: node1 (version 2.0.3-4b1f869f0f) - partition with quorum ... ... @@ -578,7 +578,7 @@ 578 578 579 579 {{code/}} 580 580 581 -Браузеру «не понравится» самоподписанный сертификат, но с этим надо согласиться или подложить на узлы доверенные сертификаты. Веб-интерфейс также доступен и по общему виртуальному адресу и тому же порту 2224. 594 +(% style="letter-spacing: 0.0px;" %)Браузеру «не понравится» самоподписанный сертификат, но с этим надо согласиться или подложить на узлы доверенные сертификаты. Веб-интерфейс также доступен и по общему виртуальному адресу и тому же порту 2224. 582 582 583 583 Для входа необходимо использовать учётные данные пользователя кластера — //hacluster// и его пароль. 584 584 ... ... @@ -631,7 +631,7 @@ 631 631 632 632 При отсутствии ошибок: 633 633 634 -{{code language="java"}}647 +{{code}} 635 635 (unpack_config) notice: On loss of quorum: Ignore 636 636 {{/code}} 637 637 ... ... @@ -666,35 +666,38 @@ 666 666 \\ 667 667 668 668 |=((( 669 -утилита crm_resource 682 +(% style="color: rgb(51,51,51);" %)утилита crm_resource 670 670 )))|=((( 671 -утилита crm 684 +(% style="color: rgb(51,51,51);" %)утилита crm 672 672 ))) 673 673 |(% colspan="2" %)((( 674 -Вывод поддерживаемых стандартов (классов) ресурсов кластера 687 +(% style="color: rgb(51,51,51);" %)Вывод поддерживаемых стандартов (классов) ресурсов кластера 675 675 ))) 676 676 |((( 690 +(% class="content-wrapper" %) 677 677 ((( 678 -{{code language="java"}}692 +{{code}} 679 679 sudo crm_resource --list-standards 680 680 {{/code}} 681 681 ))) 682 682 )))|((( 697 +(% class="content-wrapper" %) 683 683 ((( 684 -{{code language="java"}}699 +{{code}} 685 685 sudo crm ra classes 686 686 {{/code}} 687 687 ))) 688 688 ))) 689 689 |(% colspan="2" %)((( 690 -Вывод поддерживаемых агентов ресурсов кластера для определенного стандарта 705 +(% style="color: rgb(51,51,51);" %)Вывод поддерживаемых агентов ресурсов кластера для определенного стандарта 691 691 ))) 692 692 |((( 708 +(% class="content-wrapper" %) 693 693 ((( 694 694 (% style="text-align: left;" %) 695 695 доступные systemd агенты 696 696 697 -{{code language="java"}}713 +{{code}} 698 698 sudo crm_resource --list-agents systemd 699 699 {{/code}} 700 700 ... ... @@ -701,27 +701,29 @@ 701 701 (% style="text-align: left;" %) 702 702 доступные lsb агенты 703 703 704 -{{code language="java"}}720 +{{code}} 705 705 sudo crm_resource --list-agents lsb 706 706 {{/code}} 707 707 ))) 708 708 )))|((( 725 +(% class="content-wrapper" %) 709 709 ((( 710 -{{code language="java"}}727 +{{code}} 711 711 sudo crm ra list systemd 712 712 {{/code}} 713 713 714 -{{code language="java"}}731 +{{code}} 715 715 sudo crm ra list lsb 716 716 {{/code}} 717 717 ))) 718 718 ))) 719 719 |((( 737 +(% class="content-wrapper" %) 720 720 ((( 721 721 (% style="text-align: left;" %) 722 722 доступные OCF провайдеры 723 723 724 -{{code language="java"}}742 +{{code}} 725 725 sudo crm_resource --list-ocf-providers 726 726 {{/code}} 727 727 ))) ... ... @@ -729,11 +729,12 @@ 729 729 \\ 730 730 ))) 731 731 |((( 750 +(% class="content-wrapper" %) 732 732 ((( 733 733 (% style="text-align: left;" %) 734 734 доступные OCF агенты из проекта linux-ha провайдер heartbeat 735 735 736 -{{code language="java"}}755 +{{code}} 737 737 sudo crm_resource --list-agents ocf:heartbeat 738 738 {{/code}} 739 739 ))) ... ... @@ -741,11 +741,12 @@ 741 741 \\ 742 742 ))) 743 743 |((( 763 +(% class="content-wrapper" %) 744 744 ((( 745 745 (% style="text-align: left;" %) 746 746 доступный OCF провайдер для агента pgsql 747 747 748 -{{code language="java"}}768 +{{code}} 749 749 sudo crm_resource --list-ocf-alternatives pgsql 750 750 {{/code}} 751 751 ))) ... ... @@ -753,11 +753,12 @@ 753 753 \\ 754 754 ))) 755 755 |((( 776 +(% class="content-wrapper" %) 756 756 ((( 757 757 (% style="text-align: left;" %) 758 758 метаданные для класс:провайдер:агент 759 759 760 -{{code language="java"}}781 +{{code}} 761 761 sudo crm_resource --show-metadata ocf:heartbeat:pgsql 762 762 {{/code}} 763 763 ))) ... ... @@ -767,13 +767,13 @@ 767 767 768 768 Логи работы компонентов кластера 769 769 770 -{{code language="java"}}791 +{{code}} 771 771 sudo tail /var/log/pcsd/pcsd.log 772 772 sudo tail /var/log/corosync/corosync.log 773 773 sudo cat /var/log/pacemaker/pacemaker.log 774 774 {{/code}} 775 775 776 -запуск с ключом **-f** позволит следить за ними в реальном времени. 797 +(% style="letter-spacing: 0.0px;" %)запуск с ключом **-f** позволит следить за ними в реальном времени. 777 777 778 778 ---- 779 779 ... ... @@ -789,7 +789,7 @@ 789 789 sudo pcs stonith list 790 790 {{/code}} 791 791 792 -(% style="font-weight: 400;" %)Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//: 813 +(% style="font-size: 14.0px;font-weight: 400;letter-spacing: 0.0px;" %)Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//: 793 793 794 794 {{code language="bash"}} 795 795 sudo crm ... ... @@ -801,7 +801,7 @@ 801 801 exit 802 802 {{/code}} 803 803 804 -=== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Пример1.Использованиедвухмеханизмовфенсингаузловнапримерефенсингавиртуальныхмашинах"/}}Пример 1. Использование двух механизмов фенсинга узлов на примере фенсинга виртуальных машинах(%%) === 825 +=== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Пример1.Использованиедвухмеханизмовфенсингаузловнапримерефенсингавиртуальныхмашинах"/}}(% style="color: rgb(94,108,132);letter-spacing: 0.0px;" %)Пример 1. Использование двух механизмов фенсинга узлов на примере фенсинга виртуальных машинах(%%) === 805 805 806 806 При использовании виртуальных машин в качестве узлов кластера можно использовать агент //external/libvirt//. Далее рассмотрим настройку конфигурации, в которой сервер с гипервизором имеет адрес 10.1.30.249, а узлы, как описано выше. В примере будут использоваться два фенсинг механизма – //ssh// и //libvirt//. 807 807 Чтобы вывести необходимые настройки для выбранного агента выполните команду: ... ... @@ -894,7 +894,7 @@ 894 894 означает: для фенсинга узла //node2// сначала использовать ресурс //fence-node2-ssh//, если это не удается, то использовать ресурс //fence-node2-libvirt//. 895 895 {{/info}} 896 896 897 -Перезагружаем все виртуальные машины в кластере. 918 +(% style="letter-spacing: 0.0px;" %)Перезагружаем все виртуальные машины в кластере. 898 898 899 899 \\ 900 900 ... ... @@ -902,7 +902,7 @@ 902 902 903 903 Реальная конфигурация не сильно отличается от тестовой, хотя для некоторых фенсинг устройств может потребоваться больше атрибутов. Например, устройство отключения IBM RSA (например, с адресами 10.1.31.101 и 10.1.31.102) может быть настроено следующим образом: 904 904 905 -{{code language="java"}}926 +{{code}} 906 906 sudo crm 907 907 configure 908 908 primitive st-ibmrsa-1 stonith:external/ibmrsa-telnet \ ... ... @@ -1166,6 +1166,7 @@ 1166 1166 1167 1167 \\ 1168 1168 1190 +{{expand title="... возможное развитие ..."}} 1169 1169 Автоматическую синхронизацию можно выполнять посредством утилиты //lsyncd//. Данная программа позволяет средствами //rsync// делать резервное копирование сразу же по появлению нового файла в указанной директории. По-сути, выполняется односторонняя синхронизация в реальном времени с помощью Lsyncd. 1170 1170 1171 1171 //Lsyncd// просматривает дерево локальных директорий с помощью интерфейса модуля мониторинга //inotify//. Он агрегирует и комбинирует события за несколько секунд и затем запускает процесс (или несколько процессов) синхронизации изменений. По умолчанию для этих целей используется //rsync//. Таким образом, //lsyncd// представляет собой легковесное решение для зеркалирования данных, сравнительно легкое в установке, не требующее специфичных файловых систем или блочных устройств, а также не влияющее на производительность файловой системы. ... ... @@ -1321,7 +1321,7 @@ 1321 1321 nano /etc/lsyncd.exclude 1322 1322 {{/code}} 1323 1323 1324 -{{code language="java"}}1346 +{{code}} 1325 1325 *.tmp 1326 1326 *.bak 1327 1327 testfile.txt ... ... @@ -1328,7 +1328,7 @@ 1328 1328 test/ 1329 1329 {{/code}} 1330 1330 1331 -в данном примере мы игнорируем файлы, заканчиваются на //.bak// или //.tmp//,а также файл //testfile.txt// и содержимое каталога //test//. 1353 +(% style="letter-spacing: 0.0px;" %)в данном примере мы игнорируем файлы, заканчиваются на //.bak// или //.tmp//,а также файл //testfile.txt// и содержимое каталога //test//. 1332 1332 1333 1333 \\ 1334 1334 ... ... @@ -1349,6 +1349,7 @@ 1349 1349 op monitor depth="0" timeout="20s" interval="60s" 1350 1350 --group master-group 1351 1351 {{/code}} 1374 +{{/expand}} 1352 1352 1353 1353 ---- 1354 1354 ... ... @@ -1360,7 +1360,7 @@ 1360 1360 * Замена вышедшего из строя оборудования (не приведшего к сбою); 1361 1361 * Обновление оборудования; 1362 1362 * Обновление программных средств; 1363 -* Смена ролей Мастера и Реплики. Это нужно в случае, когда, серверы Мастера и Реплики отличаются по ресурсам. Например, у нас в составе отказоустойчивого кластера есть мощный сервер, выполняющий роль Мастера СУБД PostgreSQL, и слабый сервер, выполняющий роль Реплики. После сбоя более мощного сервера Мастера его функции переходят к более слабой Реплике. Логично, что после устранения причин сбоя на бывшем Мастере администратор вернёт роль Мастера обратно на мощный сервер. 1386 +* (% style="letter-spacing: 0.0px;" %)Смена ролей Мастера и Реплики. Это нужно в случае, когда, серверы Мастера и Реплики отличаются по ресурсам. Например, у нас в составе отказоустойчивого кластера есть мощный сервер, выполняющий роль Мастера СУБД PostgreSQL, и слабый сервер, выполняющий роль Реплики. После сбоя более мощного сервера Мастера его функции переходят к более слабой Реплике. Логично, что после устранения причин сбоя на бывшем Мастере администратор вернёт роль Мастера обратно на мощный сервер. 1364 1364 1365 1365 {{info title="Важно!"}} 1366 1366 Прежде чем производить смену ролей или вывод Мастера из эксплуатации, необходимо с помощью команды //crm_mon -Afr// убедиться, что в кластере присутствует синхронная реплика. И роль Мастера назначается всегда синхронной реплике. ... ... @@ -1370,7 +1370,7 @@ 1370 1370 1371 1371 * Перевод узла //node1// в //standby// 1372 1372 1373 -{{code language="java"}}1396 +{{code}} 1374 1374 sudo pcs node standby node1 1375 1375 {{/code}} 1376 1376 ... ... @@ -1381,7 +1381,7 @@ 1381 1381 * Запуск узла NODE1 , в //crm_mon -Afr// состояние узла STANDBY 1382 1382 * Очистка директории СУБД и файла блокировки 1383 1383 1384 -{{code language="java"}}1407 +{{code}} 1385 1385 sudo rm /var/lib/pgsql/tmp/PGSQL.lock 1386 1386 sudo su - postgres 1387 1387 rm -rf /var/lib/postgresql/12/main/* ... ... @@ -1391,7 +1391,7 @@ 1391 1391 1392 1392 * Передача текущей копии БД с действующего узла в роли //Master// 1393 1393 1394 -{{code language="java"}}1417 +{{code}} 1395 1395 pg_basebackup -U postgres -D /var/lib/postgresql/12/main -h 10.1.30.252 -X stream -P 1396 1396 exit 1397 1397 {{/code}} ... ... @@ -1400,7 +1400,7 @@ 1400 1400 1401 1401 * Сброс ошибок ресурсов 1402 1402 1403 -{{code language="java"}}1426 +{{code}} 1404 1404 sudo pcs resource cleanup 1405 1405 {{/code}} 1406 1406 ... ... @@ -1408,7 +1408,7 @@ 1408 1408 1409 1409 * Выход узла NODE1 из standby, в //crm_mon -Afr// состояние узла //Slave//, изменение состояния реплики (параметр HA-pgsql-data-status в значении STREAMING|SYNC) 1410 1410 1411 -{{code language="java"}}1434 +{{code}} 1412 1412 sudo pcs node unstandby node1 1413 1413 {{/code}} 1414 1414 ... ... @@ -1416,7 +1416,7 @@ 1416 1416 1417 1417 * Перевод узла NODE2 в //standby// 1418 1418 1419 -{{code language="java"}}1442 +{{code}} 1420 1420 sudo pcs node standby node2 1421 1421 {{/code}} 1422 1422 ... ... @@ -1426,9 +1426,12 @@ 1426 1426 1427 1427 * Выход узла //node2// из //standby//, в //crm_mon -Afr// состояние узла //Slave//, изменение состояния реплики (параметр HA-pgsql-data-status в значении STREAMING|SYNC) 1428 1428 1429 -{{code language="java"}}1452 +{{code}} 1430 1430 sudo pcs node unstandby node2 1431 1431 {{/code}} 1432 1432 1433 1433 1434 1434 \\ 1458 +{{/layout-cell}} 1459 +{{/layout-section}} 1460 +{{/layout}}
- XWiki.ShortUrlClass[0]
-
- Short URL code
-
... ... @@ -1,1 +1,0 @@ 1 -59c92 - Last known target (debug)
-
... ... @@ -1,1 +1,0 @@ 1 -neyross.Обслуживание Платформы НЕЙРОСС.Отказоустойчивый кластер Платформы НЕЙРОСС.WebHome