Для обозначения серверов Ceph в статье используются термины "узлы" и "кластер". Эти термины не относятся к узлам и кластерам VMmanager.

Перед подключением хранилища Ceph к кластеру VMmanager необходимо провести предварительную настройку узлов кластера Ceph. В этой статье приведена общая информация об установке. Рекомендуется создавать кластер Ceph в соответствии с официальной документацией.

Перед созданием кластера убедитесь, что используемое оборудование соответствует системным требованиям. Рекомендуется использовать программное обеспечение Ceph версии не ниже 13.2.0.

Требования к узлам кластера


В составе кластера должны быть следующие физические или виртуальные серверы:

  • сервер с данными (OSD);
  • не менее трёх серверов-мониторов (MON);
  • административный сервер (ADM);
  • сервис мониторинга (MGR);
  • сервер метаданных (MDS). Необходим, если вы используете файловую систему CephFS.

Серверы должны отвечать следующим требованиям:

  1. В качестве узла кластера не может использоваться сервер с платформой VMmanager.
  2. Не рекомендуется использовать узлы кластера VMmanager. Это приводит к высокой нагрузке на сервер и усложняет процесс его восстановления в случае выхода из строя.
  3. Рекомендуется использование серверов, находящихся в одной стойке и в одном сегменте сети.
  4. Рекомендуется использовать высокоскоростное сетевое подключение между узлами кластера.
  5. На всех серверах должна быть установлена одна операционная система.
  6. На серверах-мониторах должен быть открыт доступ к порту 6789/TCP, на серверах с данными — к диапазону портов 6800..7300/TCP.
  7. На всех узлах кластера должен быть непримонтированный раздел или диск для установки программного обеспечения (ПО) Ceph.

Пример подготовки узлов кластера


В примере рассматривается создание кластера с использованием серверов:

  1. ceph-cluster-1 с IP-адресом 172.31.245.51. Назначение — MON, OSD, ADM, MGR.
  2. ceph-cluster-2 с IP-адресом 172.31.246.77. Назначение — MON, OSD.
  3. ceph-cluster-3 с IP-адресом 172.31.246.82. Назначение — MON, OSD.

Если при выполнении команды ceph-deploy появляется ошибка "RuntimeError: NoSectionError: No section: 'ceph'", выполните команду повторно.

На всех серверах

  1. Установите ПО Ceph. Для этого:
    1. Выполните команду: 

      yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      CODE
    2. Создайте файл /etc/yum.repos.d/ceph.repo и добавьте в него строки:

      [ceph-noarch]
      name=Ceph noarch packages
      baseurl=https://download.ceph.com/rpm-nautilus/el7/noarch
      enabled=1
      gpgcheck=1
      type=rpm-md
      gpgkey=https://download.ceph.com/keys/release.asc
      CODE
    3. Выполните команду:

      yum update
      CODE
  2. Установите ПО для работы NTP. Это предотвратит проблемы, возникающие из-за сдвига системного времени:

    yum install ntp ntpdate ntp-doc
    CODE
  3. Создайте пользователя ceph и установите для него необходимые права:

    useradd -d /home/ceph -m ceph
    passwd ceph
    echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
    chmod 0440 /etc/sudoers.d/ceph
    CODE
  4. Создайте алиасы для узлов кластера в файле /etc/hosts:

    172.31.245.51 ceph1.example.com ceph1
    172.31.246.77 ceph2.example.com ceph2
    172.31.246.82 ceph3.example.com ceph3
    CODE
  5. Добавьте службы Ceph в настройки firewalld:

    firewall-cmd --zone=public --add-service=ceph-mon --permanent
    firewall-cmd --zone=public --add-service=ceph --permanent
    firewall-cmd --reload
    CODE

На административном сервере

  1. Установите пакеты ceph-deploy и python-setuptools:

    yum install ceph-deploy python-setuptools
    CODE
  2. Создайте ключи ssh и скопируйте их на все узлы кластера:

    ssh-keygen
    ssh-copy-id ceph@ceph1
    ssh-copy-id ceph@ceph2
    ssh-copy-id ceph@ceph3
    CODE
  3. Добавьте в файл ~/.ssh/config строки:

    Host ceph1
    Hostname ceph1
    User ceph
    Host ceph2
    Hostname ceph2
    User ceph
    Host ceph3
    Hostname ceph3
    User ceph
    CODE
  4. Создайте директорию my-cluster для конфигурационных файлов и файлов ceph-deploy и перейдите в неё:

    mkdir my-cluster
    cd my-cluster
    CODE
  5. Создайте конфигурационный файл кластера: 

    ceph-deploy new ceph1 ceph2 ceph3
    CODE

    ceph1 ceph2 ceph3 — узлы кластера, выполняющие функции серверов-мониторов

    При использования Ceph-хранилища с одним узлом кластера замените в конфигурационном ceph.conf значение параметра "osd_crush_chooseleaf_type" на 0.


  6. Добавьте информацию о сети узлов кластера в конфигурационный файл ceph.conf

    echo "public_network = 172.31.240.0/20" >> ceph.conf
    CODE
  7. Установите ceph-deploy на узлы кластера:

    ceph-deploy install ceph1 ceph2 ceph3
    CODE
  8. Создайте сервис мониторинга:

    ceph-deploy mgr create ceph1
    CODE
  9. Создайте и проведите инициализацию серверов-мониторов:

    ceph-deploy mon create-initial
    CODE
  10. Скопируйте конфигурационные файлы на узлы кластера:

    ceph-deploy admin ceph1 ceph2 ceph3
    CODE
  11. Добавьте в кластер серверы с данными:

    ceph-deploy osd create --data /dev/sdb ceph1
    ceph-deploy osd create --data /dev/sdb ceph2
    ceph-deploy osd create --data /dev/sdb ceph3
    CODE

    /dev/sdb — устройство хранения данных на узле кластера

  12. Очистите диски /dev/sdb на серверах с данными:

    ceph-deploy disk zap ceph1:sdb ceph2:sdb ceph3:sdb 
    BASH