CEPH - andyceo/documentation GitHub Wiki

====== CEPH ======

====== Архитектура системы ======

Трали-вали

====== Установка на Ubuntu 12.04 ======

Рекомендованная установка стабильного пакета на продакшн описана на сайте проекта здесь: http://ceph.com/docs/master/install/debian/ Установка для Debian/Ubuntu одинакова.

====== Как создать кластер на Ceph ======

Источник: http://ceph.com/docs/master/start/quick-start/

  • Устанавливаем пакеты
  • Создаем файл конфигурации: Выполните ''hostname -s'' в командной строке, чтобы получить имя вашего хоста. Затем, замените ''{hostname}'' в образце конфигурационного файла именем вашего хоста. Выполните ''ifconfig'' в командной строке, чтобы получить IP-адрес хоста. Затем, замените ''{ip-address}'' IP-адресом вашего хоста. Наконец, скопируйте содержимое изменененного конфигурационного файла и сохраните его в ''/etc/ceph/ceph.conf''. Этот файл настроит Ceph для работы монитора, двух OSD-демонов и одного сервера метаданных на вашем локальном компьютере.
  • Разверните конфигурацию
  • Стартуйте кластер: sudo service ceph start
  • Проверить здоровье: ceph health Если кластер возвращает ''HEALTH_OK'', вы можете начинать использовать ваш кластер.

После этого, чтобы протестировать кластер, надо сделать следующее:

  • Затем надо подобавлять еще мониторов, серверов метаданных и конечно еще OSD.
  • А также проверить, что все работает.
  • Вырубить первоначальный компьютер, с которого все начиналось - проверить, что с кластером все ок.

====== Конфигурация кластера ======

Ceph использует единый конфигурационный файл для определения членства в кластере, имен компьютеров, путей к устройствам, и настроек. По умолчанию он находится в ''/etc/ceph/ceph.conf''.

Конфигурационный файл спроектирован таким образом, что вы можете положить все, что нужно в один файл и скопировать его в неизмененном виде на все узлы кластера. Измененять файл конфигурации под каждый узел необязательно.

Разделы используются для определения того, какие демоны (или экземпляры демонов, например, 'osd0' или 'osd.0', 'mds.foo' и т.д.) существуют, и каковы параметры их запуска и работы. Точка '.' в имени экземпляра демона является необязательной. Для любого демона, настройки ищутся сначала в разделе демона, потом в разделах типа демонов, потом в глобальном разделе. Например, для osd0, мы ищем [osd0] и [osd.0], потом [osd], потом [global].

Следующие подстановки переменных позволяют определить много общих настроек в разделе [global] или типа демона (например, [osd]): $name - имя демона (например, 'osd.2', 'mds.foo', 'mon.1') $type - тип демона (например, 'osd', 'mds', 'mon') $id или $num - номер или имя демона (например, '2', 'foo', '1') $host - хост, к которому прикреплен демон

Замены используют синтаксис 'sh': вы можете использовать как '$name' или '${name}', в зависимости от того, следует ли переменная после буквенных или цифровых символов.

Имейте в виду, что даже если вы определите все параметры для данного демона в общем виде (например, в секциях [osd] и [global]), необходимо определить (возможно пустые) разделы для каждого экземпляра демона (например, 'osd0', 'mds.foo'), который вы хотите создать или запустить.

Главным является то, что каждый демон должен определить настройку "host = something", которая определяет, на каком хосте живет демон. Скрипт инициализации будет (по умолчанию) обращать внимание только на те экземпляры демона, которые соответствуют его имени хоста. Если указан параметр -a или --allhosts, то сценарий будет использовать ssh для запуска/остановки/чего-то еще демонов на всех хостах.

Пожалуйста, посмотрите простой пример ''(/etc/ceph/)sample.ceph.conf''.

===== Конфигурационные файлы, специфичные для каждой ноды =====

Вы также можете использовать разные conf-файлы на хостах, определяя параметры только для демонов, работающих на данном хосте, но это более сложно для поддержки. Единственной оговоркой является то, что конфигурационный файл на каждом компьютере должен включать в себя раздел демона монитора с настройкой 'mon addr', так что демон знает, как присоединиться к кластеру. (Все остальные настройки монитора могут отсутствовать, за исключением, конечно, тех хостов, на которых запущены демоны мониторов.)

===== Имена нод =====

Сервера метаданных (mds) и Мониторы (mon) можно называть как угодно, используя буквенно-цифровые символы. Серверы данных (ods) должны быть названы, используя упорядоченные целые числа: 1, 2, 3, 4...., n. Это потому, что идентификационный номер osd непосредственно используется в качестве индекса в ряде структур данных. Попытка назвать их, пропуская числа, или с предваряющими нулями, к сожалению, вызовет ошибку сегментации демона или его аварийный останов.

===== Авторизация Ceph =====

Ceph также поддерживает безопасную аутентификацию между узлами cephx, что сделает ваш кластер более безопасным.

Чтобы настроить аутентификацию, включите ее в ваш конфигурационный файл:

[global] auth supported = cephx debug ms = 0 keyring = /etc/ceph/keyring.bin

[mds] debug mds = 1 keyring = /etc/ceph/keyring.$name

[osd] osd data = /srv/ceph/osd$id keyring = /etc/ceph/keyring.$name debug osd = 1 debug filestore = 1

Теперь ваш кластер будет использовать безопасную аутентификацию.

Чтобы использовать команды 'ceph -s' и 'ceph -w', скопируйте файл ''admin_keyring.bin'' из папки данных ваших мониторов в ''/etc/ceph/keyring.bin''

===== Монтирование =====

Если cephx запущен, то Ceph использует безопасную атентификацию. При монтировании вы должны указать секрет или файл с секретом, а также имя:

mount -t ceph -o name=admin,secret= 1.2.3.4:/ /mnt/ceph

Или через секретный файл (этот способ рекомендуется):

mount -t ceph -o name=admin,secretfile= 1.2.3.4:/ /mnt/ceph

Где ''secretfile'' содержит только строку.

Секрет может быть получен из ''/etc/ceph/keyring.bin'':

root@client02:~# ceph-authtool -l /etc/ceph/keyring.bin client.admin key: AQAyuDVM5TUNABAAwTDDT9V9BY8yiCkeJ6s37w== auid: 0 caps: [mds] allow caps: [mon] allow * caps: [osd] allow * root@client02:~#

Или

ceph-authtool --print-key /etc/ceph/keyring.bin > /etc/ceph/secret chmod 600 /etc/ceph/secret

Т.к. ''/etc/fstab'' доступен на чтение всем, рекомендуется использовать файл с секретом, который доступен для чтения только для root.

Если вы получили сообщение: "entity client.admin not found", сделайте:

ceph auth get client.admin -o keyring.bin ceph-authtool --print-key keyring.bin

====== Проектирование кластера ======

Кластер Ceph состоит из нескольких различных частей: монитора (mons), узлов хранения (osds) и серверов метаданных (mds). Вы можете развернуть кластер, имея по одному экземпляру каждой части, но тогда у вас не будет никакой избыточности. Вот некоторые общие рекомендации по планированию развертывания кластера Ceph:

===== Ceph Object Storage Device (Ceph-OSD) - Устройство хранения объектов =====

OSD хранят фактические данные на диске. У вас должно быть по крайней мере два из них, если вы хотите какой-либо избыточности между узлами. Каждый "узел хранения" на самом деле является экземпляром демона Ceph-OSD, имеющим доступ на локальный диск или набор дисков. Можно иметь один демон Ceph-OSD на аппаратный узел, или развернуть несколько демонов Ceph-OSD, например, один демон на физический диск. Простейшим вариантом является использование одного демона Ceph-OSD на аппаратный узел и объединение дисков вместе.

Файловые системы: Ceph работает лучше при использовании Btrfs, но могут быть использованы и другие файловые системы, такие как ext3 и ext4. Btrfs обеспечивает следующие преимущества:

  • контрольные суммы и возможность соединять диски вместе без RAID
  • встроенное управление избыточностью данных
  • журнал Ceph будет работать лучше с Btrfs

Журнал: демон OSD использует журнал для быстрой потоковой записи на диск, тем самым сохраняя задержку записи низкой. NVRAM или SSD идеально подходят для этого, так как они имеют очень низкую латентность записи и, как правило, высокую пропускную способность. Вообще говоря, устройство журнала лишь должно быть достаточно большим для нескольких секунд устойчивой записи. Для н также может быть использован специальный раздел диска. Многие контроллеры RAID имеют NVRAM с резервным питанием от батареи, они также работают очень хорошо. Или, если необходимо, обычный файл на диске. По умолчанию размер журнала составляет 100 МБ. Для получения дополнительной информации см. Журнал OSD[ссылка].

Оборудование:

  • Много дисков
  • В идеале SSD или NVRAM для журнала или RAID контроллер с NVRAM с резервным питанием от батареи.
  • Много оперативной памяти, тем лучше кэширование файловой системы
  • Быстрая сеть

Сколько:

  • как можно больше.

===== Ceph Metadata Server (Ceph-MDS) - Сервер метаданных =====

Сервер метаданных (Ceph-MDS) выступает в качестве распределенного, согласованного (когерентного) кэша метаданных файловой системы. Ceph-MDS не хранит данные локально, все метаданные хранятся на диске с помощью узлов хранения.

Ceph-MDS демоны могут быть добавлены в кластер по мере необходимости, и нагрузка будет магическим образом сбалансирована между ними. Начните с 1 или 2, затем добавьте больше по мере необходимости.

Параметр max mds определяет, сколько экземпляров cmds являются активными. Любые дополнительные запущенные экземпляры переводятся в режим ожидания, и просыпаются, если один из активных демонов перестает отвечать на запросы.

Оборудование:

  • Много-много оперативной памяти
  • Быстрый процессор
  • Быстрая сеть (низкие задержки)

Сколько: *

  • 1 демона достаточно
  • 2 или более демонов необходимы для резервирования и балансировки нагрузки

Сервер метаданных выступает в качестве распределенного, согласованного кэша метаданных файловой системы.

===== Ceph Monitor (Ceph-MON) - Монитор =====

Демоны монитора обеспечивает централизированное управления кластером, его конфигурацией и состоянием. Это относительно легкие демоны. Данные хранятся в директории на локальной файловой системе хоста. Демонов Ceph-MON должно быть нечетное количество.

Оборудование:

  • Некоторое количество дискового пространства (несколько гигабайт в большинстве случаев)
  • Фиксированный сетевой адрес

Сколько:

  • 1 демона достаточно.
  • 2 не рекомендуется, поскольку вам понадобиться держать оба активными все время, что еще хуже, чем просто один.
  • 3 демона идеально подходит для большинства случаев.
  • Большее количество демонов может потребоваться для очень больших кластеров.

===== Рекомендации по проектированию кластера =====

  • Если у вас немного узлов, вы можете развернуть Ceph-MON, Ceph-MDS и Ceph-OSD на одном узле(ах).
  • Если у вас есть больше узлов, разверните Ceph-MDS и Ceph-MON на одном узле, и Ceph-OSD на узлах с дисками.
  • Если у Вас есть еще больше узлов, разделите Ceph-MDS, Ceph-MON, и Ceph-OSD на выделенные машины.

====== Ссылки ======

⚠️ **GitHub.com Fallback** ⚠️