Настройка кластера Ceph на Linux CentOS 7

Мы предоставляем услуги удаленного администрирования серверов

Настройка кластера 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 по ссылке http://docs.ceph.com/docs/jewel/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:

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

ssh-keygen

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

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

ssh-copy-id [email protected]

ssh-copy-id [email protected]

ssh-copy-id [email protected]

* где 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 [email protected] ‘sudo yum update -y’

ssh [email protected] ‘sudo yum update -y’

ssh [email protected] ‘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

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

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

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

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

ntpdate ru.pool.ntp.org

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