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

From version 5.1
edited by admin
on 2026/06/07 17:48
Change comment: Clean Confluence migrated style 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,17 +670,17 @@
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  |(((
681 681  (% class="content-wrapper" %)
682 682  (((
683 -{{code language="java"}}
692 +{{code}}
684 684  sudo crm_resource --list-standards
685 685  {{/code}}
686 686  )))
... ... @@ -687,13 +687,13 @@
687 687  )))|(((
688 688  (% class="content-wrapper" %)
689 689  (((
690 -{{code language="java"}}
699 +{{code}}
691 691  sudo crm ra classes
692 692  {{/code}}
693 693  )))
694 694  )))
695 695  |(% colspan="2" %)(((
696 -Вывод поддерживаемых агентов ресурсов кластера для определенного стандарта
705 +(% style="color: rgb(51,51,51);" %)Вывод поддерживаемых агентов ресурсов кластера для определенного стандарта
697 697  )))
698 698  |(((
699 699  (% class="content-wrapper" %)
... ... @@ -701,7 +701,7 @@
701 701  (% style="text-align: left;" %)
702 702  доступные systemd агенты
703 703  
704 -{{code language="java"}}
713 +{{code}}
705 705  sudo crm_resource --list-agents systemd
706 706  {{/code}}
707 707  
... ... @@ -708,7 +708,7 @@
708 708  (% style="text-align: left;" %)
709 709  доступные lsb агенты
710 710  
711 -{{code language="java"}}
720 +{{code}}
712 712  sudo crm_resource --list-agents lsb
713 713  {{/code}}
714 714  )))
... ... @@ -715,11 +715,11 @@
715 715  )))|(((
716 716  (% class="content-wrapper" %)
717 717  (((
718 -{{code language="java"}}
727 +{{code}}
719 719  sudo crm ra list systemd
720 720  {{/code}}
721 721  
722 -{{code language="java"}}
731 +{{code}}
723 723  sudo crm ra list lsb
724 724  {{/code}}
725 725  )))
... ... @@ -730,7 +730,7 @@
730 730  (% style="text-align: left;" %)
731 731  доступные OCF провайдеры
732 732  
733 -{{code language="java"}}
742 +{{code}}
734 734  sudo crm_resource --list-ocf-providers
735 735  {{/code}}
736 736  )))
... ... @@ -743,7 +743,7 @@
743 743  (% style="text-align: left;" %)
744 744  доступные OCF агенты из проекта linux-ha провайдер heartbeat
745 745  
746 -{{code language="java"}}
755 +{{code}}
747 747  sudo crm_resource --list-agents ocf:heartbeat
748 748  {{/code}}
749 749  )))
... ... @@ -756,7 +756,7 @@
756 756  (% style="text-align: left;" %)
757 757  доступный OCF провайдер для агента pgsql
758 758  
759 -{{code language="java"}}
768 +{{code}}
760 760  sudo crm_resource --list-ocf-alternatives pgsql
761 761  {{/code}}
762 762  )))
... ... @@ -769,7 +769,7 @@
769 769  (% style="text-align: left;" %)
770 770  метаданные для класс:провайдер:агент
771 771  
772 -{{code language="java"}}
781 +{{code}}
773 773  sudo crm_resource --show-metadata ocf:heartbeat:pgsql
774 774  {{/code}}
775 775  )))
... ... @@ -779,13 +779,13 @@
779 779  
780 780  Логи работы компонентов кластера
781 781  
782 -{{code language="java"}}
791 +{{code}}
783 783  sudo tail /var/log/pcsd/pcsd.log
784 784  sudo tail /var/log/corosync/corosync.log
785 785  sudo cat /var/log/pacemaker/pacemaker.log
786 786  {{/code}}
787 787  
788 -запуск с ключом **-f** позволит следить за ними в реальном времени.
797 +(% style="letter-spacing: 0.0px;" %)запуск с ключом **-f** позволит следить за ними в реальном времени.
789 789  
790 790  ----
791 791  
... ... @@ -801,7 +801,7 @@
801 801  sudo pcs stonith list
802 802  {{/code}}
803 803  
804 -(% style="font-weight: 400;" %)Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//:
813 +(% style="font-size: 14.0px;font-weight: 400;letter-spacing: 0.0px;" %)Для тестовых целей можно использовать следующую конфигурацию с агентом //external/ssh//:
805 805  
806 806  {{code language="bash"}}
807 807  sudo crm
... ... @@ -813,7 +813,7 @@
813 813   exit
814 814  {{/code}}
815 815  
816 -=== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Пример1.Использованиедвухмеханизмовфенсингаузловнапримерефенсингавиртуальныхмашинах"/}}Пример 1. Использование двух механизмов фенсинга узлов на примере фенсинга виртуальных машинах(%%) ===
825 +=== {{id name="ОтказоустойчивыйкластерПлатформыНЕЙРОСС-Пример1.Использованиедвухмеханизмовфенсингаузловнапримерефенсингавиртуальныхмашинах"/}}(% style="color: rgb(94,108,132);letter-spacing: 0.0px;" %)Пример 1. Использование двух механизмов фенсинга узлов на примере фенсинга виртуальных машинах(%%) ===
817 817  
818 818  При использовании виртуальных машин в качестве узлов кластера можно использовать агент //external/libvirt//. Далее рассмотрим настройку конфигурации, в которой сервер с гипервизором имеет адрес 10.1.30.249, а узлы, как описано выше. В примере будут использоваться два фенсинг механизма – //ssh// и //libvirt//.
819 819  Чтобы вывести необходимые настройки для выбранного агента выполните команду:
... ... @@ -906,7 +906,7 @@
906 906  означает: для фенсинга узла //node2// сначала использовать ресурс //fence-node2-ssh//, если это не удается, то использовать ресурс //fence-node2-libvirt//.
907 907  {{/info}}
908 908  
909 -Перезагружаем все виртуальные машины в кластере.
918 +(% style="letter-spacing: 0.0px;" %)Перезагружаем все виртуальные машины в кластере.
910 910  
911 911  \\
912 912  
... ... @@ -914,7 +914,7 @@
914 914  
915 915  Реальная конфигурация не сильно отличается от тестовой, хотя для некоторых фенсинг устройств может потребоваться больше атрибутов. Например, устройство отключения IBM RSA (например, с адресами 10.1.31.101 и 10.1.31.102) может быть настроено следующим образом:
916 916  
917 -{{code language="java"}}
926 +{{code}}
918 918  sudo crm
919 919  configure
920 920   primitive st-ibmrsa-1 stonith:external/ibmrsa-telnet \
... ... @@ -1178,6 +1178,7 @@
1178 1178  
1179 1179  \\
1180 1180  
1190 +{{expand title="... возможное развитие ..."}}
1181 1181  Автоматическую синхронизацию можно выполнять посредством утилиты //lsyncd//. Данная программа позволяет средствами //rsync// делать резервное копирование сразу же по появлению нового файла в указанной директории. По-сути, выполняется односторонняя синхронизация в реальном времени с помощью Lsyncd.
1182 1182  
1183 1183  //Lsyncd// просматривает дерево локальных директорий с помощью интерфейса модуля мониторинга //inotify//. Он агрегирует и комбинирует события за несколько секунд и затем запускает процесс (или несколько процессов) синхронизации изменений. По умолчанию для этих целей используется //rsync//. Таким образом, //lsyncd// представляет собой легковесное решение для зеркалирования данных, сравнительно легкое в установке, не требующее специфичных файловых систем или блочных устройств, а также не влияющее на производительность файловой системы.
... ... @@ -1333,7 +1333,7 @@
1333 1333  nano /etc/lsyncd.exclude
1334 1334  {{/code}}
1335 1335  
1336 -{{code language="java"}}
1346 +{{code}}
1337 1337  *.tmp
1338 1338  *.bak
1339 1339  testfile.txt
... ... @@ -1340,7 +1340,7 @@
1340 1340  test/
1341 1341  {{/code}}
1342 1342  
1343 -в данном примере мы игнорируем файлы, заканчиваются на //.bak// или //.tmp//,а также файл //testfile.txt// и содержимое каталога //test//.
1353 +(% style="letter-spacing: 0.0px;" %)в данном примере мы игнорируем файлы, заканчиваются на //.bak// или //.tmp//,а также файл //testfile.txt// и содержимое каталога //test//.
1344 1344  
1345 1345  \\
1346 1346  
... ... @@ -1361,6 +1361,7 @@
1361 1361   op monitor depth="0" timeout="20s" interval="60s"
1362 1362   --group master-group
1363 1363  {{/code}}
1374 +{{/expand}}
1364 1364  
1365 1365  ----
1366 1366  
... ... @@ -1372,7 +1372,7 @@
1372 1372  * Замена вышедшего из строя оборудования (не приведшего к сбою);
1373 1373  * Обновление оборудования;
1374 1374  * Обновление программных средств;
1375 -* Смена ролей Мастера и Реплики. Это нужно в случае, когда, серверы Мастера и Реплики отличаются по ресурсам. Например, у нас в составе отказоустойчивого кластера есть мощный сервер, выполняющий роль Мастера СУБД PostgreSQL, и слабый сервер, выполняющий роль Реплики. После сбоя более мощного сервера Мастера его функции переходят к более слабой Реплике. Логично, что после устранения причин сбоя на бывшем Мастере администратор вернёт роль Мастера обратно на мощный сервер.
1386 +* (% style="letter-spacing: 0.0px;" %)Смена ролей Мастера и Реплики. Это нужно в случае, когда, серверы Мастера и Реплики отличаются по ресурсам. Например, у нас в составе отказоустойчивого кластера есть мощный сервер, выполняющий роль Мастера СУБД PostgreSQL, и слабый сервер, выполняющий роль Реплики. После сбоя более мощного сервера Мастера его функции переходят к более слабой Реплике. Логично, что после устранения причин сбоя на бывшем Мастере администратор вернёт роль Мастера обратно на мощный сервер.
1376 1376  
1377 1377  {{info title="Важно!"}}
1378 1378  Прежде чем производить смену ролей или вывод Мастера из эксплуатации, необходимо с помощью команды //crm_mon -Afr// убедиться, что в кластере присутствует синхронная реплика. И роль Мастера назначается всегда синхронной реплике.
... ... @@ -1382,7 +1382,7 @@
1382 1382  
1383 1383  * Перевод узла //node1// в //standby//
1384 1384  
1385 -{{code language="java"}}
1396 +{{code}}
1386 1386  sudo pcs node standby node1
1387 1387  {{/code}}
1388 1388  
... ... @@ -1393,7 +1393,7 @@
1393 1393  * Запуск узла NODE1 , в //crm_mon -Afr// состояние узла STANDBY
1394 1394  * Очистка директории СУБД и файла блокировки
1395 1395  
1396 -{{code language="java"}}
1407 +{{code}}
1397 1397  sudo rm /var/lib/pgsql/tmp/PGSQL.lock
1398 1398  sudo su - postgres
1399 1399  rm -rf /var/lib/postgresql/12/main/*
... ... @@ -1403,7 +1403,7 @@
1403 1403  
1404 1404  * Передача текущей копии БД с действующего узла в роли //Master//
1405 1405  
1406 -{{code language="java"}}
1417 +{{code}}
1407 1407  pg_basebackup -U postgres -D /var/lib/postgresql/12/main -h 10.1.30.252 -X stream -P
1408 1408  exit
1409 1409  {{/code}}
... ... @@ -1412,7 +1412,7 @@
1412 1412  
1413 1413  * Сброс ошибок ресурсов
1414 1414  
1415 -{{code language="java"}}
1426 +{{code}}
1416 1416  sudo pcs resource cleanup
1417 1417  {{/code}}
1418 1418  
... ... @@ -1420,7 +1420,7 @@
1420 1420  
1421 1421  * Выход узла NODE1 из standby, в //crm_mon -Afr// состояние узла //Slave//, изменение состояния реплики (параметр HA-pgsql-data-status в значении STREAMING|SYNC)
1422 1422  
1423 -{{code language="java"}}
1434 +{{code}}
1424 1424  sudo pcs node unstandby node1
1425 1425  {{/code}}
1426 1426  
... ... @@ -1428,7 +1428,7 @@
1428 1428  
1429 1429  * Перевод узла NODE2 в //standby//
1430 1430  
1431 -{{code language="java"}}
1442 +{{code}}
1432 1432  sudo pcs node standby node2
1433 1433  {{/code}}
1434 1434  
... ... @@ -1438,9 +1438,12 @@
1438 1438  
1439 1439  * Выход узла //node2// из //standby//, в //crm_mon -Afr// состояние узла //Slave//, изменение состояния реплики (параметр HA-pgsql-data-status в значении STREAMING|SYNC)
1440 1440  
1441 -{{code language="java"}}
1452 +{{code}}
1442 1442  sudo pcs node unstandby node2
1443 1443  {{/code}}
1444 1444  
1445 1445  
1446 1446  \\
1458 +{{/layout-cell}}
1459 +{{/layout-section}}
1460 +{{/layout}}

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