Распределенная файловая система Ceph FS за 15 минут

от автора

image

Нам понадобится всего лишь несколько минут для того что бы поднять распределенную файловую систему Ceph FS

Краткая справка

Ceph — это open source разработка эластичного легко масштабируемого петабайтного хранилища. В основе лежит объединение дисковых пространств нескольких десятков серверов в объектное хранилище, что позволяет реализовать гибкую многократную псевдослучайную избыточность данных. Разработчики Ceph дополняют такое объектное хранилище еще тремя проектами:

  • RADOS Gateway — S3- и Swift-совместимый RESTful интерфейс
  • RBD — блочное устройство с поддержкой тонкого роста и снапшотами
  • Ceph FS — распределенная POSIX-совместимая файловая система

Описание примера

В моем небольшом примере я использую всего 3 сервера в качестве хранилища. В каждом сервере мне доступно 3 SATA диска: /dev/sda как системный и /dev/sdb и /dev/sdc под данные файловой системы Ceph FS. ОС в этом примере будет Ubuntu 12.04 LTS. Еще один сервер будет монтировать файловую систему, то есть по сути выступать клиентом. Используем уровень избыточности по-умолчанию, то есть две реплики одного блока.

На момент написания статьи разработчики предлагают два метода создания простых конфигураций — старый, используя mkcephfs или новый ceph-deploy. Для новых версий, начиная с ветки 0.6x (cuttlefish), уже рекомендуется использовать ceph-deploy. Но в данном примере я использую более ранний, стабильный релиз ветки 0.56.x (bobtail) применяя mkcephfs.

Сразу предупрежу — Ceph FS на данный момент все еще находится в препрадакшн статусе, но по активности сообщества этот проект называют одним из самых горячих среди software defined storage.

Приступим.

Шаг 0. Установка ОС

Выполняем минимальную установку. Дополнительно необходимо установить ntpdate и ваш любимый редактор, например vim.

aptitude update && aptitude install ntpdate vim 

Шаг 1. Инсталлируем пакеты Ceph

На каждую ноду кластера и клиент устанавливаем пакеты Ceph

wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add - echo deb http://ceph.com/debian-bobtail/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list aptitude update && aptitude install ceph 

Шаг 2. Создаем конфигурационный файл

На каждой ноде и клиенте создаем единый файл конфигурации /etc/ceph/ceph.conf

[global]         auth cluster required = cephx         auth service required = cephx         auth client required = cephx  [osd]         osd journal size = 2000         osd mkfs type = xfs         osd mkfs options xfs = -f -i size=2048         osd mount options xfs = rw,noatime,inode64  [mon.a]         host = node01         mon addr = 192.168.2.31:6789  [mon.b]         host = node02         mon addr = 192.168.2.32:6789  [mon.c]         host = node03         mon addr = 192.168.2.33:6789  [osd.0]         host = node01         devs = /dev/sdb  [osd.1]         host = node01         devs = /dev/sdc  [osd.2]         host = node02         devs = /dev/sdb  [osd.3]         host = node02         devs = /dev/sdc  [osd.4]         host = node03         devs = /dev/sdb  [osd.5]         host = node03         devs = /dev/sdc  [mds.a]         host = node01 

Делаем файл читаемым для всех

chmod 644 /etc/ceph/ceph.conf 

Шаг 3. Делаем безпарольный вход между нодами

Задаем рутовый пароль, генерируем ssh ключи без указания пассфразы

passwd root ssh-keygen 

Создаем ssh алиасы в /root/.ssh/config соответственно наименованию нод в вашем случае

Host node01         Hostname node01.ceph.labspace.studiogrizzly.com         User root Host node02         Hostname node02.ceph.labspace.studiogrizzly.com         User root Host node03         Hostname node03.ceph.labspace.studiogrizzly.com         User root 

Добавляем публичные ключи на соседние ноды кластера.

ssh-copy-id root@node02 ssh-copy-id root@node03 

Шаг 4. Разворачиваем кластер

Для начала подготовим необходимые диски к работе

mkfs -t xfs fs-options -f -i size=2048 /dev/sdb mkfs -t xfs fs-options -f -i size=2048 /dev/sdc 

Далее подготавливаем рабочие каталоги и монтируем диски соответственно нашему дизайну

Так для node01 выполним

mkdir -p /var/lib/ceph/osd/ceph-0 mkdir -p /var/lib/ceph/osd/ceph-1 mount /dev/sdb /var/lib/ceph/osd/ceph-0 -o noatime,inode64 mount /dev/sdc /var/lib/ceph/osd/ceph-1 -o noatime,inode64 

для node02

mkdir -p /var/lib/ceph/osd/ceph-2 mkdir -p /var/lib/ceph/osd/ceph-3 mount /dev/sdb /var/lib/ceph/osd/ceph-2 -o noatime,inode64 mount /dev/sdc /var/lib/ceph/osd/ceph-3 -o noatime,inode64 

и для node03

mkdir -p /var/lib/ceph/osd/ceph-4 mkdir -p /var/lib/ceph/osd/ceph-5 mount /dev/sdb /var/lib/ceph/osd/ceph-4 -o noatime,inode64 mount /dev/sdc /var/lib/ceph/osd/ceph-5 -o noatime,inode64 

И наконец, на node01 запускаем скрипт создания хранилища Ceph

mkcephfs -a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.keyring 

а затем скопируем ключ ceph.keyring на другие ноды кластера

scp /etc/ceph/ceph.keyring node02:/etc/ceph/ceph.keyring scp /etc/ceph/ceph.keyring node03:/etc/ceph/ceph.keyring 

и на клиентскую ноду, в моем случае — 192.168.2.39

scp /etc/ceph/ceph.keyring 192.168.2.39:/etc/ceph/ceph.keyring 

Ключам выставляем доступ на чтения

chmod 644 /etc/ceph/ceph.keyring 

Шаг 5. Запуск и статус

Благодаря безпарольному входу между нодами выполняем старт всего кластера с любой ноды

service ceph -a start 

Там же проверяем состояния кластера

ceph -s 

Наиболее ожидаемый статус при нормальной работе это HEALTH_OK

Со стороны клиента создаем каталог в необходимом месте, например /mnt/cephfs, парсим ключ для модуля ядра ceph и монтируем файловую систему

mkdir /mnt/cephfs ceph-authtool --name client.admin /etc/ceph/ceph.keyring --print-key | tee /etc/ceph/admin.secret mount -t ceph node01:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/admin.secret,noatime 

Послесловие

Вот таким образом получаем распределенную файловую систему Ceph FS всего за 15 минут. Вопросы производительности, безопасности и обслуживания требуют более детального погружения и это материал на отдельную статью, а то и не одну.

ссылка на оригинал статьи http://habrahabr.ru/post/179823/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *