Changes for page Отказоустойчивый кластер Платформы НЕЙРОСС
Last modified by superadmin on 2026/06/24 21:40
From version 1.1
edited by pugachevskaya_elena
on 2025/10/02 15:46
on 2025/10/02 15:46
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. pugachevskaya_elena1 +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_resource673 +утилита crm_resource 683 683 )))|=((( 684 - (% style="color: rgb(51,51,51);" %)утилита crm675 +утилита 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}}