Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Настройте профиль CLI
  • Подготовьте среду для развертывания ресурсов
  • Разверните ресурсы
  • Установите и настройте GlusterFS
  • Протестируйте доступность и отказоустойчивость решения
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме

Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 4 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Настройте профиль CLI
  • Подготовьте среду для развертывания ресурсов
  • Разверните ресурсы
  • Установите и настройте GlusterFS
  • Протестируйте доступность и отказоустойчивость решения
  • Как удалить созданные ресурсы

GlusterFS — это распределенная, параллельная, линейно масштабируемая файловая система. При использовании горизонтального масштабирования она обеспечивает в облаке агрегированную пропускную способность в десятки ГБ/с и в сотни тысяч IOPS.

При помощи этого руководства вы сможете создать инфраструктуру из трех сегментов, имеющих общую файловую систему GlusterFS. Размещение дисков для хранения данных в трех разных зонах доступности обеспечит высокую доступность и отказоустойчивость файловой системы.

Чтобы настроить высокодоступную файловую систему:

  1. Подготовьте облако к работе.
  2. Настройте профиль CLI.
  3. Подготовьте среду для развертывания ресурсов.
  4. Разверните ресурсы.
  5. Установите и настройте GlusterFS.
  6. Протестируйте доступность и отказоустойчивость решения.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • плата за постоянно работающие ВМ и диски (см. тарифы Yandex Compute Cloud);
  • плата за использование публичных IP-адресов и исходящий трафик (см. тарифы Yandex Virtual Private Cloud);

Настройте профиль CLIНастройте профиль CLI

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud, установите его и авторизуйтесь от имени пользователя.

  2. Создайте сервисный аккаунт:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
    2. В списке сервисов выберите Identity and Access Management.
    3. Нажмите кнопку Создать сервисный аккаунт.
    4. Введите имя сервисного аккаунта, например, sa-glusterfs.
    5. Нажмите кнопку Создать.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    Выполните команду для создания сервисного аккаунта, указав имя sa-glusterfs:

    yc iam service-account create --name sa-glusterfs
    

    Где name — имя сервисного аккаунта.

    Результат:

    id: ajehr0to1g8b********
    folder_id: b1gv87ssvu49********
    created_at: "2023-06-20T09:03:11.665153755Z"
    name: sa-glusterfs
    

    Чтобы создать сервисный аккаунт, воспользуйтесь вызовом gRPC API ServiceAccountService/Create или методом create для ресурса ServiceAccount REST API.

  3. Назначьте сервисному аккаунту роль администратора на каталог:

    Консоль управления
    CLI
    API
    1. На стартовой странице консоли управления выберите каталог.
    2. Перейдите на вкладку Права доступа.
    3. Найдите аккаунт sa-glusterfs в списке и нажмите значок .
    4. Нажмите кнопку Изменить роли.
    5. В открывшемся диалоге нажмите кнопку Добавить роль и выберите роль admin.

    Выполните команду:

    yc resource-manager folder add-access-binding <идентификатор_каталога> \
       --role admin \
       --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

    Чтобы назначить сервисному аккаунту роль на каталог, воспользуйтесь методом REST API setAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/SetAccessBindings.

  4. Настройте профиль CLI для выполнения операций от имени сервисного аккаунта:

    CLI
    1. Создайте авторизованный ключ для сервисного аккаунта и запишите его в файл:

      yc iam key create \
      --service-account-id <идентификатор_сервисного_аккаунта> \
      --folder-id <id_каталога_с_сервисным_аккаунтом> \
      --output key.json
      

      Где:

      • service-account-id — идентификатор сервисного аккаунта.
      • folder-id — идентификатор каталога, в котором создан сервисный аккаунт.
      • output — имя файла с авторизованным ключом.

      Результат:

      id: aje8nn871qo4********
      service_account_id: ajehr0to1g8b********
      created_at: "2023-06-20T09:16:43.479156798Z"
      key_algorithm: RSA_2048
      
    2. Создайте профиль CLI для выполнения операций от имени сервисного аккаунта:

      yc config profile create sa-glusterfs
      

      Результат:

      Profile 'sa-glusterfs' created and activated
      
    3. Задайте конфигурацию профиля:

      yc config set service-account-key key.json
      yc config set cloud-id <идентификатор_облака>
      yc config set folder-id <идентификатор_каталога>
      

      Где:

      • service-account-key — файл с авторизованным ключом сервисного аккаунта.
      • cloud-id — идентификатор облака.
      • folder-id — идентификатор каталога.
    4. Добавьте аутентификационные данные в переменные окружения:

      export YC_TOKEN=$(yc iam create-token)
      export YC_CLOUD_ID=$(yc config get cloud-id)
      export YC_FOLDER_ID=$(yc config get folder-id)
      

Подготовьте среду для развертывания ресурсовПодготовьте среду для развертывания ресурсов

  1. Создайте пару ключей SSH:

    ssh-keygen -t ed25519
    

    Рекомендуем оставить имя файла ключа без изменения.

  2. Установите Terraform.

  3. Клонируйте репозиторий yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs из GitHub и перейдите в папку yc-distributed-ha-storage-with-glusterfs:

    git clone https://github.com/yandex-cloud-examples/yc-distributed-ha-storage-with-glusterfs.git
    cd ./yc-distributed-ha-storage-with-glusterfs
    
  4. Отредактируйте файл variables.tf, указав параметры разворачиваемых ресурсов:

    Важно

    Заданные в файле значения приводят к разворачиванию ресурсоемкой инфраструктуры.
    Чтобы развернуть ресурсы в рамках имеющихся у вас квот, используйте приведенные ниже значения или измените значения на свое усмотрение.

    1. В секции disk_size значение default измените на 30.
    2. В секции client_cpu_count значение default измените на 2.
    3. В секции storage_cpu_count значение default измените на 2.
    4. Если при создании пары ключей SSH вы указали имя, отличное от имени по умолчанию, в секции local_pubkey_path значение default измените на <путь_к_публичному_ключу_SSH>.

Разверните ресурсыРазверните ресурсы

  1. Выполните инициализацию Terraform:
    terraform init
    
  2. Проверьте конфигурацию Terraform файлов:
    terraform validate
    
  3. Проверьте список создаваемых облачных ресурсов:
    terraform plan
    
  4. Создайте ресурсы:
    terraform apply -auto-approve
    
  5. Дождитесь появления сообщения о завершении процесса:
    Outputs:
    
    connect_line = "ssh storage@158.160.108.137"
    public_ip = "158.160.108.137"
    

В результате в каталоге будут созданы три ВМ для размещения клиентского кода (client01, client02 и client03) и три привязанные к ним ВМ для распределенного хранения данных (gluster01, gluster02 и gluster03) в трех разных зонах доступности.

Установите и настройте GlusterFSУстановите и настройте GlusterFS

  1. Подключитесь к ВМ client01, используя команду из выдачи о завершении процесса:

    ssh storage@158.160.108.137
    
  2. Перейдите в режим работы с правами суперпользователя root:

    sudo -i
    
  3. Установите ClusterShell:

    dnf install epel-release -y
    dnf install clustershell -y
    echo 'ssh_options: -oStrictHostKeyChecking=no' >> /etc/clustershell/clush.conf
    
  4. Создайте конфигурационные файлы:

    cat > /etc/clustershell/groups.conf <<EOF
    [Main]
    default: cluster
    confdir: /etc/clustershell/groups.conf.d $CFGDIR/groups.conf.d
    autodir: /etc/clustershell/groups.d $CFGDIR/groups.d
    EOF
    
    cat > /etc/clustershell/groups.d/cluster.yaml <<EOF
    cluster:
        all: '@clients,@gluster'
        clients: 'client[01-03]'
        gluster: 'gluster[01-03]'
    EOF 
    
  5. Установите GlusterFS:

    clush -w @all hostname # check and auto add fingerprints
    clush -w @all dnf install centos-release-gluster -y
    clush -w @all dnf --enablerepo=powertools install glusterfs-server -y
    clush -w @gluster mkfs.xfs -f -i size=512 /dev/vdb
    clush -w @gluster mkdir -p /bricks/brick1
    clush -w @gluster "echo '/dev/vdb /bricks/brick1 xfs defaults 1 2' >> /etc/fstab"
    clush -w @gluster "mount -a && mount"
    
  6. Перезапустите GlusterFS:

    clush -w @gluster systemctl enable glusterd
    clush -w @gluster systemctl restart glusterd
    
  7. Проверьте доступность ВМ gluster02 и gluster03:

    clush -w gluster01 gluster peer probe gluster02
    clush -w gluster01 gluster peer probe gluster03
    
  8. Создайте папки vol0 в ВМ для хранения данных и настройте доступность и отказоустойчивость за счет подключения к папке общего доступа regional-volume:

    clush -w @gluster mkdir -p /bricks/brick1/vol0
    clush -w gluster01 gluster volume create regional-volume disperse 3 redundancy 1 gluster01:/bricks/brick1/vol0 gluster02:/bricks/brick1/vol0 gluster03:/bricks/brick1/vol0
    
  9. Выполните дополнительные настройки производительности:

    clush -w gluster01 gluster volume set regional-volume client.event-threads 8
    clush -w gluster01 gluster volume set regional-volume server.event-threads 8
    clush -w gluster01 gluster volume set regional-volume cluster.shd-max-threads 8
    clush -w gluster01 gluster volume set regional-volume performance.read-ahead-page-count 16
    clush -w gluster01 gluster volume set regional-volume performance.client-io-threads on
    clush -w gluster01 gluster volume set regional-volume performance.quick-read off 
    clush -w gluster01 gluster volume set regional-volume performance.parallel-readdir on 
    clush -w gluster01 gluster volume set regional-volume performance.io-thread-count 32
    clush -w gluster01 gluster volume set regional-volume performance.cache-size 1GB
    clush -w gluster01 gluster volume set regional-volume server.allow-insecure on
    
  10. Смонтируйте папку общего доступа regional-volume на клиентских ВМ:

    clush -w gluster01 gluster volume start regional-volume
    clush -w @clients mount -t glusterfs gluster01:/regional-volume /mnt/
    

Протестируйте доступность и отказоустойчивость решенияПротестируйте доступность и отказоустойчивость решения

  1. Проверьте статус папки общего доступа regional-volume:

    clush -w gluster01 gluster volume status
    

    Результат:

    gluster01: Status of volume: regional-volume
    gluster01: Gluster process                             TCP Port  RDMA Port  Online  Pid
    gluster01: ------------------------------------------------------------------------------
    gluster01: Brick gluster01:/bricks/brick1/vol0         54660     0          Y       1374
    gluster01: Brick gluster02:/bricks/brick1/vol0         58127     0          Y       7716
    gluster01: Brick gluster03:/bricks/brick1/vol0         53346     0          Y       7733
    gluster01: Self-heal Daemon on localhost               N/A       N/A        Y       1396
    gluster01: Self-heal Daemon on gluster02               N/A       N/A        Y       7738
    gluster01: Self-heal Daemon on gluster03               N/A       N/A        Y       7755
    gluster01:
    gluster01: Task Status of Volume regional-volume
    gluster01: ------------------------------------------------------------------------------
    gluster01: There are no active volume tasks
    gluster01:
    
  2. Создайте текстовый файл:

    cat > /mnt/test.txt <<EOF
    Hello, GlusterFS!
    EOF
    
  3. Убедитесь, что файл доступен на всех трех клиентских ВМ:

    clush -w @clients sha256sum /mnt/test.txt
    

    Результат:

    client01: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    client02: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    client03: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    
  4. Отключите одну из ВМ для хранения данных, например, gluster02:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, которому принадлежит ВМ.
    2. Выберите сервис Compute Cloud.
    3. Выберите ВМ gluster02 в списке, нажмите значок и выберите Остановить.
    4. В открывшемся окне нажмите кнопку Остановить.
    1. Посмотрите описание команды CLI для остановки ВМ:

      yc compute instance stop --help
      
    2. Остановите ВМ:

      yc compute instance stop gluster02
      

    Воспользуйтесь методом REST API stop для ресурса Instance или вызовом gRPC API InstanceService/Stop.

  5. Убедитесь, что ВМ отключена:

    clush -w gluster01  gluster volume status
    

    Результат:

    gluster01: Status of volume: regional-volume
    gluster01: Gluster process                             TCP Port  RDMA Port  Online  Pid
    gluster01: ------------------------------------------------------------------------------
    gluster01: Brick gluster01:/bricks/brick1/vol0         54660     0          Y       1374
    gluster01: Brick gluster03:/bricks/brick1/vol0         53346     0          Y       7733
    gluster01: Self-heal Daemon on localhost               N/A       N/A        Y       1396
    gluster01: Self-heal Daemon on gluster03               N/A       N/A        Y       7755
    gluster01:
    gluster01: Task Status of Volume regional-volume
    gluster01: ------------------------------------------------------------------------------
    gluster01: There are no active volume tasks
    gluster01:
    
  6. Убедитесь, что файл по-прежнему доступен на всех трех клиентских ВМ:

    clush -w @clients sha256sum /mnt/test.txt
    

    Результат:

    client01: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    client02: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    client03: 5fd9c031531c39f2568a8af5512803fad053baf3fe9eef2a03ed2a6f0a884c85  /mnt/test.txt
    

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы, удалите их:

terraform destroy -auto-approve

Была ли статья полезна?

Предыдущая
Настройка SFTP-сервера на Centos 7
Следующая
Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
Проект Яндекса
© 2025 ООО «Яндекс.Облако»