Changes for page Отказоустойчивый кластер Платформы НЕЙРОСС
Last modified by superadmin on 2026/06/24 21:40
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.a dmin1 +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}}