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

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

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.pugachevskaya_elena
1 +XWiki.admin
Content
... ... @@ -1,7 +1,4 @@
1 -{{layout}}
2 -{{layout-section ac:type="two_right_sidebar"}}
3 -{{layout-cell}}
4 -(% style="font-size: 14.0px;letter-spacing: 0.0px;" %)В данном разделе приведена пошаговая инструкция по развёртыванию кластера «с нуля», обеспечивающего базовую функциональность горячего резервирования сервера Платформы НЕЙРОСС с нативным типом установки (в среде ОС).
1 +В данном разделе приведена пошаговая инструкция по развёртыванию кластера «с нуля», обеспечивающего базовую функциональность горячего резервирования сервера Платформы НЕЙРОСС с нативным типом установки (в среде ОС).
5 5  
6 6  {{info}}
7 7  Ниже рассмотрен пример построения кластера при работе нативной версии в среде ОС Ubuntu Server 20.04.3 LTS. При необходимости разворачивания кластера в среде ОС Astra Linux рекомендуем обратиться к специалистам компании ИТРИУМ, мы вышлем подготовленный файл.
... ... @@ -10,20 +10,14 @@
10 10  {{error}}
11 11  При необходимости горячего резервирования контейнеризированной версии Платформы НЕЙРОСС рекомендуем обратиться к специалистам компании ИТРИУМ.
12 12  {{/error}}
13 -{{/layout-cell}}
14 14  
15 -{{layout-cell}}
16 16  [[image:attach:ui.Параметры узла.WebHome@content.png||thumbnail="true" height="10"]] Содержание:
17 17  
18 18  {{toc depth="2"/}}
19 -{{/layout-cell}}
20 -{{/layout-section}}
21 21  
22 -{{layout-section ac:type="single"}}
23 -{{layout-cell}}
24 -== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Общиесведения"/}}(% style="font-size: 20.0px;letter-spacing: -0.008em;" %)Общие сведения(%%) ==
15 +== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Общиесведения"/}}Общие сведения(%%) ==
25 25  
26 -Отказоустойчивый кластер обеспечивает высокий уровень готовности резервного сервера для максимальной доступности сервисов системы. (% style="letter-spacing: 0.0px;" %)Самый простой кластер состоит из 2-х узлов (компьютеров, серверов), образующих его, настроенных на мониторинг друг друга и управление соответствующими ресурсами кластера.
17 +Отказоустойчивый кластер обеспечивает высокий уровень готовности резервного сервера для максимальной доступности сервисов системы. Самый простой кластер состоит из 2-х узлов (компьютеров, серверов), образующих его, настроенных на мониторинг друг друга и управление соответствующими ресурсами кластера.
27 27  
28 28  [[image:attach:Platform_Cluster_Scheme.png||width="400"]]
29 29  
... ... @@ -31,9 +31,9 @@
31 31  
32 32  Для настройки кластера и его ресурсов можно применять любую из двух утилит //pcs// или //crm//. При этом настройку можно осуществлять и той и другой в любом удобном порядке, поэтому некоторые действия описаны с использование одной утилиты, а некоторые – другой.
33 33  
34 -== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Действиянакаждомсервере(NODE1иNODE2)"/}}(% style="letter-spacing: 0.0px;" %)Действия на каждом сервере (NODE 1 и NODE2)(%%) ==
25 +== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Действиянакаждомсервере(NODE1иNODE2)"/}}Действия на каждом сервере (NODE 1 и NODE2)(%%) ==
35 35  
36 -(% style="letter-spacing: 0.0px;" %)Актуализируйте и обновите версии пакетов:
27 +Актуализируйте и обновите версии пакетов:
37 37  
38 38  {{code language="bash"}}
39 39  sudo apt update
... ... @@ -82,7 +82,7 @@
82 82  
83 83  Вывод команды приведён в коде ниже:
84 84  
85 -{{code}}
76 +{{code language="java"}}
86 86  hacluster:x:113:117::/var/lib/pacemaker:/usr/sbin/nologin
87 87  {{/code}}
88 88  
... ... @@ -110,13 +110,13 @@
110 110  
111 111  Найдите строку:
112 112  
113 -{{code}}
104 +{{code language="java"}}
114 114  receiver_parent_pids=`ps -ef | tr -s " " | grep "[w]al receiver process" | cut -d " " -f 3`
115 115  {{/code}}
116 116  
117 117  И замените её на:
118 118  
119 -{{code}}
110 +{{code language="java"}}
120 120  receiver_parent_pids=`ps -ef | tr -s " " | grep "[w]al\s*receiver" | cut -d " " -f 3`
121 121  {{/code}}
122 122  
... ... @@ -159,7 +159,7 @@
159 159  
160 160  При необходимости проверить конфигурацию (на всех серверах должен быть файл с одинаковым содержимым) выполните:
161 161  
162 -{{code}}
153 +{{code language="java"}}
163 163  cat /etc/corosync/corosync.conf
164 164   totem {
165 165   version: 2
... ... @@ -227,7 +227,7 @@
227 227  
228 228  В случае //stonith-enabled=true// вы увидите:
229 229  
230 -{{code}}
221 +{{code language="java"}}
231 231   Cluster name: HACLUSTER
232 232  
233 233   WARNINGS:
... ... @@ -317,7 +317,7 @@
317 317  
318 318  Добавьте в него необходимые разрешения следующим образом:
319 319  
320 -{{code}}
311 +{{code language="java"}}
321 321  # TYPE DATABASE USER ADDRESS METHOD
322 322  # "local" is for Unix domain socket connections only
323 323  local all all trust
... ... @@ -345,7 +345,7 @@
345 345  
346 346  Добавьте (или расскомментируйте) следующие строки:
347 347  
348 -{{code}}
339 +{{code language="java"}}
349 349   listen_addresses = '*'
350 350   wal_level = replica
351 351   logging_collector = on
... ... @@ -420,7 +420,7 @@
420 420  В некоторых описаниях настройки упоминается ещё параметр config="/etc/postgresql/12/main/postgresql.conf".
421 421  
422 422  {{info}}
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'.
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'.
424 424  {{/info}}
425 425  
426 426  
... ... @@ -490,8 +490,8 @@
490 490  --group master-group
491 491  {{/code}}
492 492  
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);" %) не являются обязательными
484 +в параметрах (%%)//binfile//, (%%)//cmdline_options// и (%%)//user// укажите соответственно исполняемый файл с полным путём от корня, параметры запуска исполняемого файла, имя пользователя системы (от имени которого будет выполняться файл), всё указывается в кавычках(%%)
485 +параметры (%%)//cmdline_options// и (%%)//user// не являются обязательными
495 495  
496 496  == {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Созданиересурсафенсинга"/}}Создание ресурса фенсинга ==
497 497  
... ... @@ -498,7 +498,7 @@
498 498  Для защиты разделяемых ресурсов и изоляции узла кластера при его неисправности существует механизм фенсинга (изоляции).
499 499  Чтобы вывести список доступных агентов изоляции //fence-agents// используйте команду:
500 500  
501 -{{code}}
492 +{{code language="java"}}
502 502  sudo pcs stonith list
503 503  {{/code}}
504 504  
... ... @@ -505,7 +505,7 @@
505 505  
506 506  Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//:
507 507  
508 -{{code}}
499 +{{code language="java"}}
509 509  sudo crm
510 510   configure
511 511    primitive st-ssh stonith:external/ssh params hostlist="node1 node2"
... ... @@ -527,7 +527,7 @@
527 527  
528 528  выглядит следующим образом:
529 529  
530 -{{code}}
521 +{{code language="java"}}
531 531   Cluster Summary:
532 532   * Stack: corosync
533 533   * Current DC: node1 (version 2.0.3-4b1f869f0f) - partition with quorum
... ... @@ -591,7 +591,7 @@
591 591  
592 592  {{code/}}
593 593  
594 -(% style="letter-spacing: 0.0px;" %)Браузеру «не понравится» самоподписанный сертификат, но с этим надо согласиться или подложить на узлы доверенные сертификаты. Веб-интерфейс также доступен и по общему виртуальному адресу и тому же порту 2224.
585 +Браузеру «не понравится» самоподписанный сертификат, но с этим надо согласиться или подложить на узлы доверенные сертификаты. Веб-интерфейс также доступен и по общему виртуальному адресу и тому же порту 2224.
595 595  
596 596  Для входа необходимо использовать учётные данные пользователя кластера — //hacluster// и его пароль.
597 597  
... ... @@ -644,7 +644,7 @@
644 644  
645 645  При отсутствии ошибок:
646 646  
647 -{{code}}
638 +{{code language="java"}}
648 648  (unpack_config) notice: On loss of quorum: Ignore
649 649  {{/code}}
650 650  
... ... @@ -679,38 +679,35 @@
679 679  \\
680 680  
681 681  |=(((
682 -(% style="color: rgb(51,51,51);" %)утилита crm_resource
673 +утилита crm_resource
683 683  )))|=(((
684 -(% style="color: rgb(51,51,51);" %)утилита crm
675 +утилита crm
685 685  )))
686 686  |(% colspan="2" %)(((
687 -(% style="color: rgb(51,51,51);" %)Вывод поддерживаемых стандартов (классов) ресурсов кластера
678 +Вывод поддерживаемых стандартов (классов) ресурсов кластера
688 688  )))
689 689  |(((
690 -(% class="content-wrapper" %)
691 691  (((
692 -{{code}}
682 +{{code language="java"}}
693 693  sudo crm_resource --list-standards
694 694  {{/code}}
695 695  )))
696 696  )))|(((
697 -(% class="content-wrapper" %)
698 698  (((
699 -{{code}}
688 +{{code language="java"}}
700 700  sudo crm ra classes
701 701  {{/code}}
702 702  )))
703 703  )))
704 704  |(% colspan="2" %)(((
705 -(% style="color: rgb(51,51,51);" %)Вывод поддерживаемых агентов ресурсов кластера для определенного стандарта
694 +Вывод поддерживаемых агентов ресурсов кластера для определенного стандарта
706 706  )))
707 707  |(((
708 -(% class="content-wrapper" %)
709 709  (((
710 710  (% style="text-align: left;" %)
711 711  доступные systemd агенты
712 712  
713 -{{code}}
701 +{{code language="java"}}
714 714  sudo crm_resource --list-agents systemd
715 715  {{/code}}
716 716  
... ... @@ -717,29 +717,27 @@
717 717  (% style="text-align: left;" %)
718 718  доступные lsb агенты
719 719  
720 -{{code}}
708 +{{code language="java"}}
721 721  sudo crm_resource --list-agents lsb
722 722  {{/code}}
723 723  )))
724 724  )))|(((
725 -(% class="content-wrapper" %)
726 726  (((
727 -{{code}}
714 +{{code language="java"}}
728 728  sudo crm ra list systemd
729 729  {{/code}}
730 730  
731 -{{code}}
718 +{{code language="java"}}
732 732  sudo crm ra list lsb
733 733  {{/code}}
734 734  )))
735 735  )))
736 736  |(((
737 -(% class="content-wrapper" %)
738 738  (((
739 739  (% style="text-align: left;" %)
740 740  доступные OCF провайдеры
741 741  
742 -{{code}}
728 +{{code language="java"}}
743 743  sudo crm_resource --list-ocf-providers
744 744  {{/code}}
745 745  )))
... ... @@ -747,12 +747,11 @@
747 747  \\
748 748  )))
749 749  |(((
750 -(% class="content-wrapper" %)
751 751  (((
752 752  (% style="text-align: left;" %)
753 753  доступные OCF агенты из проекта linux-ha провайдер heartbeat
754 754  
755 -{{code}}
740 +{{code language="java"}}
756 756  sudo crm_resource --list-agents ocf:heartbeat
757 757  {{/code}}
758 758  )))
... ... @@ -760,12 +760,11 @@
760 760  \\
761 761  )))
762 762  |(((
763 -(% class="content-wrapper" %)
764 764  (((
765 765  (% style="text-align: left;" %)
766 766  доступный OCF провайдер для агента pgsql
767 767  
768 -{{code}}
752 +{{code language="java"}}
769 769  sudo crm_resource --list-ocf-alternatives pgsql
770 770  {{/code}}
771 771  )))
... ... @@ -773,12 +773,11 @@
773 773  \\
774 774  )))
775 775  |(((
776 -(% class="content-wrapper" %)
777 777  (((
778 778  (% style="text-align: left;" %)
779 779  метаданные для класс:провайдер:агент
780 780  
781 -{{code}}
764 +{{code language="java"}}
782 782  sudo crm_resource --show-metadata ocf:heartbeat:pgsql
783 783  {{/code}}
784 784  )))
... ... @@ -788,13 +788,13 @@
788 788  
789 789  Логи работы компонентов кластера
790 790  
791 -{{code}}
774 +{{code language="java"}}
792 792  sudo tail /var/log/pcsd/pcsd.log
793 793  sudo tail /var/log/corosync/corosync.log
794 794  sudo cat /var/log/pacemaker/pacemaker.log
795 795  {{/code}}
796 796  
797 -(% style="letter-spacing: 0.0px;" %)запуск с ключом **-f** позволит следить за ними в реальном времени.
780 +запуск с ключом **-f** позволит следить за ними в реальном времени.
798 798  
799 799  ----
800 800  
... ... @@ -810,7 +810,7 @@
810 810  sudo pcs stonith list
811 811  {{/code}}
812 812  
813 -(% style="font-size: 14.0px;font-weight: 400;letter-spacing: 0.0px;" %)Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//:
796 +(% style="font-weight: 400;" %)Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//:
814 814  
815 815  {{code language="bash"}}
816 816  sudo crm
... ... @@ -822,7 +822,7 @@
822 822   exit
823 823  {{/code}}
824 824  
825 -=== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Пример1.Использованиедвухмеханизмовфенсингаузловнапримерефенсингавиртуальныхмашинах"/}}(% style="color: rgb(94,108,132);letter-spacing: 0.0px;" %)Пример 1. Использование двух механизмов фенсинга узлов на примере фенсинга виртуальных машинах(%%) ===
808 +=== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Пример1.Использованиедвухмеханизмовфенсингаузловнапримерефенсингавиртуальныхмашинах"/}}Пример 1. Использование двух механизмов фенсинга узлов на примере фенсинга виртуальных машинах(%%) ===
826 826  
827 827  При использовании виртуальных машин в качестве узлов кластера можно использовать агент //external/libvirt//. Далее рассмотрим настройку конфигурации, в которой сервер с гипервизором имеет адрес 10.1.30.249, а узлы, как описано выше. В примере будут использоваться два фенсинг механизма – //ssh// и //libvirt//.
828 828  Чтобы вывести необходимые настройки для выбранного агента выполните команду:
... ... @@ -915,7 +915,7 @@
915 915  означает: для фенсинга узла //node2// сначала использовать ресурс //fence-node2-ssh//, если это не удается, то использовать ресурс //fence-node2-libvirt//.
916 916  {{/info}}
917 917  
918 -(% style="letter-spacing: 0.0px;" %)Перезагружаем все виртуальные машины в кластере.
901 +Перезагружаем все виртуальные машины в кластере.
919 919  
920 920  \\
921 921  
... ... @@ -923,7 +923,7 @@
923 923  
924 924  Реальная конфигурация не сильно отличается от тестовой, хотя для некоторых фенсинг устройств может потребоваться больше атрибутов. Например, устройство отключения IBM RSA (например, с адресами 10.1.31.101 и 10.1.31.102) может быть настроено следующим образом:
925 925  
926 -{{code}}
909 +{{code language="java"}}
927 927  sudo crm
928 928  configure
929 929   primitive st-ibmrsa-1 stonith:external/ibmrsa-telnet \
... ... @@ -1187,7 +1187,6 @@
1187 1187  
1188 1188  \\
1189 1189  
1190 -{{expand title="... возможное развитие ..."}}
1191 1191  Автоматическую синхронизацию можно выполнять посредством утилиты //lsyncd//. Данная программа позволяет средствами //rsync// делать резервное копирование сразу же по появлению нового файла в указанной директории. По-сути, выполняется односторонняя синхронизация в реальном времени с помощью Lsyncd.
1192 1192  
1193 1193  //Lsyncd// просматривает дерево локальных директорий с помощью интерфейса модуля мониторинга //inotify//. Он агрегирует и комбинирует события за несколько секунд и затем запускает процесс (или несколько процессов) синхронизации изменений. По умолчанию для этих целей используется //rsync//. Таким образом, //lsyncd// представляет собой легковесное решение для зеркалирования данных, сравнительно легкое в установке, не требующее специфичных файловых систем или блочных устройств, а также не влияющее на производительность файловой системы.
... ... @@ -1343,7 +1343,7 @@
1343 1343  nano /etc/lsyncd.exclude
1344 1344  {{/code}}
1345 1345  
1346 -{{code}}
1328 +{{code language="java"}}
1347 1347  *.tmp
1348 1348  *.bak
1349 1349  testfile.txt
... ... @@ -1350,7 +1350,7 @@
1350 1350  test/
1351 1351  {{/code}}
1352 1352  
1353 -(% style="letter-spacing: 0.0px;" %)в данном примере мы игнорируем файлы, заканчиваются на //.bak// или //.tmp//,а также файл //testfile.txt// и содержимое каталога //test//.
1335 +в данном примере мы игнорируем файлы, заканчиваются на //.bak// или //.tmp//,а также файл //testfile.txt// и содержимое каталога //test//.
1354 1354  
1355 1355  \\
1356 1356  
... ... @@ -1371,7 +1371,6 @@
1371 1371   op monitor depth="0" timeout="20s" interval="60s"
1372 1372   --group master-group
1373 1373  {{/code}}
1374 -{{/expand}}
1375 1375  
1376 1376  ----
1377 1377  
... ... @@ -1383,7 +1383,7 @@
1383 1383  * Замена вышедшего из строя оборудования (не приведшего к сбою);
1384 1384  * Обновление оборудования;
1385 1385  * Обновление программных средств;
1386 -* (% style="letter-spacing: 0.0px;" %)Смена ролей Мастера и Реплики. Это нужно в случае, когда, серверы Мастера и Реплики отличаются по ресурсам. Например, у нас в составе отказоустойчивого кластера есть мощный сервер, выполняющий роль Мастера СУБД PostgreSQL, и слабый сервер, выполняющий роль Реплики. После сбоя более мощного сервера Мастера его функции переходят к более слабой Реплике. Логично, что после устранения причин сбоя на бывшем Мастере администратор вернёт роль Мастера обратно на мощный сервер.
1367 +* Смена ролей Мастера и Реплики. Это нужно в случае, когда, серверы Мастера и Реплики отличаются по ресурсам. Например, у нас в составе отказоустойчивого кластера есть мощный сервер, выполняющий роль Мастера СУБД PostgreSQL, и слабый сервер, выполняющий роль Реплики. После сбоя более мощного сервера Мастера его функции переходят к более слабой Реплике. Логично, что после устранения причин сбоя на бывшем Мастере администратор вернёт роль Мастера обратно на мощный сервер.
1387 1387  
1388 1388  {{info title="Важно!"}}
1389 1389  Прежде чем производить смену ролей или вывод Мастера из эксплуатации, необходимо с помощью команды //crm_mon -Afr// убедиться, что в кластере присутствует синхронная реплика. И роль Мастера назначается всегда синхронной реплике.
... ... @@ -1393,7 +1393,7 @@
1393 1393  
1394 1394  * Перевод узла //node1// в //standby//
1395 1395  
1396 -{{code}}
1377 +{{code language="java"}}
1397 1397  sudo pcs node standby node1
1398 1398  {{/code}}
1399 1399  
... ... @@ -1404,7 +1404,7 @@
1404 1404  * Запуск узла NODE1 , в //crm_mon -Afr// состояние узла STANDBY
1405 1405  * Очистка директории СУБД и файла блокировки
1406 1406  
1407 -{{code}}
1388 +{{code language="java"}}
1408 1408  sudo rm /var/lib/pgsql/tmp/PGSQL.lock
1409 1409  sudo su - postgres
1410 1410  rm -rf /var/lib/postgresql/12/main/*
... ... @@ -1414,7 +1414,7 @@
1414 1414  
1415 1415  * Передача текущей копии БД с действующего узла в роли //Master//
1416 1416  
1417 -{{code}}
1398 +{{code language="java"}}
1418 1418  pg_basebackup -U postgres -D /var/lib/postgresql/12/main -h 10.1.30.252 -X stream -P
1419 1419  exit
1420 1420  {{/code}}
... ... @@ -1423,7 +1423,7 @@
1423 1423  
1424 1424  * Сброс ошибок ресурсов
1425 1425  
1426 -{{code}}
1407 +{{code language="java"}}
1427 1427  sudo pcs resource cleanup
1428 1428  {{/code}}
1429 1429  
... ... @@ -1431,7 +1431,7 @@
1431 1431  
1432 1432  * Выход узла NODE1 из standby, в //crm_mon -Afr// состояние узла //Slave//, изменение состояния реплики (параметр HA-pgsql-data-status в значении STREAMING|SYNC)
1433 1433  
1434 -{{code}}
1415 +{{code language="java"}}
1435 1435  sudo pcs node unstandby node1
1436 1436  {{/code}}
1437 1437  
... ... @@ -1439,7 +1439,7 @@
1439 1439  
1440 1440  * Перевод узла NODE2 в //standby//
1441 1441  
1442 -{{code}}
1423 +{{code language="java"}}
1443 1443  sudo pcs node standby node2
1444 1444  {{/code}}
1445 1445  
... ... @@ -1449,12 +1449,9 @@
1449 1449  
1450 1450  * Выход узла //node2// из //standby//, в //crm_mon -Afr// состояние узла //Slave//, изменение состояния реплики (параметр HA-pgsql-data-status в значении STREAMING|SYNC)
1451 1451  
1452 -{{code}}
1433 +{{code language="java"}}
1453 1453  sudo pcs node unstandby node2
1454 1454  {{/code}}
1455 1455  
1456 1456  
1457 1457  \\
1458 -{{/layout-cell}}
1459 -{{/layout-section}}
1460 -{{/layout}}

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