Ceph
Требования к узлам кластера
В составе кластера должны быть следующие физические или виртуальные серверы:
- сервер с данными (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
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 /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