Last modified by superadmin on 2026/06/24 21:40

From version 6.1
edited by admin
on 2026/06/07 18:49
Change comment: Remove Confluence content-wrapper markers
To version 1.1
edited by pugachevskaya_elena
on 2025/10/02 15:46
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.admin
1 +XWiki.pugachevskaya_elena
Content
... ... @@ -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,14 +7,20 @@
7 7  {{error}}
8 8  При необходимости горячего резервирования контейнеризированной версии Платформы НЕЙРОСС рекомендуем обратиться к специалистам компании ИТРИУМ.
9 9  {{/error}}
13 +{{/layout-cell}}
10 10  
15 +{{layout-cell}}
11 11  [[image:attach:ui.Параметры узла.WebHome@content.png||thumbnail="true" height="10"]] Содержание:
12 12  
13 13  {{toc depth="2"/}}
19 +{{/layout-cell}}
20 +{{/layout-section}}
14 14  
15 -== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Общиесведения"/}}Общие сведения(%%) ==
22 +{{layout-section ac:type="single"}}
23 +{{layout-cell}}
24 +== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Общиесведения"/}}(% style="font-size: 20.0px;letter-spacing: -0.008em;" %)Общие сведения(%%) ==
16 16  
17 -Отказоустойчивый кластер обеспечивает высокий уровень готовности резервного сервера для максимальной доступности сервисов системы. Самый простой кластер состоит из 2-х узлов (компьютеров, серверов), образующих его, настроенных на мониторинг друг друга и управление соответствующими ресурсами кластера.
26 +Отказоустойчивый кластер обеспечивает высокий уровень готовности резервного сервера для максимальной доступности сервисов системы. (% style="letter-spacing: 0.0px;" %)Самый простой кластер состоит из 2-х узлов (компьютеров, серверов), образующих его, настроенных на мониторинг друг друга и управление соответствующими ресурсами кластера.
18 18  
19 19  [[image:attach:Platform_Cluster_Scheme.png||width="400"]]
20 20  
... ... @@ -22,9 +22,9 @@
22 22  
23 23  Для настройки кластера и его ресурсов можно применять любую из двух утилит //pcs// или //crm//. При этом настройку можно осуществлять и той и другой в любом удобном порядке, поэтому некоторые действия описаны с использование одной утилиты, а некоторые – другой.
24 24  
25 -== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Действиянакаждомсервере(NODE1иNODE2)"/}}Действия на каждом сервере (NODE 1 и NODE2)(%%) ==
34 +== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Действиянакаждомсервере(NODE1иNODE2)"/}}(% style="letter-spacing: 0.0px;" %)Действия на каждом сервере (NODE 1 и NODE2)(%%) ==
26 26  
27 -Актуализируйте и обновите версии пакетов:
36 +(% style="letter-spacing: 0.0px;" %)Актуализируйте и обновите версии пакетов:
28 28  
29 29  {{code language="bash"}}
30 30  sudo apt update
... ... @@ -73,7 +73,7 @@
73 73  
74 74  Вывод команды приведён в коде ниже:
75 75  
76 -{{code language="java"}}
85 +{{code}}
77 77  hacluster:x:113:117::/var/lib/pacemaker:/usr/sbin/nologin
78 78  {{/code}}
79 79  
... ... @@ -101,13 +101,13 @@
101 101  
102 102  Найдите строку:
103 103  
104 -{{code language="java"}}
113 +{{code}}
105 105  receiver_parent_pids=`ps -ef | tr -s " " | grep "[w]al receiver process" | cut -d " " -f 3`
106 106  {{/code}}
107 107  
108 108  И замените её на:
109 109  
110 -{{code language="java"}}
119 +{{code}}
111 111  receiver_parent_pids=`ps -ef | tr -s " " | grep "[w]al\s*receiver" | cut -d " " -f 3`
112 112  {{/code}}
113 113  
... ... @@ -150,7 +150,7 @@
150 150  
151 151  При необходимости проверить конфигурацию (на всех серверах должен быть файл с одинаковым содержимым) выполните:
152 152  
153 -{{code language="java"}}
162 +{{code}}
154 154  cat /etc/corosync/corosync.conf
155 155   totem {
156 156   version: 2
... ... @@ -218,7 +218,7 @@
218 218  
219 219  В случае //stonith-enabled=true// вы увидите:
220 220  
221 -{{code language="java"}}
230 +{{code}}
222 222   Cluster name: HACLUSTER
223 223  
224 224   WARNINGS:
... ... @@ -308,7 +308,7 @@
308 308  
309 309  Добавьте в него необходимые разрешения следующим образом:
310 310  
311 -{{code language="java"}}
320 +{{code}}
312 312  # TYPE DATABASE USER ADDRESS METHOD
313 313  # "local" is for Unix domain socket connections only
314 314  local all all trust
... ... @@ -336,7 +336,7 @@
336 336  
337 337  Добавьте (или расскомментируйте) следующие строки:
338 338  
339 -{{code language="java"}}
348 +{{code}}
340 340   listen_addresses = '*'
341 341   wal_level = replica
342 342   logging_collector = on
... ... @@ -411,7 +411,7 @@
411 411  В некоторых описаниях настройки упоминается ещё параметр config="/etc/postgresql/12/main/postgresql.conf".
412 412  
413 413  {{info}}
414 -Если не выполнено исправление //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'.
415 415  {{/info}}
416 416  
417 417  
... ... @@ -481,8 +481,8 @@
481 481  --group master-group
482 482  {{/code}}
483 483  
484 -в параметрах (%%)//binfile//, (%%)//cmdline_options// и (%%)//user// укажите соответственно исполняемый файл с полным путём от корня, параметры запуска исполняемого файла, имя пользователя системы (от имени которого будет выполняться файл), всё указывается в кавычках(%%)
485 -параметры (%%)//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);" %) не являются обязательными
486 486  
487 487  == {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Созданиересурсафенсинга"/}}Создание ресурса фенсинга ==
488 488  
... ... @@ -489,7 +489,7 @@
489 489  Для защиты разделяемых ресурсов и изоляции узла кластера при его неисправности существует механизм фенсинга (изоляции).
490 490  Чтобы вывести список доступных агентов изоляции //fence-agents// используйте команду:
491 491  
492 -{{code language="java"}}
501 +{{code}}
493 493  sudo pcs stonith list
494 494  {{/code}}
495 495  
... ... @@ -496,7 +496,7 @@
496 496  
497 497  Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//:
498 498  
499 -{{code language="java"}}
508 +{{code}}
500 500  sudo crm
501 501   configure
502 502    primitive st-ssh stonith:external/ssh params hostlist="node1 node2"
... ... @@ -518,7 +518,7 @@
518 518  
519 519  выглядит следующим образом:
520 520  
521 -{{code language="java"}}
530 +{{code}}
522 522   Cluster Summary:
523 523   * Stack: corosync
524 524   * Current DC: node1 (version 2.0.3-4b1f869f0f) - partition with quorum
... ... @@ -582,7 +582,7 @@
582 582  
583 583  {{code/}}
584 584  
585 -Браузеру «не понравится» самоподписанный сертификат, но с этим надо согласиться или подложить на узлы доверенные сертификаты. Веб-интерфейс также доступен и по общему виртуальному адресу и тому же порту 2224.
594 +(% style="letter-spacing: 0.0px;" %)Браузеру «не понравится» самоподписанный сертификат, но с этим надо согласиться или подложить на узлы доверенные сертификаты. Веб-интерфейс также доступен и по общему виртуальному адресу и тому же порту 2224.
586 586  
587 587  Для входа необходимо использовать учётные данные пользователя кластера — //hacluster// и его пароль.
588 588  
... ... @@ -635,7 +635,7 @@
635 635  
636 636  При отсутствии ошибок:
637 637  
638 -{{code language="java"}}
647 +{{code}}
639 639  (unpack_config) notice: On loss of quorum: Ignore
640 640  {{/code}}
641 641  
... ... @@ -670,35 +670,38 @@
670 670  \\
671 671  
672 672  |=(((
673 -утилита crm_resource
682 +(% style="color: rgb(51,51,51);" %)утилита crm_resource
674 674  )))|=(((
675 -утилита crm
684 +(% style="color: rgb(51,51,51);" %)утилита crm
676 676  )))
677 677  |(% colspan="2" %)(((
678 -Вывод поддерживаемых стандартов (классов) ресурсов кластера
687 +(% style="color: rgb(51,51,51);" %)Вывод поддерживаемых стандартов (классов) ресурсов кластера
679 679  )))
680 680  |(((
690 +(% class="content-wrapper" %)
681 681  (((
682 -{{code language="java"}}
692 +{{code}}
683 683  sudo crm_resource --list-standards
684 684  {{/code}}
685 685  )))
686 686  )))|(((
697 +(% class="content-wrapper" %)
687 687  (((
688 -{{code language="java"}}
699 +{{code}}
689 689  sudo crm ra classes
690 690  {{/code}}
691 691  )))
692 692  )))
693 693  |(% colspan="2" %)(((
694 -Вывод поддерживаемых агентов ресурсов кластера для определенного стандарта
705 +(% style="color: rgb(51,51,51);" %)Вывод поддерживаемых агентов ресурсов кластера для определенного стандарта
695 695  )))
696 696  |(((
708 +(% class="content-wrapper" %)
697 697  (((
698 698  (% style="text-align: left;" %)
699 699  доступные systemd агенты
700 700  
701 -{{code language="java"}}
713 +{{code}}
702 702  sudo crm_resource --list-agents systemd
703 703  {{/code}}
704 704  
... ... @@ -705,27 +705,29 @@
705 705  (% style="text-align: left;" %)
706 706  доступные lsb агенты
707 707  
708 -{{code language="java"}}
720 +{{code}}
709 709  sudo crm_resource --list-agents lsb
710 710  {{/code}}
711 711  )))
712 712  )))|(((
725 +(% class="content-wrapper" %)
713 713  (((
714 -{{code language="java"}}
727 +{{code}}
715 715  sudo crm ra list systemd
716 716  {{/code}}
717 717  
718 -{{code language="java"}}
731 +{{code}}
719 719  sudo crm ra list lsb
720 720  {{/code}}
721 721  )))
722 722  )))
723 723  |(((
737 +(% class="content-wrapper" %)
724 724  (((
725 725  (% style="text-align: left;" %)
726 726  доступные OCF провайдеры
727 727  
728 -{{code language="java"}}
742 +{{code}}
729 729  sudo crm_resource --list-ocf-providers
730 730  {{/code}}
731 731  )))
... ... @@ -733,11 +733,12 @@
733 733  \\
734 734  )))
735 735  |(((
750 +(% class="content-wrapper" %)
736 736  (((
737 737  (% style="text-align: left;" %)
738 738  доступные OCF агенты из проекта linux-ha провайдер heartbeat
739 739  
740 -{{code language="java"}}
755 +{{code}}
741 741  sudo crm_resource --list-agents ocf:heartbeat
742 742  {{/code}}
743 743  )))
... ... @@ -745,11 +745,12 @@
745 745  \\
746 746  )))
747 747  |(((
763 +(% class="content-wrapper" %)
748 748  (((
749 749  (% style="text-align: left;" %)
750 750  доступный OCF провайдер для агента pgsql
751 751  
752 -{{code language="java"}}
768 +{{code}}
753 753  sudo crm_resource --list-ocf-alternatives pgsql
754 754  {{/code}}
755 755  )))
... ... @@ -757,11 +757,12 @@
757 757  \\
758 758  )))
759 759  |(((
776 +(% class="content-wrapper" %)
760 760  (((
761 761  (% style="text-align: left;" %)
762 762  метаданные для класс:провайдер:агент
763 763  
764 -{{code language="java"}}
781 +{{code}}
765 765  sudo crm_resource --show-metadata ocf:heartbeat:pgsql
766 766  {{/code}}
767 767  )))
... ... @@ -771,13 +771,13 @@
771 771  
772 772  Логи работы компонентов кластера
773 773  
774 -{{code language="java"}}
791 +{{code}}
775 775  sudo tail /var/log/pcsd/pcsd.log
776 776  sudo tail /var/log/corosync/corosync.log
777 777  sudo cat /var/log/pacemaker/pacemaker.log
778 778  {{/code}}
779 779  
780 -запуск с ключом **-f** позволит следить за ними в реальном времени.
797 +(% style="letter-spacing: 0.0px;" %)запуск с ключом **-f** позволит следить за ними в реальном времени.
781 781  
782 782  ----
783 783  
... ... @@ -793,7 +793,7 @@
793 793  sudo pcs stonith list
794 794  {{/code}}
795 795  
796 -(% style="font-weight: 400;" %)Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//:
813 +(% style="font-size: 14.0px;font-weight: 400;letter-spacing: 0.0px;" %)Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//:
797 797  
798 798  {{code language="bash"}}
799 799  sudo crm
... ... @@ -805,7 +805,7 @@
805 805   exit
806 806  {{/code}}
807 807  
808 -=== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Пример1.Использованиедвухмеханизмовфенсингаузловнапримерефенсингавиртуальныхмашинах"/}}Пример 1. Использование двух механизмов фенсинга узлов на примере фенсинга виртуальных машинах(%%) ===
825 +=== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Пример1.Использованиедвухмеханизмовфенсингаузловнапримерефенсингавиртуальныхмашинах"/}}(% style="color: rgb(94,108,132);letter-spacing: 0.0px;" %)Пример 1. Использование двух механизмов фенсинга узлов на примере фенсинга виртуальных машинах(%%) ===
809 809  
810 810  При использовании виртуальных машин в качестве узлов кластера можно использовать агент //external/libvirt//. Далее рассмотрим настройку конфигурации, в которой сервер с гипервизором имеет адрес 10.1.30.249, а узлы, как описано выше. В примере будут использоваться два фенсинг механизма – //ssh// и //libvirt//.
811 811  Чтобы вывести необходимые настройки для выбранного агента выполните команду:
... ... @@ -898,7 +898,7 @@
898 898  означает: для фенсинга узла //node2// сначала использовать ресурс //fence-node2-ssh//, если это не удается, то использовать ресурс //fence-node2-libvirt//.
899 899  {{/info}}
900 900  
901 -Перезагружаем все виртуальные машины в кластере.
918 +(% style="letter-spacing: 0.0px;" %)Перезагружаем все виртуальные машины в кластере.
902 902  
903 903  \\
904 904  
... ... @@ -906,7 +906,7 @@
906 906  
907 907  Реальная конфигурация не сильно отличается от тестовой, хотя для некоторых фенсинг устройств может потребоваться больше атрибутов. Например, устройство отключения IBM RSA (например, с адресами 10.1.31.101 и 10.1.31.102) может быть настроено следующим образом:
908 908  
909 -{{code language="java"}}
926 +{{code}}
910 910  sudo crm
911 911  configure
912 912   primitive st-ibmrsa-1 stonith:external/ibmrsa-telnet \
... ... @@ -1170,6 +1170,7 @@
1170 1170  
1171 1171  \\
1172 1172  
1190 +{{expand title="... возможное развитие ..."}}
1173 1173  Автоматическую синхронизацию можно выполнять посредством утилиты //lsyncd//. Данная программа позволяет средствами //rsync// делать резервное копирование сразу же по появлению нового файла в указанной директории. По-сути, выполняется односторонняя синхронизация в реальном времени с помощью Lsyncd.
1174 1174  
1175 1175  //Lsyncd// просматривает дерево локальных директорий с помощью интерфейса модуля мониторинга //inotify//. Он агрегирует и комбинирует события за несколько секунд и затем запускает процесс (или несколько процессов) синхронизации изменений. По умолчанию для этих целей используется //rsync//. Таким образом, //lsyncd// представляет собой легковесное решение для зеркалирования данных, сравнительно легкое в установке, не требующее специфичных файловых систем или блочных устройств, а также не влияющее на производительность файловой системы.
... ... @@ -1325,7 +1325,7 @@
1325 1325  nano /etc/lsyncd.exclude
1326 1326  {{/code}}
1327 1327  
1328 -{{code language="java"}}
1346 +{{code}}
1329 1329  *.tmp
1330 1330  *.bak
1331 1331  testfile.txt
... ... @@ -1332,7 +1332,7 @@
1332 1332  test/
1333 1333  {{/code}}
1334 1334  
1335 -в данном примере мы игнорируем файлы, заканчиваются на //.bak// или //.tmp//,а также файл //testfile.txt// и содержимое каталога //test//.
1353 +(% style="letter-spacing: 0.0px;" %)в данном примере мы игнорируем файлы, заканчиваются на //.bak// или //.tmp//,а также файл //testfile.txt// и содержимое каталога //test//.
1336 1336  
1337 1337  \\
1338 1338  
... ... @@ -1353,6 +1353,7 @@
1353 1353   op monitor depth="0" timeout="20s" interval="60s"
1354 1354   --group master-group
1355 1355  {{/code}}
1374 +{{/expand}}
1356 1356  
1357 1357  ----
1358 1358  
... ... @@ -1364,7 +1364,7 @@
1364 1364  * Замена вышедшего из строя оборудования (не приведшего к сбою);
1365 1365  * Обновление оборудования;
1366 1366  * Обновление программных средств;
1367 -* Смена ролей Мастера и Реплики. Это нужно в случае, когда, серверы Мастера и Реплики отличаются по ресурсам. Например, у нас в составе отказоустойчивого кластера есть мощный сервер, выполняющий роль Мастера СУБД PostgreSQL, и слабый сервер, выполняющий роль Реплики. После сбоя более мощного сервера Мастера его функции переходят к более слабой Реплике. Логично, что после устранения причин сбоя на бывшем Мастере администратор вернёт роль Мастера обратно на мощный сервер.
1386 +* (% style="letter-spacing: 0.0px;" %)Смена ролей Мастера и Реплики. Это нужно в случае, когда, серверы Мастера и Реплики отличаются по ресурсам. Например, у нас в составе отказоустойчивого кластера есть мощный сервер, выполняющий роль Мастера СУБД PostgreSQL, и слабый сервер, выполняющий роль Реплики. После сбоя более мощного сервера Мастера его функции переходят к более слабой Реплике. Логично, что после устранения причин сбоя на бывшем Мастере администратор вернёт роль Мастера обратно на мощный сервер.
1368 1368  
1369 1369  {{info title="Важно!"}}
1370 1370  Прежде чем производить смену ролей или вывод Мастера из эксплуатации, необходимо с помощью команды //crm_mon -Afr// убедиться, что в кластере присутствует синхронная реплика. И роль Мастера назначается всегда синхронной реплике.
... ... @@ -1374,7 +1374,7 @@
1374 1374  
1375 1375  * Перевод узла //node1// в //standby//
1376 1376  
1377 -{{code language="java"}}
1396 +{{code}}
1378 1378  sudo pcs node standby node1
1379 1379  {{/code}}
1380 1380  
... ... @@ -1385,7 +1385,7 @@
1385 1385  * Запуск узла NODE1 , в //crm_mon -Afr// состояние узла STANDBY
1386 1386  * Очистка директории СУБД и файла блокировки
1387 1387  
1388 -{{code language="java"}}
1407 +{{code}}
1389 1389  sudo rm /var/lib/pgsql/tmp/PGSQL.lock
1390 1390  sudo su - postgres
1391 1391  rm -rf /var/lib/postgresql/12/main/*
... ... @@ -1395,7 +1395,7 @@
1395 1395  
1396 1396  * Передача текущей копии БД с действующего узла в роли //Master//
1397 1397  
1398 -{{code language="java"}}
1417 +{{code}}
1399 1399  pg_basebackup -U postgres -D /var/lib/postgresql/12/main -h 10.1.30.252 -X stream -P
1400 1400  exit
1401 1401  {{/code}}
... ... @@ -1404,7 +1404,7 @@
1404 1404  
1405 1405  * Сброс ошибок ресурсов
1406 1406  
1407 -{{code language="java"}}
1426 +{{code}}
1408 1408  sudo pcs resource cleanup
1409 1409  {{/code}}
1410 1410  
... ... @@ -1412,7 +1412,7 @@
1412 1412  
1413 1413  * Выход узла NODE1 из standby, в //crm_mon -Afr// состояние узла //Slave//, изменение состояния реплики (параметр HA-pgsql-data-status в значении STREAMING|SYNC)
1414 1414  
1415 -{{code language="java"}}
1434 +{{code}}
1416 1416  sudo pcs node unstandby node1
1417 1417  {{/code}}
1418 1418  
... ... @@ -1420,7 +1420,7 @@
1420 1420  
1421 1421  * Перевод узла NODE2 в //standby//
1422 1422  
1423 -{{code language="java"}}
1442 +{{code}}
1424 1424  sudo pcs node standby node2
1425 1425  {{/code}}
1426 1426  
... ... @@ -1430,9 +1430,12 @@
1430 1430  
1431 1431  * Выход узла //node2// из //standby//, в //crm_mon -Afr// состояние узла //Slave//, изменение состояния реплики (параметр HA-pgsql-data-status в значении STREAMING|SYNC)
1432 1432  
1433 -{{code language="java"}}
1452 +{{code}}
1434 1434  sudo pcs node unstandby node2
1435 1435  {{/code}}
1436 1436  
1437 1437  
1438 1438  \\
1458 +{{/layout-cell}}
1459 +{{/layout-section}}
1460 +{{/layout}}

Платформа НЕЙРОСС