Настройка дискового кластера Ceph на Linux CentOS 7

Обновлено Обновлено: Опубликовано Опубликовано:

Что такое CephLinux и CentOS простыми словами.

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

Обновление пакетов

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

yum update

Синхронизация времени

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

Для этого сначала установим ntp следующей командой:

yum install ntp

После задаем временную зону:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в данном примере московское время.

Теперь открываем на редактирование cron:

crontab -e

И добавляем следующую строку:

0 0 * * * /sbin/ntpdate ru.pool.ntp.org

* в данной настройке cron каждую ночь в 00:00 будет выполняться синхронизация времени с сервером ru.pool.ntp.org

Чтобы не ждать ночи, разово актуализируем время:

ntpdate ru.pool.ntp.org

Чтобы время не сбивалось после перезагрузки, настроим аппаратное время:

hwclock --systohc

Отключение SELinux

Рекомендуется отключить дополнительную систему безопасности SELinux.

Подробнее читайте статью Как отключить SELinux.

Настройка брандмауэра

Для корректной работы монитора Ceph требуется открыть порт 6789. Это делается следующей командой:

firewall-cmd --permanent --add-port=6789/tcp

Также, для серверов хранения открываем порты 6800-7100:

firewall-cmd --permanent --add-port=6800-7100/tcp

* в нашем примере мониторы ceph и хранилища будут устанавливаться на одни и те же сервера, поэтому вышеописанные команды вводим на всех нодах.

Чтобы изменения вступили в силу, вводим команду:

firewall-cmd --reload

Создание пользователей

На всех серверах кластера создаем пользователя следующей командой:

useradd ceph -m

И задаем ему пароль (желательно, сложный):

passwd ceph

У созданной учетной записи должны быть привилегии суперпользователя. Для этого создаем следующий файл:

vi /etc/sudoers.d/ceph

И добавляем в него следующее:

ceph ALL = (root) NOPASSWD:ALL
Defaults:ceph !requiretty

* в данном примере учетной записи ceph предоставлены права суперпользователя без необходимости повторного ввода пароля.

Задаем следующие права на созданный файл:

chmod 0440 /etc/sudoers.d/ceph

Настройка распознования имен

Если мы работаем в среде без DNS, узлы кластера не смогут обращаться друг к другу по имени, поэтому необходимо открыть на редактирование следующий файл:

vi /etc/hosts

и добавить следующие строки:

192.168.0.10 server1
192.168.0.11 server2
192.168.0.12 server3

* где 192.168.0.10 (11, 12) — IP-адреса серверов в моей тестовой среде; server1, 2, 3 — имена этих серверов.

Установка Ceph

Подключаемся к серверу CentOS 7, с которого будем устанавливать Ceph. Это может быть одна из нод кластера или отдельный компьютер. Все последующие команды выполняем с него.

Установка Ceph-deploy

Распространение Ceph на все узлы кластера происходит при помощи Ceph-deploy. Чтобы его установить, создаем следующий файл:

vi /etc/yum.repos.d/ceph.repo

и добавляем в него следующее:

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-hammer/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

* где Hammer — LTS версия ceph; el7 — релиз CentOS 7. Эти значения нужно заменить на другие, если используемые версии отличаются. Релиз Linux CentOS можно посмотреть командой uname -r, а актуальную версию Ceph по ссылке https://docs.ceph.com/en/latest/releases/

Обновляем список пакетов:

yum update

Теперь можно установить ceph-admin следующей командой:

yum install ceph-deploy

Чтобы заранее обойти ошибку «[ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'», переименовываем наш репозиторий ceph:

mv /etc/yum.repos.d/ceph.repo /etc/yum.repos.d/ceph-deploy.repo

Настройка беспарольного подключения по SSH

Заходим в систему под учетной записью ceph:

su - ceph

Генерируем ключ следующей командой:

ssh-keygen

* система задаст несколько вопросов относительно расположения ключа — оставляем значения по умолчанию, нажимая Enter.

и распространяем его на участников кластера:

ssh-copy-id ceph@server1

ssh-copy-id ceph@server2

ssh-copy-id ceph@server3

* где ceph — созданная ранее на всех узлах учетная запись; server1, 2, 3 — имена серверов в моей тестовой среде.
** после ввода каждой команды система запросит разрешение принять сертификат — отвечаем yes. Также будет запрошен пароль от ранее созданной записи ceph.

Установка Ceph и создание кластера на всех нодах

Создаем рабочий каталог следующей командой:

mkdir ceph-admin

и переходим в него:

cd ceph-admin

Все последующие команды по управлению кластером стоит выполнять, находясь в нем.

Создаем новый кластер:

ceph-deploy new server1 server2 server3

* напомню, что server1,2,3 — названия серверов в моей тестовой среде.

Устанавливаем Ceph на все узлы кластера:

ceph-deploy install server1 server2 server3

Так как ceph-deploy не всегда устанавливает свежую версию ceph, обновим каждую ноду:

ssh ceph@server1 'sudo yum update -y'

ssh ceph@server2 'sudo yum update -y'

ssh ceph@server3 'sudo yum update -y'

Настройка кластера Ceph

Создание и запуск мониторов

Выполним начальную настройку сервера монитора Ceph:

ceph-deploy mon create-initial

Подготовка дисков

Диски, доступные на сервере можно посмотреть следующей командой:

ceph-deploy disk list server1

Готовим диски для использования их системой Ceph:

ceph-deploy osd prepare server1:sdb server1:sdc server2:sdb server2:sdc server3:sdb server3:sdc 

* в данном примере на каждом из серверов есть по два диска — sdb и sdc. Их мы и задействеум в качестве Ceph-хранилища.

И активируем их:

ceph-deploy osd activate server1:sdb1 server1:sdc1 server2:sdb1 server2:sdc1 server3:sdb1 server3:sdc1 

* обратите внимание, что при активации мы уже добавляем 1 к дискам, так как в процессе подготовки система создает два раздела — 1 для данных, 2 для журнала.

Проверка работоспособности

Для начала разрешим чтение файла ceph.client.admin.keyring:

sudo chmod +r /etc/ceph/ceph.client.admin.keyring

Смотрим состояние дисков OSD:

ceph osd tree

Состояние дисков должно быть up, например:

ID WEIGHT  TYPE NAME        UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 0.01999 root default
-2 0.01999     host server1
 0 0.00999         osd.0         up  1.00000          1.00000
 1 0.00999         osd.1         up  1.00000          1.00000

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

ceph -s

Система должна показать, примерно следующее:

    cluster e67ce522-eb15-481e-8d8a-9448b5e31e04
     health HEALTH_OK

Очень часто отображается предупреждение clock skew detected. Это означает, что не на всех серверах синхронизировано время. На всех серверах выполните команду

ntpdate ru.pool.ntp.org

и подождите около 15 минут.

# CentOS # Linux # UNIX # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет