Поиск по сайту:

Как построить кластер распределенного хранилища Ceph на CentOS 7


На этой странице

  1. Шаг 1. Настройка всех узлов
    1. Создание пользователя Ceph
    2. Установка и настройка NTP
    3. Установите Open-vm-tools
    4. Отключить SELinux
    5. Настроить файл hosts

    1. Установите ceph-deploy на узле ceph-admin.
    2. Создать новую конфигурацию кластера
    3. Установите Ceph на все узлы
    4. Добавление 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, и каждый узел имеет два раздела.

    1. /dev/sda для корневого раздела.
    2. /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 теперь имеет два раздела:

    1. /dev/sdb1 — данные Ceph
    2. /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/