Ceph-ansible. Быстро и без ошибок, установка Ceph кластер с помощью Ansible

Ранее мы сравнивали «NFS и CEPH», в той заметке мы говорили об узких местах технологии NFS и как можно их решить путем использования в инфраструктуре распределенного файлового хранилища от компании Red Hat — Ceph.

Сегодня предлагаем рассмотреть вариант как быстро и с наименьшим кол-вом ошибок развернуть кластер CEPH используя систему управления конфигурациями — Ansible.

Почему стоит использовать данный вариант установки и кому он может не подойти. Касательно второго вопроса, данный вариант установки подходит специалистам, которые имеют достаточный опыт работы с Ansible и Ceph, понимают терминологии обоих систем, смогут выполнить дебаг ошибок в случаи наличие их при использовании Ansible ролей. Почему стоит использовать данное решение, т.к. оба продукта принадлежат компании Red Hat и продукт ceph-ansible является официальным продуктом данной компании, при установке используются лучший практики лучшие практики (best practice), что в свою очередь минимизирует кол-во ошибок при достижении конечного результата.

Прежде чем приступить к практической части, как использовать решение ceph-ansible, предлагаем рассмотреть вариант где в целом мы можем использовать Ceph.

Современные архитектуры, построенные на базе железа (bare metal), а также частично использующие облачные решения (AWS, Google Cloud), которые использую в своей архитектуре Docker и такие оркестраторы как Docker swarm, Kubernetes, Rancher — часто сталкиваются с проблемой: где хранить данные приложения, которые должны быть доступны из любой точки инфраструктуры независимо от расположения Docker контейнера с приложением. Данную проблему и помогает решить Ceph, c учетом того, что система распределенного хранения, с высокой доступностью, а также масштабируемостью. К примеру в архитектурах на базе Kubernetes Ceph имеет провиженер (provisioner) для k8s PersistentVolume — CephFS и k8s PersistentVolumeClaims — RBD (Ceph Block Device). Также Ceph часто используется в решениях обработки и хранения BigData из-за прекрасного свойства — горизонтальной масштабируемости.

Однако не стоит забывать, что все архитектуры с использование Ceph предпологает высокую избыточность использования серверов и/или виртуальных машин. К сожалению Ceph не предлагает дешевых и простых решений, т.к. он сразу становится уязвимым и хранения данных в такой архитектуре будет не гарантированным.

Рассмотрим как развернуть Ceph с помощью ceph-ansible для будующего использования в Kubernetes в качестве блочных устройств (PersistentVolumeClaims — RBD).

Для нашего тестового стенда будем использовать:

1x виртуальный сервер с ansible
IP — 192.168.1.2 — для внешнего трафика
IP — 10.0.1.4 — для внутреннего трафика

3x сервера для ceph + на каждом из серверов по 3 свободных HDD для OSD
IP — 192.168.2.1 192.168.2.2 192.168.2.3 — для внешнего трафика
IP — 10.0.1.1 10.0.1.2 10.0.1.3 — для внутреннего трафика

Также мы установим Grafana и Dashboard для наглядной визуализации работы с Ceph.
Для наших 4-х серверов настроена внутрення сеть 10.0.1.0/24, которую мы будем использовать для внутреннего трафика Ceph

Подготовка сервера с ansible.

Необходимо сгенерировать ssh ключи и разложить их на все сервера.

Скачать репозиторий:

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

Бранчи stable- * были проверены QE и к ним редко выходят исправления во время их жизненного цикла:

Мы будем использовать в примере версию nautilus

Установим все необходимые зависимости

Переименовываем примеры конфиг файлов:

Создаем inventory файл с описанием всех наших серверов

Приводим основной файл site.yml к следующему виду:

Редактируем файл group_vars/all.yml в нем мы задаем такие важные параметры как версия будущего кластера, указываем внутреннюю подсеть, интерфейсы, размер журнала и многое другое. Для нашего примера конфигурация переменных будет следующая:

Далее редактируем файл переменных отвечающих за настройку OSD group_vars/osds.yml

Можно выполнить полностью автоматическую настройку поиска и установки OSD на сервере указав переменную:

Однако мы указываем в явном виде диски наших серверов:

Подготовка завершена, теперь необходимо проиграть ansible

Примерное время разворачивания 10 минут, результат успешного выполнения в консоли будет следующий вывод:

У нас установились успешно следующие компоненты:

Для доступа в dashboard используем ссылку:

Мы успешно произвели базовую настройку распределенной системы хранения данных Ceph, для будущих задач расширения кластера достаточно добавить новый сервер в инвентаризацию


**********************************************************************
ошибка — insecure global_id reclaim

Available Fixes:

  • Ceph Octopus: 15.2.11
  • Ceph Nautlis: 14.2.20

 

3 thoughts on “Ceph-ansible. Быстро и без ошибок, установка Ceph кластер с помощью Ansible

  1. Спасибо за статью! Пытаюсь воспроизвести с максимально похожими настройками и каждый раз все отваливается на TASK [ceph-mgr : add modules to ceph-mgr]Ж
    Error ENOENT: module »dashboard» reports that it cannot run on the active manager daemon: cannot import name UnrewindableBodyError (pass —force to force enablement)’

    Может быть знаете как это обойти?

    1. К сожалению с такой ошибкой не сталкивался. По ошибке, вроде как ему имя не нравится, может что-то специфическое указали в качестве имени в ceph-mgr?

      1. на гите майнтенейр ответил. Это проблема urlib и requests. Они уже стояли на нодах через пип, а цеф хочет их через рпм. Спасибо за быстрый ответ!

Добавить комментарий

Ваш адрес email не будет опубликован.