Сегодня я хочу рассказать про простую развертку Ceph с помощью ceph-deploy на CentOS 7. Эта статья нацелена на быстрый деплой нод кластера в базовом конфиге, но использовать кластер в таком виде в прод не стоит.
Про то как развернуть кластер Ceph написано уже ни один десяток статей, todo, видео роликов и так далее. Но так как цеф развивается семимильными шагами, то большинство статей устарело, а часть не локализована на русский язык. Восполним же этот пробел.
Мой конфиг включает в себя 3 ноды с hostname: ceph01, ceph02 и ceph03. Каждая из нод будет исполнять роль mon, mgr и osd. В каждом сервере у меня по 20 OSD (и того 60). Нода ceph01 будет так же управляющей и на ней будет установлен пакет ceph-deploy, а так же приватный ключ для доступа ко всем остальным нодам.
Для начала нам необходимо установить репы ceph на ноде управления (ceph01).
|
sudo subscription-manager repos --enable=rhel-7-server-extras-rpms |
|
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm |
|
cat << EOM > /etc/yum.repos.d/ceph.repo [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-{ceph-stable-release}/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc EOM |
|
sudo yum update sudo yum install ceph-deploy |
Далее на каждой из нод устанавливаем NTP.
|
sudo yum install ntp ntpdate ntp-doc |
После этого нам необходимо на каждом сервере создать пользователя ceph-deploy и дать ему необходимые привилегии, что бы скрипт развертки смог сделать все необходимое.
|
sudo useradd -d /home/ceph-depoly -m ceph-deploy sudo passwd ceph-deploy |
|
echo "ceph-deply ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-deploy sudo chmod 0440 /etc/sudoers.d/ceph-deploy |
Далее на ноде управления (ceph01) генерирует публичный и приватный SSH-ключи.
Все вопросы оставляем по-умолчанию.
Копируем публичные ключи на все 3 ноды, включая ceph01
|
ssh-copy-id ceph-deploy@ceph01 ssh-copy-id ceph-deploy@ceph02 ssh-copy-id ceph-deploy@ceph03 |
Теперь пытаемся залогиниться на на каждом сервере под пользователем ceph-deploy без пароля. И выполнить команду sudo bash. Если вы вошли в привилегированный режим без запроса паролей, то все хорошо. Можно продолжать далее. Если же у вас возникли проблемы, пишите комментарии, помогу чем смогу.
Приступаем непосредственно к развертке кластера:
|
ceph-deploy new ceph01 ceph02 ceph03 |
После выполнения команды в текущей директории появится файл ceph.conf. Отредактируем его добавив параметр:
|
public network = 10.1.2.0/24 cluster network = 10.1.3.0/24 |
Если же у вас одна сеть для всего кластера, то достаточно указать только public network.
Далее производим непосредственную инсталляцию кластера:
|
ceph-deploy install ceph01 ceph02 ceph03 |
После установки деплоим mon на ноды:
|
ceph-deploy mon create-initial |
После этого у вас в каталоге установки должны появится *,keyring файлы. Если они там появились, то нам необходимо перенести конфиг и эти файлы на все ноды командой:
|
ceph-deploy admin ceph01 ceph02 ceph03 |
Далее разворачиваем mgr ноды:
|
ceph-deploy mgr create ceph01 ceph02 ceph03 |
После чего деплоим OSD на нодах:
|
ceph-deploy osd create --data /dev/sdc ceph01 ... ceph-deploy osd create --data /dev/sdc ceph02 ... ceph-deploy osd create --data /dev/sdc ceph03 ... |
После завершения процесса, проверяем состояние кластера, а так же состояние OSD:
Если кластер в состоянии ОК, а дерево OSD соответствует ожиданиям и все они в состоянии UP, то я вас поздравляю! Если же в процессе развертки появятся какие либо проблемы, жду вас в комментах!