ceph. часть 1

Thank you for reading this post, don't forget to subscribe!

1. В совре­мен­ных вер­си­ях ceph жела­тель­но все мани­пу­ля­ции с кла­сте­ром про­из­во­дить ути­ли­той ceph-deploy. На админ­ской ноде создай­те ката­лог /my-cluster, в кото­ром будут оби­тать фай­лы-клю­чи и кон­фи­гу­ра­ци­он­ный файл кла­сте­ра ceph.
mkdir /my-cluster && cd /my-cluster
Жела­тель­но коман­ду ceph-deploy исполь­зо­вать без sudo в учёт­ной запи­си ceph, нахо­дясь в ката­ло­ге /my-cluster админ­ской ноды, так вы избе­жи­те мно­же­ства проблем.
2. На всех нодах дол­жен быть уста­нов­лен OpenSSH sudo yum install openssh-server, так как ути­ли­та ceph-deploy будет с админ­ской ноды по вашим запро­сам выпол­нять нуж­ное на нодах.
3. На каж­дой ноде дол­жен быть создан поль­зо­ва­тель ceph и на каж­дой ноде долж­но быть сде­лан файл /etc/sudoers.d/ceph, поз­во­ля­ю­щий поль­зо­ва­те­лю ceph выпол­нять через sudo любые коман­ды без запро­са пароля.
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/ceph

4. Жела­тель­но на админ­ской ноде создать у поль­зо­ва­те­ля ceph файл ~/.ssh/config с содер­жи­мым, где cephN.test.ru это ноды ваше­го буду­ще­го кластера.

Име­на вида cephN.test.ru долж­ны резолвит­ся нор­маль­но в вашей сети все­ми нодами.
5. На админ­ской ноде нуж­но доба­вить репо­зи­то­рий ceph.

Добав­ля­ем репозиторий

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

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

6. На админ­ской ноде уста­но­ви­те ceph-deploy и ceph-common
yum update && yum install ceph-deploy ceph-common
7. Если не созда­ва­ли, то создай­те ключ с помо­щью ssh-keygen и пустой passphrase. С помо­щью ssh-copy-id ско­пи­руй­те ваш ключ на все ваши ноды, что­бы в даль­ней­шем была воз­мож­ность захо­дить на них без вво­да пароля.
8. Настрой­те син­хро­ни­за­цию вре­ме­ни сре­ди нод ваше­го кла­сте­ра. Это очень важно!
9. Все ноды кла­сте­ра ceph долж­ны иметь воз­мож­ность вытя­нуть свой ключ с помо­щью wget, поэто­му предо­ставь­те дан­ную воз­мож­ность, хотя бы через прокси.

 

Создание кластера

Начи­ная от про­сто­го и пере­хо­дя к слож­но­му, попро­бу­ем создать пер­вый кла­стер из трёх нод, на кото­рых будет запу­ще­ны мониторы.

Нахо­дясь в ката­ло­ге /my-cluster вызывайте

ceph-deploy new ceph2 ceph3 ceph4

Подроб­но­сти коман­ды мож­но полу­чить ceph-deploy new -h. По умол­ча­нию имя кла­сте­ра будет ceph. Если вы хоти­те на одном и том же обо­ру­до­ва­нии исполь­зо­вать несколь­ко кла­сте­ров, то для каж­до­го из них нуж­но зада­вать имя, исполь­зуя ceph-deploy --cluster {cluster-name} new ...

Пока нам не нуж­на воз­мож­ность мно­же­ства кла­сте­ров, поэто­му опу­стив пара­метр --cluster мы полу­чи­ли дефолт­ное имя ceph и файлы:

началь­ная кон­фи­гу­ра­ция кла­сте­ра ceph.conf,

жур­нал ceph.log,

клю­чи ceph.mon.keyring

Если что-то идёт не так, все­гда про­смат­ри­вай­те жур­нал ceph.log на пред­мет воз­мож­ных оши­бок. Если вы про­пу­сти­ли 7 пункт при­го­тов­ле­ния и не ско­пи­ро­ва­ли клю­чи на свои ноды, то знай­те, что ceph-deploy new копи­ру­ет клю­чи, но толь­ко на ука­зан­ные ему ноды-мони­то­ры. В буду­щих при­ме­рах мы будем добав­лять дру­гие ноды и не обя­за­тель­но мони­то­ры и поэто­му не сле­ду­ет про­пус­кать 7 пункт для новых нод.

Если на любом из эта­пов у вас воз­ник­нут про­бле­мы, то вы все­гда може­те начать сна­ча­ла. Для это­го вызы­вай­те для сво­их нод
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
ceph-deploy purge {ceph-node} [{ceph-node}]