Ceph

Материал из ALT Linux Wiki

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

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

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

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

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

  • ceph1 с IP-адресом 192.168.22.11. Назначение — MON, OSD, ADM, MGR.
  • ceph2 с IP-адресом 192.168.22.12. Назначение — MON, OSD.
  • ceph3 с IP-адресом 192.168.22.13. Назначение — MON, OSD.

На всех узлах

1. Установите ПО для работы NTP. (Это предотвратит проблемы, возникающие из-за сдвига системного времени). Так же необходимо поставить пакет sudo.

# apt-get update && apt-get install ntp ntpdate ntp-doc sudo

2. Создайте пользователя ceph и включите в группу wheel:

# useradd ceph -G wheel

3. Установите для пользователя ceph пароль:

# passwd ceph

4. Установить параметры sudoers:

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

5. Установить права на файл:

# chmod 0440 /etc/sudoers.d/ceph

6. Создайте записи в файле /etc/hosts:

192.168.22.11  ceph1
192.168.22.12  ceph2
192.168.22.13  ceph3

7. Проверить политику control (должна быть wheelonly):

# control sudo

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

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

# apt-get install ceph-deploy python-module-setuptools

2. Создайте ключи ssh и скопируйте их на все узлы кластера:

# ssh-keygen
# ssh-copy-id ceph@ceph1
# ssh-copy-id ceph@ceph2
# ssh-copy-id ceph@ceph3

3. Добавьте в файл ~/.ssh/config строки:

Host ceph1
Hostname ceph1
User ceph
Host ceph2
Hostname ceph2
User ceph
Host ceph3
Hostname ceph3
User ceph

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

# mkdir ceph-cluster
# cd ceph-cluster

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

Внимание! Все команды выполняются в ранее созданном каталоге ceph-cluster


1. Создайте конфигурационный файл кластера: (ceph1 ceph2 ceph3 — узлы кластера, выполняющие функции серверов-мониторов)

# ceph-deploy new ceph1 ceph2 ceph3

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

# echo "public_network = 192.168.22.0/24" >> ceph.conf

3. Установите ceph-deploy на узлы кластера:

# ceph-deploy install ceph1 ceph2 ceph3

4. Создайте и проведите инициализацию серверов-мониторов:

# ceph-deploy mon create-initial

5. Создайте сервис мониторинга:

# ceph-deploy mgr create ceph1

6. Создайте Metadata сервера (Если CephFS):

# ceph-deploy mds create ceph1 ceph2 ceph3

7. Скопируйте конфигурационные файлы на узлы кластера:

# ceph-deploy admin ceph1 ceph2 ceph3

7. Добавьте в кластер серверы с данными:

Примечание: формат команды ceph-deploy osd create --data <device> <ceph-node>
# ceph-deploy osd create --data /dev/vdb ceph1
# ceph-deploy osd create --data /dev/vdb ceph2
# ceph-deploy osd create --data /dev/vdb ceph3

Проверка состояния кластера

1. Статус кластера:

[root@ceph1 ~]# ceph status
  cluster:
    id:     22aa3245-90da-42cb-9146-30e16df9824e
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 2m)
    mgr: ceph1(active, since 25m)
    osd: 3 osds: 3 up (since 23m), 3 in (since 23m)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   15 MiB used, 60 GiB / 60 GiB avail
    pgs:     1 active+clean

2. Использование OSD:

[root@ceph1 ~]# ceph osd df
ID  CLASS  WEIGHT   REWEIGHT  SIZE    RAW USE  DATA     OMAP  META     AVAIL   %USE  VAR   PGS  STATUS
 0    hdd  0.01949   1.00000  20 GiB  5.0 MiB  152 KiB   0 B  4.9 MiB  20 GiB  0.02  1.01    1      up
 1    hdd  0.01949   1.00000  20 GiB  5.0 MiB  152 KiB   0 B  4.8 MiB  20 GiB  0.02  1.00    1      up
 2    hdd  0.01949   1.00000  20 GiB  5.0 MiB  152 KiB   0 B  4.8 MiB  20 GiB  0.02  1.00    1      up
                       TOTAL  60 GiB   15 MiB  456 KiB   0 B   14 MiB  60 GiB  0.02                   
MIN/MAX VAR: 1.00/1.01  STDDEV: 0

3. Вывод OSD дерева:

# ceph osd tree
[root@ceph1 ~]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
-1         0.05846  root default                             
-3         0.01949      host ceph1                           
 0    hdd  0.01949          osd.0       up   1.00000  1.00000
-5         0.01949      host ceph2                           
 1    hdd  0.01949          osd.1       up   1.00000  1.00000
-7         0.01949      host ceph3                           
 2    hdd  0.01949          osd.2       up   1.00000  1.00000

4. Состояние кластера:

[root@ceph1 ~]# ceph health
HEALTH_OK

Пример создания CephFS

1. Создать файловую систему:

# ceph fs new cephfs cephfs_metadata cephfs_data

2. Результат:

[root@ceph1 ~]# ceph fs ls
name: cephfs, metadata pool: cephfs.cephfs.meta, data pools: [cephfs.cephfs.data ]

3. Для монтирования ресурса можно использовать ceph-fuse:

# apt-get install ceph-fuse

4. Монтирование ресурса:

# ceph-fuse -n client.admin --keyring=/etc/ceph/ceph.client.admin.keyring /mnt/myceph

5. Проверка монтирования:

[root@ceph1 ~]# mount | grep ceph-fuse
ceph-fuse on /mnt/myceph type fuse.ceph-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)

Возможные предупреждения

Если в статусе кластера присутствуют сообщения:

health: HEALTH_WARN
mons are allowing insecure global_id reclaim

Предупреждение можно отключить командами:

# ceph config set mon mon_warn_on_insecure_global_id_reclaim false
# ceph config set mon mon_warn_on_insecure_global_id_reclaim_allowed false