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

Материал из ISPWiki
Перейти к: навигация, поиск

Иерархия: VMmanager KVM -> Настройка кластера
VMmanager Cloud -> Настройка кластера

Ceph-кластер

Рекомендуется создавать кластер Ceph в соответствии с документацией на проект. На данной странице мы приводим только обобщенную информацию по установке.

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

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

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

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

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

На все узлы кластера необходимо:

  • Установить openssh;
  • Создать пользователя ceph:
# ssh user@ceph-server
# 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

После этого на административном сервере необходимо создать ключи ssh, для того, чтобы иметь доступ с административного сервера на все узлы кластера:

  • Создать директорию /ceph-client и перейти в нее:
# ssh root@adm
# cd /ceph-client
  • Создать ключи 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       |
 |                 |
 |                 |
 |                 |
 +-----------------+
 # ls
 id_rsa  id_rsa.pub
  • В случае, если узлы кластера не разрешаются в 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
  • Удобно завести переменную:
 # 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
  • Тогда скопировать ключи ssh на узлы кластера можно следующим образом:
   # for i in $nodes; do ssh-copy-id -i /ceph-client/id_rsa.pub ceph@$i ; done
  • Отредактировать файл конфигурации ~/.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

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

  • Установка 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
  • Создание кластера: для этого необходимо инициализировать узлы-"мониторы":
ceph-deploy new mon-1 mon-2 
  • Обратите внимание, что, если вы хотите использовать Ceph-хранилище с одним узлом кластера, вам необходимо в конфигурационном файле Ceph (ceph.conf) значение параметра "osd crush chooseleaf type" по-умолчанию ("1") изменить на "0":
osd crush chooseleaf type = 0
  • Установка ceph на узлы кластера:
# ceph-deploy install --stable cuttlefish $nodes
OK
OK
OK
OK
OK
  • Установка ПО для мониторов кластера:
# ceph-deploy mon create mon-1 mon-2
  • Получение ключей мониторов кластера:
# 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
...
  • Подготовка хранилища (в случае, рассматриваемом для примера, на узлах хранилища есть пустой диск /dev/sdb):
# ceph-deploy osd prepare osd-1:sdb osd-2:sdb
# ceph-deploy osd activate osd-1:sdb osd-2:sdb
  • Очистка дисков /dev/sdb на хранилищах. Все данные на дисках будут удалены:
# ceph-deploy disk zap osd-1:sdb osd-2:sdb
  • Подготовка узла метаданных:
# ceph-deploy mds create mds-1