Использование Ceph в качестве блочного устройства в CentOS 7
На этой странице
- Шаг 1. Настройка узла клиента Ceph
- Шаг 2. Настройка узла администрирования Ceph
- Шаг 3. Установите Ceph на клиентском узле.
- Шаг 4. Настройка и монтирование Ceph в качестве блочного устройства
- Шаг 5. Настройка RBD во время загрузки
- Справочник
Ceph — это платформа хранения с открытым исходным кодом, обеспечивающая высокую производительность, надежность и масштабируемость. Это бесплатная распределенная система хранения, которую можно настроить без единой точки отказа. Ceph предоставляет интерфейс для хранения объектов, блоков и файлов.
Это вторая часть нашей серии учебных пособий по Ceph — нажмите здесь, чтобы просмотреть учебное пособие по Ceph I (настройка кластера Ceph в CentOS). Во второй части я пошагово проведу вас по установке и настройке клиента блочного устройства Ceph для использования Ceph в качестве файловой системы в CentOS 7.
Предпосылка
- Кластер Ceph — учебное пособие по Ceph I
- Клиентский сервер — CentOS 7 — имя хоста и IP-адрес
- 10.0.15.15 клиент
Шаг 1 — Настройка клиентского узла Ceph
В этом разделе мы настроим наш сервер CentOS 7 в качестве клиента Ceph. Мы настроим клиент Ceph как другой узел Ceph (mon-osd).
Войдите в клиентский узел eCph.
ssh 10.0.15.15
Добавьте нового cephuser и установите новый пароль для пользователя.
useradd -d /home/cephuser -m cephuser
passwd cephuserВключите sudo без пароля для cephuser, добавив новую конфигурацию в каталог sudoers.d.
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
chmod 0440 /etc/sudoers.d/cephuserПосле включения sudo без пароля для cephuser нам нужно отключить SELinux на клиентском узле.
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
Затем установите NTP и синхронизируйте системное время с помощью команды ntpdate. Затем запустите службу NTP.
yum install -y open-vm-tools
yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.serviceДобавьте конфигурацию хоста для всех узлов кластера ceph в файл /etc/hosts.
vim /etc/hosts
Это моя конфигурация из учебника по Ceph I.
10.0.15.10 ceph-admin
10.0.15.11 mon1
10.0.15.21 osd1
10.0.15.22 osd2
10.0.15.23 osd3
10.0.15.15 clientСохраните файл hosts и выйдите из редактора.
Шаг 2 — Настройка узла администратора Ceph
На первом этапе мы подготовили клиентский узел Ceph для установки ceph. Но нам все еще нужно настроить узел ceph-admin, чтобы иметь возможность управлять установкой Ceph на клиентском узле. Сейчас мы установим Ceph на клиентский узел из узла ceph-admin.
Войдите в узел ceph-admin.
ssh
su - cephuserОтредактируйте файл конфигурации ssh с помощью vim.
vim ~/.ssh/config
Добавьте новую конфигурацию клиентского узла в конец файла.
Host client
Hostname client
User cephuserСохраните файл конфигурации и выйдите из vim.
Затем отредактируйте файл /etc/hosts на узле ceph-admin.
sudo vim /etc/hosts
И добавьте имя хоста клиента и IP-адрес.
10.0.15.15 client
Сохраните /etc/hosts и выйдите из редактора.
Теперь мы можем добавить ключ SSH ceph-admin на клиентский узел.
ssh-keyscan client >> ~/.ssh/known_hosts
ssh-copy-id clientПри запросе введите свой пароль \cephuser\.
Попробуйте подключиться к серверу клиентского узла с помощью приведенной ниже команды, чтобы проверить соединение.
ssh client
Шаг 3 - Установите Ceph на клиентский узел
На этом шаге мы установим Ceph на клиентский узел (узел, который действует как клиентский узел) с узла ceph-admin.
Войдите в узел ceph-admin как root по ssh и станьте «cephuser» с помощью su.
ssh
su - cephuserПерейдите в каталог кластера Ceph, в нашем первом руководстве по Ceph мы использовали каталог кластера.
cd cluster/
Установите Ceph на клиентский узел с помощью ceph-deploy, а затем отправьте конфигурацию и ключ администратора на клиентский узел.
ceph-deploy install client
ceph-deploy admin clientУстановка Ceph займет некоторое время (зависит от сервера и скорости сети). По завершении задачи подключитесь к клиентскому узлу и измените разрешение ключа администратора.
ssh client
sudo chmod 644 /etc/ceph/ceph.client.admin.keyringCeph был установлен на клиентском узле.
Шаг 4 — Настройте и смонтируйте Ceph как блочное устройство
Ceph позволяет пользователям использовать кластер Ceph в качестве блочного устройства с тонким предоставлением. Мы можем смонтировать хранилище Ceph как обычный жесткий диск в нашей системе. Блочное хранилище Ceph или блочное хранилище Ceph RADOS (RBD) хранит образы блочных устройств как объект, оно автоматически разделяет и реплицирует наши данные в кластере Ceph. Ceph RBD был интегрирован с KVM, поэтому мы также можем использовать его в качестве блочного хранилища на различных платформах виртуализации, таких как OpenStack, Apache CLoudstack, Proxmox VE и т. д.
Перед созданием нового блочного устройства на клиентском узле мы должны проверить состояние кластера. Войдите в узел монитора Ceph и проверьте состояние кластера.
ssh mon1
sudo ceph -sУбедитесь, что состояние кластера HEALTH_OK, а pgmap активен и чист.
На этом этапе мы будем использовать Ceph в качестве блочного устройства или блочного хранилища на клиентском сервере с CentOS 7 в качестве операционной системы клиентского узла. Из узла ceph-admin подключитесь к узлу клиента с помощью ssh. Пароль не требуется, так как мы настроили вход без пароля для этого узла в первых главах.
ssh client
Ceph предоставляет команду rbd для управления образами блочных устройств rados. Мы можем создать новый образ, изменить его размер, создать моментальный снимок и экспортировать наши блочные устройства с помощью команды rbd.
Создайте новый образ rbd размером 40 ГБ, а затем проверьте, доступен ли disk01 в списке rbd.
rbd create disk01 --size 40960
rbd ls -lЗатем активируйте модуль ядра rbd.
sudo modprobe rbd
sudo rbd feature disable disk01 exclusive-lock object-map fast-diff deep-flattenТеперь сопоставьте образ disk01 с блочным устройством через модуль ядра rbd и убедитесь, что disk01 находится в списке сопоставляемых устройств.
sudo rbd map disk01
rbd showmappedМы видим, что образ disk01 был сопоставлен как устройство /dev/rbd0. Прежде чем использовать его для хранения данных, мы должны отформатировать этот образ disk01 с помощью команды mkfs. Я буду использовать файловую систему XFS.
sudo mkfs.xfs /dev/rbd0
Смонтируйте /dev/rbd0 в каталог mnt. Для этой цели я буду использовать подкаталог mydisk.
sudo mkdir -p /mnt/mydisk
sudo mount /dev/rbd0 /mnt/mydiskБлочное устройство Ceph RBD или RADOS настроено и смонтировано в системе. Проверьте правильность подключения устройства с помощью команды df.
df -hT
Использование Ceph в качестве блочного устройства в CentOS 7 прошло успешно.
Шаг 5 — Настройка RBD во время загрузки
Использование Ceph в качестве блочного устройства на клиентском узле CentOS 7 прошло успешно. Теперь мы настроим автоматическое подключение блочного устройства Ceph к системе. во время загрузки Нам нужно создать файл сервисов для автоматического монтирования RBD.
Создайте новый файл в каталоге /usr/local/bin для монтирования и размонтирования RBD disk01.
cd /usr/local/bin/
vim rbd-mountВставьте скрипт ниже:
#!/bin/bash
# Script Author: http://bryanapperson.com/
# Change with your pools name
export poolname=rbd
# CHange with your disk image name
export rbdimage=disk01
# Mount Directory
export mountpoint=/mnt/mydisk
# Image mount/unmount and pool are passed from the systems service as arguments
# Determine if we are mounting or unmounting
if [ "$1" == "m" ]; then
modprobe rbd
rbd feature disable $rbdimage exclusive-lock object-map fast-diff deep-flatten
rbd map $rbdimage --id admin --keyring /etc/ceph/ceph.client.admin.keyring
mkdir -p $mountpoint
mount /dev/rbd/$poolname/$rbdimage $mountpoint
fi
if [ "$1" == "u" ]; then
umount $mountpoint
rbd unmap /dev/rbd/$poolname/$rbdimage
fiСохраните файл и выйдите из vim, затем сделайте его исполняемым с помощью chmod.
chmod +x rbd-mount
Затем перейдите в каталог systemd и создайте файл службы.
cd /etc/systemd/system/
vim rbd-mount.serviceВставьте конфигурацию службы ниже:
[Unit]
Description=RADOS block device mapping for $rbdimage in pool $poolname"
Conflicts=shutdown.target
Wants=network-online.target
After=NetworkManager-wait-online.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/rbd-mount m
ExecStop=/usr/local/bin/rbd-mount u
[Install]
WantedBy=multi-user.targetСохраните файл и выйдите из vim.
Перезагрузите файлы systemd и включите службу rbd-mount для запуска во время загрузки.
systemctl daemon-reload
systemctl enable rbd-mount.serviceЕсли вы перезагрузите клиентский узел сейчас, rbd disk01 будет автоматически подключен к каталогу /mnt/mydisk.
Ссылка
- http://bryanapperson.com/blog/mounting-rbd-at-boot-under-centos-7/