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

Использование Ceph в качестве блочного устройства в CentOS 7


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

  1. Шаг 1. Настройка узла клиента Ceph
  2. Шаг 2. Настройка узла администрирования Ceph
  3. Шаг 3. Установите Ceph на клиентском узле.
  4. Шаг 4. Настройка и монтирование Ceph в качестве блочного устройства
  5. Шаг 5. Настройка RBD во время загрузки
  6. Справочник

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.keyring

    Ceph был установлен на клиентском узле.

    Шаг 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/