Документация VMmanager 5 Cloud

Создание Ceph-кластера

Виртуальный диск виртуальной машины представляет собой образ жёсткого диска. Виртуальные диски хранятся на локальном или сетевом устройстве — хранилище. Ceph RBD — сетевое отказоустойчивое хранилище. В статье описан алгоритм настройки Ceph-кластера. Подробнее о сетевых хранилищах см. в статье Сетевые хранилища.

Ceph-кластер

Рекомендуем создавать кластер Ceph в соответствии с официальной документацией. В этой статье только обобщённая информация об установке.

Кластер Ceph должен располагаться отдельно от VMmanager. Понятия "узлы" и "кластер" не имеют ничего общего с "узлами кластера" VMmanager.

Системные требования

Для создания кластера требуется:

  • физические или виртуальные сервера (минимум — 4): один сервер с данными (OSD), минимум два сервера-монитора и административный сервер (он же первый клиент);
  • все серверы должны находиться как можно ближе друг к другу. Желательно, в одной стойке и в одном сегменте сети;
  • для кластера Ceph желательно использовать высокоскоростное сетевое подключение как между узлами кластера, так и с клиентскими узлами;
  • на всех серверах должна быть установлена одна операционная система.

Подготовка узлов

На всех узлах кластера:

  1. Установите openssh.
  2. Создайте пользователя ceph:

    # ssh user@ceph-server
    # useradd -d /home/ceph -m ceph
    # passwd ceph
  3. Созданному пользователю присвойте все привилегии:

    # echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
    # chmod 0440 /etc/sudoers.d/ceph

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

  1. Создайте ключи ssh, чтобы иметь доступ на все узлы кластера. Для этого создайте директорию /ceph-client и перейдите в неё:

    # ssh root@adm
    # cd /ceph-client
  2. Создайте ключи ssh:

    # ssh-keygen -f ./id_rsa
     Generating public/private rsa key pair.
     Enter passphrase (empty for no passphrase): 
     Enter same passphrase again: 
     Your identification has been saved in ./id_rsa.
     Your public key has been saved in ./id_rsa.pub.
     The key fingerprint is:
     23:2c:d9:5c:64:4f:ea:43:5b:48:b3:69:3d:e8:25:a4 root@adm
     The key's randomart image is:
     +--[ RSA 2048]----+
     |        * .      |
     |       * @       |
     |      E @ *      |
     |     = * = .     |
     |    o = S        |
     |     . . o       |
     |                 |
     |                 |
     |                 |
     +-----------------+
  3. Если узлы кластера не разрешаются в DNS, обновите /etc/hosts. Шаблон корректного файла выглядит следующим образом:

    # getent hosts | grep ceph
    172.31.240.91 adm.ceph.ispsystem.net adm
    172.31.240.87 mon-1.ceph.ispsystem.net mon-1
    172.31.240.84 mon-2.ceph.ispsystem.net mon-2 
    172.31.240.28 osd-1.ceph.ispsystem.net osd-1
    172.31.240.44 osd-2.ceph.ispsystem.net osd-2
    172.31.240.90 mds-1.ceph.ispsystem.net mds-1
  4. Удобно завести переменную:

    # nodes=`getent hosts | grep ceph | grep -v 'adm' | awk '{print $3}' | xargs echo`
    # echo $nodes
    mon-1 mon-2 osd-1 osd-2 mds-1
  5. Тогда скопировать ключи ssh на узлы кластера можно следующим образом:

    # for i in $nodes; do ssh-copy-id -i /ceph-client/id_rsa.pub ceph@$i ; done
  6. Отредактируйте файл конфигурации ~/.ssh/config. Шаблон корректного файла выглядит следующим образом:

     # cat ~/.ssh/config 
     Host mon-1
    	    Hostname mon-1.ceph.ispsystem.net
    	    IdentityFile /ceph-client/id_rsa
    	    User ceph
     Host mon-2
    	    Hostname mon-2.ceph.ispsystem.net
    	    IdentityFile /ceph-client/id_rsa
    	    User ceph
     Host osd-1
    	    Hostname osd-1.ceph.ispsystem.net
    	    IdentityFile /ceph-client/id_rsa
    	    User ceph
     Host osd-2
    	    Hostname osd-2.ceph.ispsystem.net
    	    IdentityFile /ceph-client/id_rsa
    	    User ceph
     Host mds-1
    	    Hostname mds-1.ceph.ispsystem.net
    	    IdentityFile /ceph-client/id_rsa
    	    User ceph

Установка ПО и создание кластера

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

  1. Установите ceph-deploy:

    wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | apt-key add — 
    echo deb http://ceph.com/debian-cuttlefish/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list
    apt-get update
    apt-get install ceph-deploy
  2. Инициализируйте узлы-мониторы для создания кластера:

    ceph-deploy new mon-1 mon-2 
  3. Обратите внимание: для использования Ceph-хранилища с одним узлом кластера нужно в конфигурационном файле Ceph (ceph.conf) значение параметра osd crush chooseleaf type по умолчанию ("1") изменить на "0":

    osd crush chooseleaf type = 0
  4. Установите ceph на узлы кластера:

    # ceph-deploy install --stable cuttlefish $nodes
    OK
    OK
    OK
    OK
    OK
  5. Установите ПО для мониторов кластера:

    # ceph-deploy mon create mon-1 mon-2
  6. Получите ключи мониторов кластера:

    # ceph-deploy gatherkeys mon-1
    # ls -l
    ...
    -rw-r--r-- 1 root root 72 Jul 12 05:01 ceph.bootstrap-mds.keyring
    -rw-r--r-- 1 root root 72 Jul 12 05:01 ceph.bootstrap-osd.keyring
    -rw-r--r-- 1 root root 64 Jul 12 05:01 ceph.client.admin.keyring
    ...
  7. Подготовьте хранилище (в случае, рассматриваемом для примера, на узлах хранилища есть пустой диск /dev/sdb):

    # ceph-deploy osd prepare osd-1:sdb osd-2:sdb
    # ceph-deploy osd activate osd-1:sdb osd-2:sdb
  8. Очистите диски /dev/sdb на хранилищах. Все данные на дисках будут удалены:

    # ceph-deploy disk zap osd-1:sdb osd-2:sdb
  9. Подготовьте узлы метаданных:

    # ceph-deploy mds create mds-1