Подготовка кластера системы Ceph

В этой статье:

Установка Ceph

Добавление OSD-узлов

Создание сервера метаданных

Развертывание Ceph-менеджеров

Для установки и настройки кластера системы Ceph:

  1. Установите Ceph.

  2. Добавьте OSD-узлы.

  3. Создайте сервера метаданных.

  4. Выполните развертывание Ceph-менеджеров.

Примечание. В дальнейшем описании для главных узлов кластера используются названия kn0, kn1, kn2, для рабочих узлов - kn3, kn4, kn5.

Установка Ceph

Для установки и настройки Ceph:

  1. Установите python:

apt-get update && apt-get install -y python python-pip parted

Примечание. Все команды необходимо выполнять на одном узле.

  1. Выполните команды:

sudo fdisk -l /dev/sdb
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs -f /dev/sdb
sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb

  1. Разверните Ceph сначала на узле kn0:

sudo -H pip install ceph-deploy
ceph-deploy new kn0

В текущей директории появится файл ceph.conf.

Отредактируйте ceph.conf в соответствии с файлом, входящим в поставку ./fmp_k8s_v1/ceph/ceph.conf:

[global]
fsid = a997355a-25bc-4749-8f3a-fb07df0f9105 - замените на значение из вашего файла ceph.conf
mon_initial_members = kn0,kn1,kn3 - замените на имена ваших узлов
mon_host = 10.30.217.17,10.30.217.20,10.30.217.23 - замените на адреса ваших узлов
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
# Сетевой адрес
public network = 10.30.217.0/24 - замените на адрес вашей сети
rbd default features = 3

[mon.kn0]
    host = kn0 - замените на имя вашего узла
    mon addr = 10.30.217.20:6789 - замените на адрес вашего узла

[mon.kn1]
    host = kn1 - замените на имя вашего узла
    mon addr = 10.30.217.17:6789 - замените на адрес вашего узла

[mon.kn3]
    host = kn3 - замените на имя вашего узла
    mon addr = 10.30.217.23:6789 - замените на адрес вашего узла

# Добавлено ниже config
[osd]
osd_journal_size = 512
osd_pool_default_size = 3
osd_pool_default_min_size = 1
osd_pool_default_pg_num = 64
osd_pool_default_pgp_num = 64

# Задержка для OSD
osd_client_watch_timeout = 15
osd_heartbeat_grace = 20
osd_heartbeat_interval = 5
osd_mon_heartbeat_interval = 15
osd_mon_report_interval = 4

[mon]
mon_osd_min_down_reporters = 1
mon_osd_adjust_heartbeat_grace = false
mon_client_ping_timeout = 15.000000

Примечание. Все имена и адреса узлов замените вашими.

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

ceph-deploy install kn0 kn1 kn2 kn3 kn4 kn5

Данная операция займёт продолжительное время.

  1. Настройте мониторинг узла kn1:

# Вместо create-initial можно указать узел
ceph-deploy mon create-initial

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

ceph-deploy gatherkeys kn1

Добавление OSD-узлов

После установки Ceph на все узлы добавьте OSD-роли в кластер Ceph. Для хранения данных и журнала они будут использовать раздел /dev/sdb на диске.

  1. Проверьте на рабочих узлах, доступен ли раздел диска /dev/sdb:

ceph-deploy disk list kn3 kn4 kn5

  1. Удалите таблицы разделов на рабочих узлах:

ceph-deploy disk zap kn3 /dev/sdb
ceph-deploy disk zap kn4 /dev/sdb
ceph-deploy disk zap kn5 /dev/sdb

Данная команда удалит все данные из раздела /dev/sdb на узлах OSD Ceph.

  1. Подготовьте и активируйте все OSD-узлы, убедитесь в отсутствии ошибок:

ceph-deploy osd create kn3 --data /dev/sdb
ceph-deploy osd create kn4 --data /dev/sdb
ceph-deploy osd create kn5 --data /dev/sdb

Пример результата выполнения команд:

The last output line should be: Host kn3 is now ready for osd use.
The last output line should be: Host kn4 is now ready for osd use.
The last output line should be: Host kn5 is now ready for osd use.

  1. Отправьте admin keys и конфигурацию на все узлы:

ceph-deploy admin kn0 kn1 kn2 kn3 kn4 kn5

  1. Измените права на key file. Выполните на всех узлах команду:

sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

В результате будет создан кластер Ceph.

Важно. Необходимо явно добавить Ceph Manager Service.

Для добавления Ceph Manager Service:

  1. На узле kn0 (ceph-admin) выполните команду:

ceph auth get-or-create mgr.kn1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'

Команда вернёт значение mgr keyring. Скопируйте его и переходите к следующему шагу.

  1. Выполните команду:

ssh (monitoring role node, e.g. kn1)
    sudo –i
    mkdir /var/lib/ceph/mgr/ceph-kn1

  1. Отредактируйте файл vi /var/lib/ceph/mgr/ceph-kn1/keyring. Вставьте в него значение mgr keyring из шага 1.

  2. Выполните команду:

chmod 600 /var/lib/ceph/mgr/ceph-kn1/keyring
chown ceph-ceph –R /var/lib/ceph/mgr/

  1. Запустите ceph-mgr менеджер:

sudo systemctl start ceph-mgr.target

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

sudo ceph –s

Пример результата выполнения команды:

cluster:
id:     a997355a-25bc-4749-8f3a-fb07df0f9105
health: HEALTH_OK

services:
mon: 3 daemons, quorum kn1,kn3, kn0
mgr: kn1(active)
mds: cephfs-1/1/1 up  {0=kn1=up:active}, 2 up:standby
osd: 3 osds: 3 up, 3 in

data:
pools:   0 pools, 0 pgs
objects: 0  objects, 0 B
usage:   3.0 GiB used, 147 GiB / 150 GiB avail
pgs:

Если кластер вернул ответ HEALTH_OK, то кластер работает.

Создание сервера метаданных

Для использования CephFS требуется, как минимум, один сервер метаданных. Для его создания выполните команду:

ceph-deploy mds create {ceph-node}

Развертывание Ceph-менеджеров

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

Для развертывания дополнительных Ceph-менеджеров:

  1. Выполните команду:

ceph-deploy mgr create node2 node3

Выполните следующие команды для проверки работы Ceph:

sudo ceph -s

sudo ceph df

sudo ceph osd tree

  1. Создайте отдельный пул kube для кластера Kubernetes (k8s):

sudo ceph osd pool create kube 32 32

Пример результата выполнения команды:

>> pool 'kube' created //Просмотрите документацию ceph по конфигурации пула, PG и CRUSH, чтобы установить соответствующие значения для PG и PGP

  1. Проверьте количество реплик для пула:

$ sudo ceph osd pool get kube size

Пример результата выполнения команды:

size: 3

  1. Проверьте количество placement groups для пула:

$ sudo ceph osd pool get kube pg_num

Пример результата выполнения команды:

pg_num: 32

  1. Свяжите созданный пул с rbd-приложением для его использования в качестве устройства RADOS:

$ sudo ceph osd pool application enable kube rbd

Пример результата выполнения команды:

>>enabled application 'rbd' on pool 'kube'

  1. Создайте отдельного пользователя для пула kube и сохраните ключи, требуемые для доступа k8s к хранилищу:

$ sudo ceph auth get-or-create client.kube mon 'allow r' osd 'allow rwx pool=kube'

[client.kube]
       key = AQC6DX1cAJD3LRAAUC2YpA9VSBzTsAAeH30ZrQ==

 

mkdir ./to_etc
sudo ceph auth get-key client.admin > ./to_etc/client.admin
sudo cp ./to_etc/client.admin /etc/ceph/ceph.client.admin.keyring
sudo chmod 600 /etc/ceph/ceph.client.admin.keyring

  1. Приведите содержимое файла к виду:

[client.admin]
       key = AQCvWnVciE7pERAAJoIDoxgtkfYKMnoBB9Q6uA==
       caps mds = "allow *"
       caps mgr = "allow *"
       caps mon = "allow *"
       caps osd = "allow *"

 

sudo ceph auth get-key client.kube > ./to_etc/ceph.client
sudo cp ./to_etc/ceph.client  /etc/ceph/ceph.client.kube.keyring
sudo chmod 644 /etc/ceph/ceph.client.kube.keyring

  1. Приведите содержимое файла к виду:

[client.kube]
       key = AQCvWnVciE7pERAAJoIDoxgtkfYKMnoBB9Q6uA==
       caps mds = "allow *"
       caps mgr = "allow *"
       caps mon = "allow *"
       caps osd = "allow *"

После выполнения действий распределенная файловая система Ceph будет подготовлена, далее перейдите к подготовке кластера Kubernetes.

См. также:

Подготовка среды для продукта «Форсайт. Мобильная платформа» | Подготовка кластера Kubernetes