Ceph: различия между версиями

Материал из ALT Linux Wiki
м (Добавил категории)
Нет описания правки
Строка 1: Строка 1:
== Требования к узлам кластера ==
== Источник ==
https://docs.ceph.com/en/latest/start/intro/
 
== Основная информация ==
'''Ceph''' - это программно определяемая распределенная файловая система с открытым исходным кодом, лишенная узких мест и единых точек отказа, которая представляет из себя легко масштабируемый до петабайтных размеров кластер узлов, выполняющих различные функции, обеспечивая хранение и репликацию данных, а также распределение нагрузки, что гарантирует высокую доступность и надежность.
 
== Архитектура ==
 
Ceph состоит из нескольких демонов:
 
* '''Ceph Monitor''' - поддерживает карты состояния кластера, включая карту монитора, карту менеджера, экранную карту, карту MDS и карту CRUSH. Эти карты представляют собой критическое состояние кластера, необходимое для координации действий демонов Ceph друг с другом. Мониторы также отвечают за управление аутентификацией между демонами и клиентами. Обычно для обеспечения резервирования и высокой доступности требуется не менее трех мониторов.
 
* '''Ceph OSD Daemon''' - Демон хранилища объектов хранит данные, обрабатывает репликацию данных, восстановление, перебалансировку и предоставляет некоторую информацию о мониторинге мониторам и менеджерам Ceph, проверяя другие демоны OSD. Для обеспечения резервирования и высокой доступности обычно требуется не менее трех OSD Ceph.
 
* '''Ceph Manager''' - отвечает за отслеживание показателей времени выполнения и текущего состояния кластера Ceph, включая использование хранилища, текущие показатели производительности и загрузку системы. Демоны Ceph Manager также размещают модули на базе python для управления и предоставления информации о кластере Ceph, включая веб-панель мониторинга Ceph и REST API. Для обеспечения высокой доступности обычно требуется по крайней мере два менеджера.
 
* '''Ceph Metadata Server''' -  хранит метаданные от имени файловой системы Ceph (Блочные устройства Ceph и хранилище объектов Ceph не используют MDS). Серверы метаданных Ceph позволяют пользователям файловой системы POSIX выполнять базовые команды (такие как ls, find и т.д.), не создавая огромной нагрузки на кластер хранения Ceph.
 
== Рекомендации к составу кластера ==


В составе кластера должны быть следующие физические или виртуальные серверы:
В составе кластера должны быть следующие физические или виртуальные серверы:
* сервер с данными (OSD);
* Сервер с данными (OSD);
* не менее трёх серверов-мониторов (MON);
* Не менее трёх серверов-мониторов (MON);
* административный сервер (ADM);
* Административный сервер (ADM);
* сервис мониторинга (MGR);
* Сервис мониторинга (MGR);
* сервер метаданных (MDS). Необходим, если вы используете файловую систему CephFS.
* Сервер метаданных (MDS). Необходим, если вы используете файловую систему CephFS.
 
== Пример ручной установки ==
 
=== Подготовка: ===
0. По умолчанию команды выполняются от рута если не сказано обратного.
 
1. Установите пакеты на все хосты кластера
<pre>apt-get install ceph</pre>
 
2. Создайте записи для резолвинга хостов в кластере в <pre>/etc/hosts</pre>
 
=== Установка: ===
 
1. Сгенерируйте uuid с помощью команды:
<pre>uuidgen</pre>
 
2. Установите переменные окружения:
 
Полученное uuid значение сохраните в переменную окружения:
<pre>export fsid=VALUE </pre>
 
Придумайте имя кластера(по умолчанию ceph) и сохраните его в переменную окружения:
<pre>export CLUSTER=NAME </pre>
 
Сохраните имя хоста в переменную окружения:
<pre>export hostname=NAME </pre>
 
3. Создайте конфиг файл в /etc/ceph/ceph.conf с таким содержимым:
<pre>
[global]
fsid = введите UUID
mon initial members = введите HOSTNAME
mon host = {Host IP}
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
public network = укажите сеть
cluster network = укажите сеть
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
mon_allow_pool_delete = true
osd pool default size = 3
osd pool default min size = 1
osd pool default pg num = 128
osd pool default pgp num = 128
osd crush chooseleaf type = 1
mon_pg_warn_max_object_skew = 20
mon_max_pg_per_osd = 400
</pre>
 
4. Сгенерируйте ключ для кластера и монитора:
<pre>ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'</pre>
 
Затем ключ для менеджера:
<pre>ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *' </pre>
 
Затем ключ для поднятия osd:
<pre>su -l -c  "ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'" ceph </pre>
 
Затем добавьте ключи в файл ключей монитора:
<pre>ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring </pre>
<pre>ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring </pre>


== Пример подготовки узлов кластера ==
5. Смените владельца для этого файла:
<pre>chown ceph:ceph /tmp/ceph.mon.keyring </pre>
 
6. Создайте карты мониторов:
<pre>monmaptool --create --add $hostname адресс хоста --fsid $fsid /tmp/monmap </pre>
 
7. Создайте каталог:
<pre>su -l -c "mkdir /var/lib/ceph/mon/$CLUSTER-$hostname" ceph </pre>
 
8. Заполните монитор картой монитора и связкой ключей:
<pre>su -l -c "ceph-mon --cluster $CLUSTER --mkfs -i $hostname --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring" ceph </pre>
 
9. Запустите сервис:
<pre>systemctl start ceph-mon@$hostname </pre>
 
10. Проверьте статус кластера:
<pre>ceph -s </pre>
 
Если в статусе кластера присутствуют сообщения:
<pre>
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
</pre>
 
Предупреждение можно отключить командами:
 
<pre>
# 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
</pre>
 
11. (Опционально) Включите msgr2:
<pre>ceph mon enable-msgr2 </pre>
 
 
=== Создание менеджера ===
1. Создайте ключ для демона, указав имя демона:
<pre> ceph auth get-or-create mgr.{DEMON_NAME} mon 'allow profile mgr' osd 'allow *' mds 'allow *' </pre>
 
2. Полученный ключ добавьте в файл по пути, предварительно его создав от лица ceph юзера:
<pre> /var/lib/ceph/mgr/$CLUSTER-{DEMON_NAME}/keyring </pre>
 
3. Запустите менеджер:
<pre> systemctl start ceph-mgr@{DEMON_NAME} </pre>
 
4. Проверьте кластер:
<pre> ceph -s </pre>
 
=== Добавление монитора в кластер ===
1. Создайте директорию на новом узле:
<pre> su -l -c  "mkdir /var/lib/ceph/mon/$CLUSTER-$hostname" ceph </pre>
 
2. На узле с созданным монитором заберите ключ и мапу:
Добавьте в ceph.conf в новые хостнеймы и адреса
 
<pre> ceph auth get mon.$hostname -o ~/ceph.mon.keyring </pre>
<pre> ceph mon getmap -o ~/ceph.map </pre>
 
3. Скопируйте полученный ключ и мапу на новую ноду в каталог /var/lib/ceph/tmp/ и смените владельца на ceph
А также скопируйте ceph.conf и ceph.admin.keyring
 
4. Запустите команду инициализации:
<pre> su -l -c "ceph-mon --mkfs -i $hostname --monmap /var/lib/ceph/tmp/ceph.map --keyring /var/lib/ceph/tmp/ceph.mon.keyring" ceph </pre>
 
5. Запустите сервис:
<pre> systemctl start ceph-mon@$hostname </pre>
 
=== Создание OSD ===
 
1. Создайте хранилище:
<pre> ceph-volume lvm create --data укажите путь </pre>
 
2. Подготовьте хранилище:
<pre> ceph-volume lvm prepare --data укажите путь </pre>
 
3. Активируйте:
<pre> ceph-volume lvm activate {ID} {FSID} </pre>
 
 
{{Attention| В случае застревания какого либо сервиса в статусе fail: <pre> systemctl reset-failed SERVICE </pre>}}
 
== Пример установки с помощью ceph-deploy ==
{{Attention| Материал далее устарел, требует проверки</pre>}}


Рассмотрим пример создания кластера с использованием серверов:
Рассмотрим пример создания кластера с использованием серверов:
Строка 15: Строка 179:
* ceph3 с IP-адресом 192.168.22.13. Назначение — MON, OSD.
* ceph3 с IP-адресом 192.168.22.13. Назначение — MON, OSD.


== На всех узлах ==
=== На всех узлах ===


1. Установите ПО для работы NTP. (Это предотвратит проблемы, возникающие из-за сдвига системного времени). Так же необходимо поставить пакет sudo.
1. Установите ПО для работы NTP. (Это предотвратит проблемы, возникающие из-за сдвига системного времени). Так же необходимо поставить пакет sudo.
Строка 42: Строка 206:
<pre># control sudo</pre>
<pre># control sudo</pre>


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


1. Установите пакеты ceph-deploy и python-setuptools:
1. Установите пакеты ceph-deploy и python-setuptools:
Строка 74: Строка 238:
</pre>
</pre>


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


{{Attention|Все команды выполняются в ранее созданном каталоге ceph-cluster}}
{{Attention|Все команды выполняются в ранее созданном каталоге ceph-cluster}}
Строка 107: Строка 271:
</pre>
</pre>


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


1. Статус кластера:
1. Статус кластера:
Строка 185: Строка 349:
</pre>
</pre>


== Возможные предупреждения ==
Если в статусе кластера присутствуют сообщения:
<pre>
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
</pre>
Предупреждение можно отключить командами:
<pre>
# 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
</pre>


[[Category:Ceph]]
[[Category:Ceph]]

Версия от 16:17, 30 мая 2023

Источник

https://docs.ceph.com/en/latest/start/intro/

Основная информация

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

Архитектура

Ceph состоит из нескольких демонов:

  • Ceph Monitor - поддерживает карты состояния кластера, включая карту монитора, карту менеджера, экранную карту, карту MDS и карту CRUSH. Эти карты представляют собой критическое состояние кластера, необходимое для координации действий демонов Ceph друг с другом. Мониторы также отвечают за управление аутентификацией между демонами и клиентами. Обычно для обеспечения резервирования и высокой доступности требуется не менее трех мониторов.
  • Ceph OSD Daemon - Демон хранилища объектов хранит данные, обрабатывает репликацию данных, восстановление, перебалансировку и предоставляет некоторую информацию о мониторинге мониторам и менеджерам Ceph, проверяя другие демоны OSD. Для обеспечения резервирования и высокой доступности обычно требуется не менее трех OSD Ceph.
  • Ceph Manager - отвечает за отслеживание показателей времени выполнения и текущего состояния кластера Ceph, включая использование хранилища, текущие показатели производительности и загрузку системы. Демоны Ceph Manager также размещают модули на базе python для управления и предоставления информации о кластере Ceph, включая веб-панель мониторинга Ceph и REST API. Для обеспечения высокой доступности обычно требуется по крайней мере два менеджера.
  • Ceph Metadata Server - хранит метаданные от имени файловой системы Ceph (Блочные устройства Ceph и хранилище объектов Ceph не используют MDS). Серверы метаданных Ceph позволяют пользователям файловой системы POSIX выполнять базовые команды (такие как ls, find и т.д.), не создавая огромной нагрузки на кластер хранения Ceph.

Рекомендации к составу кластера

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

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

Пример ручной установки

Подготовка:

0. По умолчанию команды выполняются от рута если не сказано обратного.

1. Установите пакеты на все хосты кластера

apt-get install ceph

2. Создайте записи для резолвинга хостов в кластере в

/etc/hosts

Установка:

1. Сгенерируйте uuid с помощью команды:

uuidgen

2. Установите переменные окружения:

Полученное uuid значение сохраните в переменную окружения:

export fsid=VALUE 

Придумайте имя кластера(по умолчанию ceph) и сохраните его в переменную окружения:

export CLUSTER=NAME 

Сохраните имя хоста в переменную окружения:

export hostname=NAME 

3. Создайте конфиг файл в /etc/ceph/ceph.conf с таким содержимым:

[global]
fsid = введите UUID
mon initial members = введите HOSTNAME
mon host = {Host IP}
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
public network = укажите сеть
cluster network = укажите сеть
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
mon_allow_pool_delete = true
osd pool default size = 3
osd pool default min size = 1
osd pool default pg num = 128
osd pool default pgp num = 128
osd crush chooseleaf type = 1
mon_pg_warn_max_object_skew = 20
mon_max_pg_per_osd = 400

4. Сгенерируйте ключ для кластера и монитора:

ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'

Затем ключ для менеджера:

ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *' 

Затем ключ для поднятия osd:

su -l -c  "ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'" ceph 

Затем добавьте ключи в файл ключей монитора:

ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring 
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring 

5. Смените владельца для этого файла:

chown ceph:ceph /tmp/ceph.mon.keyring 

6. Создайте карты мониторов:

monmaptool --create --add $hostname адресс хоста --fsid $fsid /tmp/monmap 

7. Создайте каталог:

su -l -c "mkdir /var/lib/ceph/mon/$CLUSTER-$hostname" ceph 

8. Заполните монитор картой монитора и связкой ключей:

su -l -c "ceph-mon --cluster $CLUSTER --mkfs -i $hostname --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring" ceph 

9. Запустите сервис:

systemctl start ceph-mon@$hostname 

10. Проверьте статус кластера:

ceph -s 

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

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

11. (Опционально) Включите msgr2:

ceph mon enable-msgr2 


Создание менеджера

1. Создайте ключ для демона, указав имя демона:

 ceph auth get-or-create mgr.{DEMON_NAME} mon 'allow profile mgr' osd 'allow *' mds 'allow *' 

2. Полученный ключ добавьте в файл по пути, предварительно его создав от лица ceph юзера:

 /var/lib/ceph/mgr/$CLUSTER-{DEMON_NAME}/keyring 

3. Запустите менеджер:

 systemctl start ceph-mgr@{DEMON_NAME} 

4. Проверьте кластер:

 ceph -s 

Добавление монитора в кластер

1. Создайте директорию на новом узле:

 su -l -c  "mkdir /var/lib/ceph/mon/$CLUSTER-$hostname" ceph 

2. На узле с созданным монитором заберите ключ и мапу: Добавьте в ceph.conf в новые хостнеймы и адреса

 ceph auth get mon.$hostname -o ~/ceph.mon.keyring 
 ceph mon getmap -o ~/ceph.map 

3. Скопируйте полученный ключ и мапу на новую ноду в каталог /var/lib/ceph/tmp/ и смените владельца на ceph А также скопируйте ceph.conf и ceph.admin.keyring

4. Запустите команду инициализации:

 su -l -c "ceph-mon --mkfs -i $hostname --monmap /var/lib/ceph/tmp/ceph.map --keyring /var/lib/ceph/tmp/ceph.mon.keyring" ceph 

5. Запустите сервис:

 systemctl start ceph-mon@$hostname 

Создание OSD

1. Создайте хранилище:

 ceph-volume lvm create --data укажите путь 

2. Подготовьте хранилище:

 ceph-volume lvm prepare --data укажите путь 

3. Активируйте:

 ceph-volume lvm activate {ID} {FSID} 


Внимание! В случае застревания какого либо сервиса в статусе fail:
 systemctl reset-failed SERVICE 


Пример установки с помощью ceph-deploy

Внимание! Материал далее устарел, требует проверки


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

  • 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)