Ceph. Установка на одной ноде без репликации — различия между версиями
Строка 2: | Строка 2: | ||
== Подготовка системы == | == Подготовка системы == | ||
− | + | Обновление пакетов: | |
<pre>yum -y update</pre> | <pre>yum -y update</pre> | ||
− | |||
− | |||
Для корректной работы Ceph требуется, чтобы на нодах кластера было одинаковое время, поэтому на всех серверах настраиваем синхронизацию последнего. | Для корректной работы Ceph требуется, чтобы на нодах кластера было одинаковое время, поэтому на всех серверах настраиваем синхронизацию последнего. | ||
Строка 16: | Строка 14: | ||
== Настройки файрвола == | == Настройки файрвола == | ||
+ | |||
Отключаем firewalld и SELinux | Отключаем firewalld и SELinux | ||
<pre>systemctl stop firewalld | <pre>systemctl stop firewalld | ||
Строка 24: | Строка 23: | ||
Имя хоста должно совпадать с доменным именем | Имя хоста должно совпадать с доменным именем | ||
− | <pre>hostnamectl set-hostname ceph- | + | <pre>hostnamectl set-hostname ceph-node</pre> |
Устанавливаем необходимые пакеты | Устанавливаем необходимые пакеты | ||
Строка 47: | Строка 46: | ||
Генерируем ключ следующей командой и копируем на ноды будущего кластера: | Генерируем ключ следующей командой и копируем на ноды будущего кластера: | ||
<pre>ssh-keygen | <pre>ssh-keygen | ||
− | ssh-copy-id ceph@ceph- | + | ssh-copy-id ceph@ceph-node</pre> |
+ | == Подготовка ceph-deploy == | ||
− | |||
Настраиваем репозиторий | Настраиваем репозиторий | ||
<pre>sudo rpm --import 'https://download.ceph.com/keys/release.asc'</pre> | <pre>sudo rpm --import 'https://download.ceph.com/keys/release.asc'</pre> | ||
Строка 85: | Строка 84: | ||
Создаем файлы конфигурации командой | Создаем файлы конфигурации командой | ||
− | <pre>ceph-deploy new ceph- | + | <pre>ceph-deploy new ceph-node</pre> |
В результате в директории ceph-cluster появится файл ceph.conf, в который необходимо добавить параметры кластера, отличающиеся от дефолтных. | В результате в директории ceph-cluster появится файл ceph.conf, в который необходимо добавить параметры кластера, отличающиеся от дефолтных. | ||
В частности ниже пример ceph.conf для одной ноды без репликации | В частности ниже пример ceph.conf для одной ноды без репликации | ||
Строка 91: | Строка 90: | ||
<pre>[global] | <pre>[global] | ||
fsid = 9564dca4-b183-43bb-8469-f74e33537580 | fsid = 9564dca4-b183-43bb-8469-f74e33537580 | ||
− | mon_initial_members = ceph- | + | mon_initial_members = ceph-node |
mon_host = 192.168.10.171 | mon_host = 192.168.10.171 | ||
auth_cluster_required = cephx | auth_cluster_required = cephx | ||
Строка 103: | Строка 102: | ||
== Деплой кластера == | == Деплой кластера == | ||
Устанавливаем необходимые пакеты на ноды | Устанавливаем необходимые пакеты на ноды | ||
− | <pre>ceph-deploy install --release nautilus ceph- | + | <pre>ceph-deploy install --release nautilus ceph-node</pre> |
Деплой мониторов (указанных в ceph.conf)и сбор ключей кластера | Деплой мониторов (указанных в ceph.conf)и сбор ключей кластера | ||
<pre>ceph-deploy mon create-initial</pre> | <pre>ceph-deploy mon create-initial</pre> | ||
Копирование конфигурационных файлов и ключа администратора ceph на ноды: | Копирование конфигурационных файлов и ключа администратора ceph на ноды: | ||
− | <pre>ceph-deploy admin ceph- | + | <pre>ceph-deploy admin ceph-node</pre> |
Деплой демона MGR (обязателен для версий luminous и выше) | Деплой демона MGR (обязателен для версий luminous и выше) | ||
− | <pre>ceph-deploy mgr create ceph- | + | <pre>ceph-deploy mgr create ceph-node</pre> |
Деплой демонов метаданных | Деплой демонов метаданных | ||
− | <pre>ceph-deploy mds create ceph- | + | <pre>ceph-deploy mds create ceph-node</pre> |
На этом этапе уже можно проверить статус кластера: | На этом этапе уже можно проверить статус кластера: | ||
<pre>ceph status</pre> | <pre>ceph status</pre> | ||
Строка 126: | Строка 125: | ||
Следующей командой можно получить список дисков на ноде | Следующей командой можно получить список дисков на ноде | ||
− | <pre>ceph-deploy disk list ceph- | + | <pre>ceph-deploy disk list ceph-node</pre> |
Деплой OSD на ноду: | Деплой OSD на ноду: | ||
− | <pre>ceph-deploy osd create --data /dev/sdb ceph- | + | <pre>ceph-deploy osd create --data /dev/sdb ceph-node </pre> |
Строка 142: | Строка 141: | ||
ceph dashboard create-self-signed-cert | ceph dashboard create-self-signed-cert | ||
ceph dashboard ac-user-create <username> <password> administrator</pre> | ceph dashboard ac-user-create <username> <password> administrator</pre> | ||
− | Дашборд будет доступен по адресу https://ceph- | + | Дашборд будет доступен по адресу https://ceph-node:8443 |
== Создание RBD == | == Создание RBD == | ||
Строка 160: | Строка 159: | ||
Создадим файл конфигурации. В котором укажем IP адреса серверов. На которых запущен демон MON | Создадим файл конфигурации. В котором укажем IP адреса серверов. На которых запущен демон MON | ||
<pre>cat << EOF >/etc/ceph/ceph.conf | <pre>cat << EOF >/etc/ceph/ceph.conf | ||
− | mon host = | + | mon host = <node-ipaddress> |
EOF</pre> | EOF</pre> | ||
Убедитесь, что на сервере master-1.s000002 есть файл /etc/ceph/ceph.client.user.keyring c ключом клиента user. В случае отсутствия его необходимо скопировать с любой из нод | Убедитесь, что на сервере master-1.s000002 есть файл /etc/ceph/ceph.client.user.keyring c ключом клиента user. В случае отсутствия его необходимо скопировать с любой из нод | ||
Строка 210: | Строка 209: | ||
Надо смонтировать корень cephfs с правами администратора и создать там каталог /data_path. | Надо смонтировать корень cephfs с правами администратора и создать там каталог /data_path. | ||
<pre>mkdir -p /mnt/cephfs | <pre>mkdir -p /mnt/cephfs | ||
− | mount.ceph | + | mount.ceph <node-ipaddress>:/ /mnt/cephfs -o name=admin,secret=`ceph auth get-key client.admin` |
mkdir -p /mnt/cephfs/data_path</pre> | mkdir -p /mnt/cephfs/data_path</pre> | ||
Получим и запомним ключ доступа клиента fsuser. | Получим и запомним ключ доступа клиента fsuser. | ||
Строка 222: | Строка 221: | ||
Монтируем каталог /data_path из cephfs с правами клиента fsuser. | Монтируем каталог /data_path из cephfs с правами клиента fsuser. | ||
<pre>mkdir -p /mnt/cephfs | <pre>mkdir -p /mnt/cephfs | ||
− | mount.ceph | + | mount.ceph <node-ipaddress>:/data_path /mnt/cephfs -o name=fsuser,secretfile=/etc/ceph/fsuser.secret</pre> |
Строка 231: | Строка 230: | ||
Далее добавим запись в /etc/fstab (не забываем исправлять ip адреса серверов). | Далее добавим запись в /etc/fstab (не забываем исправлять ip адреса серверов). | ||
− | <pre>echo " | + | <pre>echo "<node-ipaddress>:/ /mnt/cephfs ceph name=fsuser,secretfile=/etc/ceph/fsuser.secret,_netdev,noatime 0 0">>/etc/fstab</pre> |
== Полезные команды == | == Полезные команды == |
Версия 10:11, 19 января 2021
Содержание
- 1 Подготовка системы
- 2 Настройки файрвола
- 3 Создание пользователя и доступа по ключу
- 4 Подготовка ceph-deploy
- 5 Деплой кластера
- 6 Удаление кластера
- 7 Создание OSD
- 8 Ceph кластер из одной ноды
- 9 Установка дашборда
- 10 Создание RBD
- 11 Подключение RBD
- 12 Автомонтирование RBD
- 13 Изменение размера RBD диска
- 14 Создание CephFS
- 15 Монтирование CephFS
- 16 Автомонтирование CephFS
- 17 Полезные команды
- 18 Материалы
Подготовка системы
Обновление пакетов:
yum -y update
Для корректной работы Ceph требуется, чтобы на нодах кластера было одинаковое время, поэтому на всех серверах настраиваем синхронизацию последнего.
yum -y install ntp python2-pip.noarch systemctl enable ntpd systemctl start ntpd
Задаем временную зону:
cp /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime
Настройки файрвола
Отключаем firewalld и SELinux
systemctl stop firewalld systemctl disable firewalld mcedit /etc/selinux/config SELINUX=disabled
Имя хоста должно совпадать с доменным именем
hostnamectl set-hostname ceph-node
Устанавливаем необходимые пакеты
yum -y install epel-release yum -y install mc net-tools htop
Создание пользователя и доступа по ключу
Создаем пользователя ceph на всех нодах кластера
useradd ceph -m passwd ceph
У созданной учетной записи должны быть привилегии суперпользователя. Для этого добавляем в файл /etc/sudoers.d/ceph:
ceph ALL = (root) NOPASSWD:ALL Defaults:ceph !requiretty
Задаем следующие права:
chmod 0440 /etc/sudoers.d/ceph
Заходим в систему под учетной записью ceph:
su - ceph
Генерируем ключ следующей командой и копируем на ноды будущего кластера:
ssh-keygen ssh-copy-id ceph@ceph-node
Подготовка ceph-deploy
Настраиваем репозиторий
sudo rpm --import 'https://download.ceph.com/keys/release.asc'
Файл /etc/yum.repos.d/ceph.repo приводим к виду:
[ceph] name=Ceph packages for $basearch baseurl=https://download.ceph.com/rpm-nautilus/el7/$basearch enabled=1 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-nautilus/el7//noarch enabled=1 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=https://download.ceph.com/rpm-nautilus/el7/SRPMS enabled=0 priority=2 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc
Устанавливаем ceph-deploy
yum -y install ceph-deploy
Создаем папку, в которой будут храниться логи, конфиги деплоя и прочее
mkdir ceph-cluster cd ceph-cluster
Создаем файлы конфигурации командой
ceph-deploy new ceph-node
В результате в директории ceph-cluster появится файл ceph.conf, в который необходимо добавить параметры кластера, отличающиеся от дефолтных. В частности ниже пример ceph.conf для одной ноды без репликации
[global] fsid = 9564dca4-b183-43bb-8469-f74e33537580 mon_initial_members = ceph-node mon_host = 192.168.10.171 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx osd_pool_default_size = 1 osd_pool_default_min_size = 1 osd_pool_default_pgp_num = 128 osd_pool_default_pg_num = 128
Деплой кластера
Устанавливаем необходимые пакеты на ноды
ceph-deploy install --release nautilus ceph-node
Деплой мониторов (указанных в ceph.conf)и сбор ключей кластера
ceph-deploy mon create-initial
Копирование конфигурационных файлов и ключа администратора ceph на ноды:
ceph-deploy admin ceph-node
Деплой демона MGR (обязателен для версий luminous и выше)
ceph-deploy mgr create ceph-node
Деплой демонов метаданных
ceph-deploy mds create ceph-node
На этом этапе уже можно проверить статус кластера:
ceph status
Удаление кластера
В случае, если что-то пошло не так при деплое - можно удалить ceph c нод при помощи ceph-deploy:
ceph-deploy purge {ceph-node} [{ceph-node}] ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys rm ceph.*
Создание OSD
Следующей командой можно получить список дисков на ноде
ceph-deploy disk list ceph-node
Деплой OSD на ноду:
ceph-deploy osd create --data /dev/sdb ceph-node
Ceph кластер из одной ноды
В случае деплоя кластера на одну ноду без репликации (osd_pool_default_size = 1, osd_pool_default_min_size = 1) команда сeph status будет возвращать HEALTH: WARN и предупреждение, что в пулах хранится только одна реплика данных. Для отключения данного триггера необходимо прописать команду
ceph config set global mon_warn_on_pool_no_redundancy false
После перезагрузки кластера станет HEALTH: OK
Установка дашборда
yum -y install ceph-mgr-dashboard ceph mgr module enable dashboard ceph dashboard create-self-signed-cert ceph dashboard ac-user-create <username> <password> administrator
Дашборд будет доступен по адресу https://ceph-node:8443
Создание RBD
Команды выполняем на любой ноде кластера. Создаем пул:
ceph osd pool create kube 32 erasure
Теперь создадим пользователя, дадим ему права на доступ к пулу и сохраним ключ доступа в файл
ceph auth get-or-create client.user mon 'allow r, allow command "osd blacklist"' osd 'allow rwx pool=kube' | tee /etc/ceph/ceph.client.user.keyring
Создадим диск в пуле:
rbd create disk1 --size 2G --pool kube
Подключение RBD
На клиенте устанавливаем необходимые пакеты
yum -y install centos-release-ceph-nautilus yum -y install ceph-common
Создадим файл конфигурации. В котором укажем IP адреса серверов. На которых запущен демон MON
cat << EOF >/etc/ceph/ceph.conf mon host = <node-ipaddress> EOF
Убедитесь, что на сервере master-1.s000002 есть файл /etc/ceph/ceph.client.user.keyring c ключом клиента user. В случае отсутствия его необходимо скопировать с любой из нод
cat /etc/ceph/ceph.client.user.keyring
Теперь попробуем map'ить диск на сервере (подключить как блочное устройство)
rbd map disk1 --pool kube --id user
Вы должны получить сообщение о том, что набор возможностей образа RBD не поддерживается ядром и надо отключить часть feature.
rbd: sysfs write failed RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable kube/disk1 object-map fast-diff deep-flatten".
Вводим команду из сообщения, чтобы отключить не поддерживаемые feature.
rbd feature disable kube/disk1 object-map fast-diff deep-flatten --id user
И map'им диск снова, создаем файловую систему и монтируем
rbd map disk1 --pool kube --id user mkfs.xfs /dev/rbd0 mkdir -p /mnt/disk1 mount /dev/rbd/kube/disk1 /mnt/disk1
Автомонтирование RBD
Внесите в файл /etc/ceph/rbdmap информацию о блочных устройствах, которые надо подключать при загрузке.
echo "kube/disk1 id=user,keyring=/etc/ceph/ceph.client.user.keyring" >> /etc/ceph/rbdmap
Включаем автозапуск скрипта rbdmap.
systemctl enable rbdmap systemctl start rbdmap
Добавляем монтирование файловой системы блочного устройства в /etc/fstab.
echo "/dev/rbd/kube/disk1 /mnt/disk1 ext4 noauto,noatime 0 0" >>/etc/fstab
Перезагрузите сервер, введите команду mount или df и убедитесь, что смонтирован только disk1 из пула kube.
Изменение размера RBD диска
Изменяем размер RBD выполнив команду на любой из нод кластера
bd resize disk1 --size 6G --pool kube
С ноды, куда примонтирован диск производим расширение файловой системы:
dmesg | grep -i capacity xfs_growfs -d /mnt/disk1/
Создание CephFS
Создаем пулы для данных и метаданных
ceph osd pool create cephfs_data 32 ceph osd pool create cephfs_metadata 32
Создаем файловую систему
ceph fs new cephfs cephfs_metadata cephfs_data
Убедимся, что cephfs создана. Команда
ceph fs ls
Создаем пользователя для доступа к cephfs.
ceph auth get-or-create client.fsuser mon 'allow r' mds 'allow r, allow rw path=/data_path' osd 'allow rw pool=cephfs_data'
Пользователь создан, ему выданы права чтение-запись на каталог /data_path, но сам каталог не создается автоматически. Надо смонтировать корень cephfs с правами администратора и создать там каталог /data_path.
mkdir -p /mnt/cephfs mount.ceph <node-ipaddress>:/ /mnt/cephfs -o name=admin,secret=`ceph auth get-key client.admin` mkdir -p /mnt/cephfs/data_path
Получим и запомним ключ доступа клиента fsuser.
ceph auth get-key client.fsuser
Монтирование CephFS
Теперь переходим на сервер к которому хотим подключить сephfs. Сначала положим ключ доступа клиента fsuser в файл /etc/ceph/fsuser.secret.
echo "<ключ доступа клиента fsuser>" >/etc/ceph/fsuser.secret
Монтируем каталог /data_path из cephfs с правами клиента fsuser.
mkdir -p /mnt/cephfs mount.ceph <node-ipaddress>:/data_path /mnt/cephfs -o name=fsuser,secretfile=/etc/ceph/fsuser.secret
Автомонтирование CephFS
Сначала убедимся, что у нас есть файл в котором лежит ключ доступа от пользователя fsuser
cat /etc/ceph/fsuser.secret
Далее добавим запись в /etc/fstab (не забываем исправлять ip адреса серверов).
echo "<node-ipaddress>:/ /mnt/cephfs ceph name=fsuser,secretfile=/etc/ceph/fsuser.secret,_netdev,noatime 0 0">>/etc/fstab
Полезные команды
Состояние кластера
ceph -s
Просмотр состояния кластер с выводом сообщений лога на экран (полезно например, чтобы увидеть статус перебалансировки данных при изменении количества OSD)
ceph -w
Получение списка пулов
ceph osd pool ls
Получение ключей пользователей ceph
ceph auth get-key client.user ceph auth get-key client.fsuser
Детализованный вывод по пулам
ceph osd dump | more
Удаление пула (сперва разрешаем удаление, затем удаляем)
ceph tell mon.\* injectargs '--mon-allow-pool-delete=true' ceph osd pool delete kube kube --yes-i-really-really-mean-it
Установка ceph-common на ubuntu
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - echo deb https://download.ceph.com/debian-nautilus/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list sudo apt update sudo apt install ceph-common
Материалы
https://ralph.blog.imixs.com/2020/02/28/howto-install-ceph-on-centos-7/ https://www.dmosk.ru/instruktions.php?object=ceph-centos7