Как построить кластер распределенного хранилища Ceph на CentOS 7
На этой странице
- Шаг 1. Настройка всех узлов
- Создание пользователя Ceph
- Установка и настройка NTP
- Установите Open-vm-tools
- Отключить SELinux
- Настроить файл hosts
- Установите ceph-deploy на узле ceph-admin.
- Создать новую конфигурацию кластера
- Установите Ceph на все узлы
- Добавление OSDS в кластер
Ceph — широко используемая платформа хранения данных с открытым исходным кодом. Он обеспечивает высокую производительность, надежность и масштабируемость. Бесплатная распределенная система хранения Ceph предоставляет интерфейс для хранения объектов, блоков и файлов. Ceph создан для предоставления распределенной системы хранения без единой точки отказа.
В этом руководстве я покажу вам, как установить и собрать кластер Ceph в CentOS 7. Для кластера Ceph требуются следующие компоненты Ceph:
- Ceph OSD (ceph-osd) — управляет хранилищем данных, репликацией данных и восстановлением. Кластер Ceph нуждается как минимум в двух OSD-серверах Ceph. Здесь я буду использовать три OSD-сервера CentOS 7.
- Монитор Ceph (ceph-mon) — отслеживает состояние кластера, карту OSD и карту CRUSH. Я буду использовать один сервер.
- Сервер метаданных Ceph (ceph-mds) — необходим для использования Ceph в качестве файловой системы.
Предпосылки
- 6 серверных узлов, на всех установлена ОС CentOS 7.
- Права root на всех узлах.
Серверы в этом руководстве будут использовать следующие имена хостов и IP-адреса.
IP-адрес hostname
ceph-admin 10.0.15.10
mon1 10.0.15.11
OSD1 10.0.15.21
OSD2 10.0.15.22
OSD3 10.0.15.23
Клиент 10.0.15.15Все узлы OSD нуждаются в двух разделах, одном корневом (/) разделе и пустом разделе, который позже используется в качестве хранилища данных Ceph.
Шаг 1. Настройте все узлы
На этом шаге мы настроим все 6 узлов, чтобы подготовить их к установке кластера Ceph. Вы должны следовать и выполнять все приведенные ниже команды на всех узлах. И убедитесь, что ssh-сервер установлен на всех узлах.
Создайте пользователя Ceph
Создайте нового пользователя с именем cephuser на всех узлах.
useradd -d /home/cephuser -m cephuser
passwd cephuserПосле создания нового пользователя нам нужно настроить sudo для cephuser. Он должен иметь возможность запускать команды от имени пользователя root и получать привилегии root без пароля.
Выполните приведенную ниже команду, чтобы создать файл sudoers для пользователя, и отредактируйте файл /etc/sudoers с помощью sed.
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoersУстановить и настроить NTP
Установите NTP для синхронизации даты и времени на всех узлах. Запустите команду ntpdate, чтобы установить дату и время по протоколу NTP, мы будем использовать сервер NTP пула us. Затем запустите и включите сервер NTP во время загрузки.
yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.serviceУстановите Open-VM-инструменты
Если вы используете все узлы внутри VMware, вам необходимо установить эту утилиту виртуализации. В противном случае пропустите этот шаг.
yum install -y open-vm-tools
Отключить SELinux
Отключите SELinux на всех узлах, отредактировав файл конфигурации SELinux с помощью редактора потоков sed.
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
Настроить файл хостов
Отредактируйте файл /etc/hosts на всех узлах с помощью редактора vim и добавьте строки с IP-адресом и именами хостов всех узлов кластера.
vim /etc/hosts
Вставьте конфигурацию ниже:
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Сохраните файл и выйдите из vim.
Теперь вы можете попробовать выполнить эхо-запрос между серверами с их именем хоста, чтобы проверить сетевое подключение. Пример:
ping -c 5 mon1
Шаг 2. Настройте SSH-сервер.
На этом шаге я настрою узел ceph-admin. Узел администратора используется для настройки узла монитора и узлов OSD. Войдите в узел ceph-admin и станьте cephuser.
ssh
su - cephuserУзел администратора используется для установки и настройки всех узлов кластера, поэтому пользователь на узле ceph-admin должен иметь привилегии для подключения ко всем узлам без пароля. Мы должны настроить доступ SSH без пароля для cephuser на узле ceph-admin.
Сгенерируйте ssh-ключи для cephuser.
ssh-keygen
оставьте парольную фразу пустой/пустой.
Затем создайте файл конфигурации для конфигурации ssh.
vim ~/.ssh/config
Вставьте конфигурацию ниже:
Host ceph-admin
Hostname ceph-admin
User cephuser
Host mon1
Hostname mon1
User cephuser
Host osd1
Hostname osd1
User cephuser
Host osd2
Hostname osd2
User cephuser
Host osd3
Hostname osd3
User cephuser
Host client
Hostname client
User cephuserСохраните файл.
Измените разрешение файла конфигурации.
chmod 644 ~/.ssh/config
Теперь добавьте ключ SSH ко всем узлам с помощью команды ssh-copy-id.
ssh-keyscan osd1 osd2 osd3 mon1 client >> ~/.ssh/known_hosts
ssh-copy-id osd1
ssh-copy-id osd2
ssh-copy-id osd3
ssh-copy-id mon1
ssh-copy-id clientВведите свой пароль cephuser по запросу.
Когда вы закончите, попробуйте получить доступ к серверу osd1 с узла ceph-admin.
ssh osd1
Шаг 3 — Настройте Firewalld
Мы будем использовать Firewalld для защиты системы. На этом шаге мы включим firewald на всех узлах, а затем откроем порты, необходимые для ceph-admon, ceph-mon и ceph-osd.
Войдите в узел ceph-admin и запустите firewalld.
ssh
systemctl start firewalld
systemctl enable firewalldОткройте порт 80, 2003 и 4505-4506, а затем перезагрузите брандмауэр.
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2003/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent
sudo firewall-cmd --reloadС узла ceph-admin войдите в узел монитора mon1 и запустите firewalld.
ssh mon1
sudo systemctl start firewalld
sudo systemctl enable firewalldОткройте новый порт на узле монитора Ceph и перезагрузите брандмауэр.
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
sudo firewall-cmd --reloadНаконец, откройте порт 6800–7300 на каждом из узлов OSD — OSD1, OSD2 и OS3.
Войдите в каждый узел osd из узла ceph-admin.
ssh osd1
sudo systemctl start firewalld
sudo systemctl enable firewalldОткройте порты и перезагрузите брандмауэр.
sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
sudo firewall-cmd --reloadНастройка брандмауэра завершена.
Шаг 4 — Настройка узлов OSD Ceph
В этом руководстве у нас есть 3 узла OSD, и каждый узел имеет два раздела.
- /dev/sda для корневого раздела.
- /dev/sdb — это пустой раздел, в моем случае — 30 ГБ.
Мы будем использовать /dev/sdb для диска Ceph. Из узла ceph-admin войдите на все узлы OSD и отформатируйте раздел /dev/sdb с помощью XFS.
ssh osd1
ssh osd2
ssh osd3Проверьте раздел с помощью команды fdisk.
sudo fdisk -l /dev/sdb
Отформатируйте раздел /dev/sdb с файловой системой XFS и таблицей разделов GPT с помощью команды parted.
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs /dev/sdb -fТеперь проверьте раздел, и вы получите раздел xfs /dev/sdb.
sudo blkid -o value -s TYPE /dev/sdb
Шаг 5 — Создайте кластер Ceph
На этом шаге мы установим Ceph на все узлы с узла ceph-admin.
Войдите в узел ceph-admin.
ssh
su - cephuserУстановите ceph-deploy на узел ceph-admin
Добавьте репозиторий Ceph и установите инструмент развертывания Ceph ceph-deploy с помощью команды yum.
sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
sudo yum update -y && sudo yum install ceph-deploy -yУбедитесь, что все узлы обновлены.
После установки инструмента ceph-deploy создайте новый каталог для конфигурации кластера ceph.
Создать новую конфигурацию кластера
Создайте новый каталог кластера.
mkdir cluster
cd cluster/Затем создайте новую конфигурацию кластера с помощью команды ceph-deploy, определите узел монитора как mon1.
ceph-deploy new mon1
Команда сгенерирует файл конфигурации кластера Ceph ceph.conf в каталоге кластера.
Отредактируйте файл ceph.conf с помощью vim.
vim ceph.conf
В блоке [global] вставьте конфигурацию ниже.
# Your network address
public network = 10.0.15.0/24
osd pool default size = 2Сохраните файл и выйдите из vim.
Установите Ceph на все узлы
Теперь установите Ceph на все остальные узлы с узла ceph-admin. Это можно сделать одной командой.
ceph-deploy install ceph-admin mon1 osd1 osd2 osd3
Команда автоматически установит Ceph на все узлы: mon1, osd1-3 и ceph-admin — установка займет некоторое время.
Теперь разверните ceph-mon на узле mon1.
ceph-deploy mon create-initial
Команда создаст ключ монитора, проверит и получит ключи с помощью команды ceph.
ceph-deploy gatherkeys mon1
Добавление OSDS в кластер
Когда Ceph установлен на всех узлах, мы можем добавить демоны OSD в кластер. Демоны OSD создадут свои разделы данных и журналов на диске /dev/sdb.
Убедитесь, что раздел /dev/sdb доступен на всех узлах OSD.
ceph-deploy disk list osd1 osd2 osd3
Вы увидите диск /dev/sdb в формате XFS.
Затем удалите таблицы разделов /dev/sdb на всех узлах с параметром zap.
ceph-deploy disk zap osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb
Команда удалит все данные в /dev/sdb на узлах OSD Ceph.
Теперь подготовьте все узлы OSDS. Убедитесь, что в результатах нет ошибок.
ceph-deploy osd prepare osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb
Если вы видите, что osd1-3 готов к использованию OSD, значит, развертывание прошло успешно.
Активируйте OSD командой ниже:
ceph-deploy osd activate osd1:/dev/sdb1 osd2:/dev/sdb1 osd3:/dev/sdb1
Прежде чем продолжить, проверьте вывод на наличие ошибок. Теперь вы можете проверить sdb-диск на узлах OSD с помощью команды list.
ceph-deploy disk list osd1 osd2 osd3
В результате /dev/sdb теперь имеет два раздела:
- /dev/sdb1 — данные Ceph
- /dev/sdb2 — Журнал Ceph
Или вы можете проверить это непосредственно на узле OSD с помощью fdisk.
ssh osd1
sudo fdisk -l /dev/sdbЗатем разверните ключ управления на всех связанных узлах.
ceph-deploy admin ceph-admin mon1 osd1 osd2 osd3
Измените разрешение файла ключа, выполнив приведенную ниже команду на всех узлах.
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
Создан кластер Ceph на CentOS 7.
Шаг 6 — Тестирование установки Ceph
На шаге 4 мы установили и создали наш новый кластер Ceph, затем мы добавили в кластер узлы OSDS. Теперь мы можем протестировать кластер и убедиться в отсутствии ошибок в настройке кластера.
С узла ceph-admin войдите на сервер монитора ceph mon1.
ssh mon1
Выполните приведенную ниже команду, чтобы проверить работоспособность кластера.
sudo ceph health
Теперь проверьте состояние кластера.
sudo ceph -s
И вы должны увидеть результаты ниже:
Убедитесь, что работоспособность Ceph в порядке, и есть узел мониторинга mon1 с IP-адресом 10.0.15.11. Должно быть 3 сервера OSD, и все они должны быть запущены и работать, а также должен быть доступный диск размером около 75 ГБ — раздел Ceph Data 3x25 ГБ.
Поздравляем, вы успешно построили новый кластер Ceph.
В следующей части руководства по Ceph я покажу вам, как использовать Ceph в качестве блочного устройства или монтировать его как файловую систему.
Ссылка
- https://access.redhat.com/documentation/en/red-hat-ceph-storage/