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,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}}