Глава 2. Моментальное развертывание Ceph
В данной главе мы охватим:
-
Создание среды песочницы с использованием VirtualBox
-
Ceph RADOS
-
Историю и эволюцию Ceph
-
Увеличение вашего кластера Ceph в масштабах- добавление монитора и OSD
Содержание
Мы можем проверить развертывание Ceph в среде песочницы с использованием виртуальных машин Oracle VirtualBox. Эта виртуальная установка может помочь нам с исследованиями и проводить эксперименты с кластерами хранения Ceph, как будто мы работаем в реальной среде. Поскольку Ceph является определяемой программным обеспечением системой хранения с открытым исходным кодом разворачиваемой поверх общедоступного оборудования в промышленной среде, мы можем полностью имитировать функциональность среды Ceph на виртуальных машинах вместо того, чтобы использовать реальное общедоступное аппаратное обеспечение для наших целей тестирования.
{Прим. пер.: Отдавая должное методологической важности данного раздела, рады сообщить: у нас есть хорошие новости для совсем ленивых: VSM делает процесс установки Ceph исключительно простым. В качестве бонуса вы получаете очень ээфективное средство мониторинга и сопровождения.}
Oracle VirtualBox является свободно распространяемым программным обеспечением доступным на
http://www.virtualbox.org для Windows, Mac OS X, и Linux.
Мы должны выполнять системные требования для программного обеспечения VirtualBox, чтобы он моu функционировать должным образом
во время нашего тестирования. Тестовая среда Ceph, которую мы будем создавать на виртуальных машинах VirtualBox, будет использоваться
в остальных главах этой книги. Мы предполагаем, что сервер вашей операционной системы является вариантом Unix;
для Windows Microsoft, хосты используют абсолютный путь для запуска команды VBoxManage, который по умолчанию
является C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
.
Системные требования для VirtualBox зависят от количества и настроек работающих на нем виртуальных машин. Ваш хост VirtualBox должен требовать процессор x86-типа (Intel или AMD), несколько гигабайт памяти (для запуска трех виртуальных машин Ceph), и пару ГигаБайт пространства на жестком диске. Для начала мы должны загрузить http://www.virtualbox.org, а затем, после загрузки, выполнить процедуру установки.Мы также должны загрузить ISO образ сервера CentOS 6.4 с http://vault.centos.org/6.4/isos/.
Чтобы настроить нашу среду песочницы, мы создадим как минимум три виртуальные машины. Вы можете создать еще больше машин для кластера Ceph на базе аппаратной настройки на вашей машине. Сначала мы создаем отдельную виртуальную машину и устанавливаем на нее операционную систему. После этого, мы будем клонировать эту виртуальную машину два раза. Это сэкономит нам много времени и повысит производительность труда. Давайте начнем с выполнения следующих шагов, чтобы создать первую виртуальную машину:
Замечание | |
---|---|
Машина хоста VirtualBox, используемая в этой демонстрации является Mac OS X, которая является хостом UNIX-типа.
Если вы выполняете эти действия на машине без UNIX, то есть на базе хоста Windows, имейте в виду, что VirtualBox
hostonly имя адаптера будет чем-то вроде
|
-
После установки программного обеспечения VirtualBox создается сетевой адаптер, который вы можете использовать, или вы можете новый сетевой адаптер с заказанным IP:
Для хостов VirtualBox на базе UNIX # VBoxManage hostonlyif remove vboxnet1 # VBoxManage hostonlyif create # VBoxManage hostonlyif ipconfig vboxnet1 --ip 192.168.57.1 --netmask 255.255.255.0 Для хостов VirtualBox на базе Windows # VBoxManage.exe hostonlyif remove "VirtualBox Host-Only Ethernet Adapter" # VBoxManage.exe hostonlyif create # VBoxManage hostonlyif ipconfig "VirtualBox Host-Only Ethernet Adapter" --ip 192.168.57.1 --netmask 255.255.255.0
-
VirtualBox поставляется с менеджером GUI. Если ваша машина работает ОС Linux, она должна иметь установленную среду X- рабочего стола (Gnome или KDE). Откройте диспетчер Oracle VM VirtualBox и создайте новую виртуальную машину со следующими характеристиками с помощью графического интерфейса на основе мастера новой виртуальной машины (
New Virtual Machine Wizard
), или воспользуйтесь командами CLI, приводимые в конце каждого шага:-
1 ЦПУ
-
1024 МБ оперативной памяти
-
10ГБ x 4 жестких диска (один диск для ОС и три диска для Ceph OSD)
-
2 сетевых адаптера
-
CentOS 6.4 ISO подключенный к виртуальной машине
-
Создайте вашу первую виртуальную машину:
# VBoxManage createvm --name ceph-node1 --ostype RedHat_64 --register # VBoxManage modifyvm ceph-node1 --memory 1024 --nic1 nat --nic2 hostonly --hostonlyadapter2 vboxnet1
Для хостов с VirtualBox на базе Windows:
# VBoxManage.exe modifyvm ceph-node1 --memory 1024 --nic1 nat --nic2 hostonly --hostonlyadapter2 "VirtualBox HostOnly Ethernet Adapter"
-
Создайте CD-диск и подключите образ CentOS ISO к первой виртуальной машине:
# VBoxManage storagectl ceph-node1 --name "IDE Controller" --add ide --controller PIIX4 --hostiocache on --bootable on # VBoxManage storageattach ceph-node1 --storagectl "IDE Controller" --type dvddrive --port 0 --device 0 --medium CentOS-6.4-x86_64-bin-DVD1.iso
Замечание Убедитесь, что вы выполняете предыдущую команду из того же каталога, где вы сохранили образ CentOS ISO, или вы можете указать место, где вы его сохранили.
-
Создайте интерфейс SATA, жесткий диск операционной системы и подключите их к виртуальной машине; убедитесь, что хост VirtualBox имеет достаточно свободного пространства для создания дисков
vm
. Если нет, выберите диск хоста, который имеет свободное место:# VBoxManage storagectl ceph-node1 --name "SATA Controller" --add sata --controller IntelAHCI --hostiocache on --bootable on # VBoxManage createhd --filename OS-ceph-node1.vdi --size 10240 # VBoxManage storageattach ceph-node1 --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium OSceph-node1.vdi
-
Создайте интерфейс SATA, первый диск Ceph и подключите его к виртуальной машине:
# VBoxManage createhd --filename ceph-node1-osd1.vdi --size 10240 # VBoxManage storageattach ceph-node1 --storagectl "SATA Controller" --port 1 --device 0 --type hdd --medium cephnode1-osd1.vdi
-
Создайте интерфейс SATA, второй диск Ceph и подключите его к виртуальной машине:
# VBoxManage createhd --filename ceph-node1-osd2.vdi --size 10240 # VBoxManage storageattach ceph-node1 --storagectl "SATA Controller" --port 2 --device 0 --type hdd --medium cephnode1-osd2.vdi
-
Создайте интерфейс SATA, третий диск Ceph и подключите его к виртуальной машине:
# VBoxManage createhd --filename ceph-node1-osd3.vdi --size 10240 # VBoxManage storageattach ceph-node1 --storagectl "SATA Controller" --port 3 --device 0 --type hdd --medium cephnode1-osd3.vdi
-
-
Сейчас, в данной точке, мы готовы включить нашу виртуальную машину ceph-node1. Вы можете сделать это, выбрав
ceph-node1
VM в Менеджере Oracle VM VirtualBox, а затем нажав на кнопкуStart
, или вы можете запустить следующую команду:# VBoxManage startvm ceph-node1 --type gui
-
Как только вы стартуете свою виртуальную машину, она должна загрузиться из образа. После этого вы должны установить CentOS на виртуальную машину. Если вы еще не знакомы с установкой ОС Linux, вы можете следовать за рекомендациями документации с https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/index.html.
-
После успешной установки операционной системы измените настройки сетевой среды для этой машины:
-
Отредактируйте
/etc/sysconfig/network
и измените параметрhostname
HOSTNAME=ceph-node1
-
Отредактируйте файл
/etc/sysconfig/network-scripts/ifcfg-eth0
и добавьте:ONBOOT=yes BOOTPROTO=dhcp
-
Отредактируйте файл
/etc/sysconfig/network-scripts/ifcfg-eth1
и добавьте:ONBOOT=yes BOOTPROTO=static IPADDR=192.168.57.101 NETMASK=255.255.255.0
-
Отредактируйте файл
/etc/hosts
и добавьте:192.168.57.101 ceph-node1 192.168.57.102 ceph-node2 192.168.57.103 ceph-node3
-
-
После установки сетевых настроек перезапустите виртуальную машину и зарегистрируйтесь через SSH с вашей машины хоста. Также проверьте связь этого компьютера с интернетом, поскольку ему потребуется загрузка пакетов Ceph:
# ssh root@192.168.57.101
-
После того, как установка сети была выполнена корректно, вы должны остановить свою первую виртуальную машину чтобы сделать два клона вашей первой виртуальной машины. Если вы не выполните останов своей первой виртуальной машины, операция клонирования может закончиться неудачей.
-
Создайте клон
ceph-node1
с именемceph-node2
:# VBoxManage clonevm --name ceph-node2 ceph-node1 --register
-
Создайте клон
ceph-node1
с именемceph-node3
:# VBoxManage clonevm --name ceph-node3 ceph-node1 --register
-
-
После операции завершения клонирования вы можете запустить все три виртуальные машины:
# VBoxManage startvm ceph-node1 # VBoxManage startvm ceph-node2 # VBoxManage startvm ceph-node3
-
Выполните установку виртуальной машины
ceph-node2
с правильными именем хоста и сетевой настройкой:-
Отредактируйте
/etc/sysconfig/network
и измените параметрhostname
HOSTNAME=ceph-node2
-
Отредактируйте файл
/etc/sysconfig/network-scripts/ifcfg-<first interface name>
и добавьте:DEVICE=
ONBOOT=yes BOOTPROTO=dhcp HWADDR= -
Отредактируйте файл
/etc/sysconfig/network-scripts/ifcfg-<second interface name>
и добавьте:DEVICE=
ONBOOT=yes BOOTPROTO=static IPADDR=192.168.57.102 NETMASK=255.255.255.0 HWADDR= -
Отредактируйте файл
/etc/hosts
и добавьте:192.168.57.101 ceph-node1 192.168.57.102 ceph-node2 192.168.57.103 ceph-node3
По окончанию этих изменений вы должны перезагрузить вашу виртуальную машину чтобы ввести в действие новые имена хостов. Перезапуск также обновит ваши сетевые настройки.
-
-
Выполните установку виртуальной машины
ceph-node3
с правильными именем хоста и сетевой настройкой:-
Отредактируйте
/etc/sysconfig/network
и измените параметрhostname
HOSTNAME=ceph-node3
-
Отредактируйте файл
/etc/sysconfig/network-scripts/ifcfg-<first interface name>
и добавьте:DEVICE=
ONBOOT=yes BOOTPROTO=dhcp HWADDR= -
Отредактируйте файл
/etc/sysconfig/network-scripts/ifcfg-<second interface name>
и добавьте:DEVICE=
ONBOOT=yes BOOTPROTO=static IPADDR=192.168.57.103 NETMASK=255.255.255.0 HWADDR= -
Отредактируйте файл
/etc/hosts
и добавьте:192.168.57.101 ceph-node1 192.168.57.102 ceph-node2 192.168.57.103 ceph-node3
По окончанию этих изменений вы должны перезагрузить вашу виртуальную машину чтобы ввести в действие новые имена хостов. Перезапуск также обновит ваши сетевые настройки.
-
{Прим. пер.: предлагаем альтернативную процедуру для Ubuntu с Qemu/KVM:
-
Сначала необходимо убедиться, что оборудование поддерживает аппаратную виртуализацию, например, выполнив:
kvm-ok
Вам будет выведено сообщение о том поддерживает ли ваш центральный процессор (CPU) аппаратную виртуализацию или нет.
Замечание На большинстве компьютеров, чьи процессоры поддерживают виртуализацию, необходимо включать эту опцию в BIOS.
Можно узнать более подробную информацию, например, выполнив:
egrep '(vmx|svm)' /proc/cpuinfo
Пустой вывод означает отсутствие аппаратной поддержки виртуализации.
Существует несколько способов позволить виртуальной машине получить доступ во внешнюю сеть. По умолчанию виртуальная сеть настраивается как
usermode
, когда используется протоколSLIRP
, а сетевые данные маскируются с помощьюNAT
на сетевом интерфейсе компьютера при соединении с внешней сетью.Чтобы разрешить внешним компьютерам соединяться с сервисами виртуальной машины напрямую, требуется настроить мост (
bridge
). Это делает возможным соединения виртуальных интерфейсов с внешней сетью через физический интерфейс, позволяя им считать себя обычными компьютерами в нормальной сети.Для получения дополнительной информации по настройке сетевых мостов, например, изучите http://ubuntu.ru/ >Официальная документация>Руководство по Ubuntu Server 12.04>Сеть>Сетевые настройки>Строительство мостов.
Для установки необходимых пакетов введите в строке терминала:
sudo apt-get install kvm libvirt-bin python-virtinst bridge-utils
Добавляем пользователя, который будет управлять виртуальными машинами (по умолчанию
ubuntu:ubuntu
), обычно это пользователь, заведенный во время установки системы, под которым мы выполняем все текущие действия:sudo adduser $USER libvirtd
Проверяем, как установилась KVM, командой:
virsh -c qemu:///system list --all
Вывод консоли должен выглядеть примерно так:
$ virsh -c qemu:///system list --all Connecting to uri: qemu:///system Id Name State
Если увидели нечто подобное, можно продолжить.
-
В случае с виртуальными машинами графический пользовательский интерфейс (GUI) аналогичен использованию физической клавиатуры и мыши. Вместо установки GUI для соединения с консолью виртуальной машины по VNC (или, например, через Xming -Putty для Windows- рабочей станции) может быть использовано приложение
virt-manager
. Для установкиvirt-manager
из терминала введите:sudo apt-get install virt-manager
Как только виртуальная машина установлена и запущена, вы можете подсоединиться к ней командой (напомним, требуется поддержка графического интерфейса!):
virt-manager -c qemu:///system
Вы можете соединиться и к сервису libvirt, запущенном на другом компьютере, введя следующую команду в терминале:
virt-manager -c qemu+ssh://192.168.57.1/system
Замечание В последнем примере подразумевается, что SSH соединение между управляющей системой и
192.168.57.1
уже настроено и для аутентификации используются ключи SSH. SSH ключи обязательны, посколькуlibvirt
посылает запрос на ввод пароля другому процессу. С подробности настройки SSH можно ознакомиться на http://ubuntu.ru/ >Официальная документация>Руководство по Ubuntu Server 12.04>Удаленное администрирование>Сервер OpenSSH.Для просмотра виртуальных машин можно воспользоваться приложением
virt-viewer
. Для его установки введите в терминале:sudo apt-get install virt-viewer
Как только виртуальная машина установлена и запущена, вы можете подсоединиться к ней командой (напомним, требуется поддержка графического интерфейса!):
virt-viewer -c qemu:///system ceph-node1
Вы можете соединиться и к сервису libvirt, запущенном на другом компьютере, введя следующую команду в терминале:
virt-viewer -c qemu+ssh://192.168.57.1/system ceph-node1
Убедитесь, что
ceph-node1
соответствует реальному названию созданной машины!Напомним рекомендуемые параметры для виртуальных машин, уже приводившиеся в случае настройки VirtualBox:
-
1 ЦПУ
-
1024 МБ оперативной памяти
-
10ГБ x 4 жестких диска (один диск для ОС и три диска для Ceph OSD)
-
2 сетевых адаптера
-
ubuntu-14.04.2-server-amd64.iso ISO, подключенный к виртуальной машине.
Вместо ISO можно воспользоваться "джусом": http://ubuntu.ru/ >Официальная документация>Руководство по Ubuntu Server 12.04>Виртуализация>JeOS и vmbuilder.
ubuntu-vm-builder
, кстати, является альтернативным способом установки виртуальной машины, позволяющим также создать дополнительные разделы, выполнить после-установочные сценарии и пр.
Приведем также пошаговый процесс создания виртуальной машины из командной строки:
-
Воспользуемся для этого пакетом
virtinst
, выполним:sudo apt-get install virtinst
Существует несколько опций доступных при использовании
virt-install
. Например:sudo virt-install -n ceph-node1 -r 1024 \ --disk path=/var/lib/libvirt/images/web_devel.img,bus=virtio,size=10 -c \ jeos.iso --accelerate --network network=default,model=virtio \ --connect=qemu:///system --vnc --noautoconsole -v
Здесь:
-
-n ceph-node1
: имя новой виртуальной машины, в данном примереceph-node1
. -
–disk path=/var/lib/libvirt/images/ceph-node1.img,bus=virtio,size=4
: указывает путь к виртуальному диску, который может быть файлом, разделом или логическим томом. В этом примере файл с именемceph-node1.img
в каталоге/var/lib/libvirt/images/
размером 10 гигабайт, использующий virtio в качестве дисковой шины -
или, вместо диска:
-f ceph-node1
: файл, являющийся виртуальный жестким диском для гостевой ОС и-s 10
— объем этого диска в гигабайтах. -
-r 1024
: определяет размер памяти виртуальной машины в мегабайтах. -
c jeos.iso
: файл, используемый как виртуальный CDROM. Файл может быть как образом ISO, так и путем к устройству CDROM основной системы. -
–accelerate
: разрешает использование ускоряющих технологий ядра. Также можно указать версию ядра и тип ОС:--os-type=linux
и--os-variant=generic26
-
–network
: обеспечивает детали, касающиеся сетевого интерфейса виртуальной машины. -
–vnc
: предоставление гостевой виртуальной консоли через VNC. -
–noautoconsole
: не подключается автоматически к консоли виртуальной машины. -
-v
: создает полностью вируализированную гостевую систему.-w bridge:br0
: указываем использовать сетевой мост.После загрузки
virt-install
вы сможете подсоединиться к консоли виртуальной машины либо локально с использованием GUI, либо с помощью утилитыvirt-viewer
.
-
-
Приложение
sudo virt-clone -o ceph-node1 -n ceph-node2 -f /path/to/ceph-node2.img \ --connect=qemu:///systemvirt-clone
может быть использовано для копирования одной виртуальной машины в другую. Например:Здесь:
-
-o
: оригинальная виртуальная машина. -
-n
: имя новой виртуальной машины. -
-f
: путь к файлу, локальному тому или разделу для использования новой виртуальной машиной. -
–connect
: определяет к какому супервизору подключаться. -
также
-d
или–debug
: для помощи при решении проблем сvirt-clone
. -
-v
: создает полностью вируализированную гостевую систему.-w bridge:br0
: указываем использовать сетевой мост.После загрузки
virt-install
вы сможете подсоединиться к консоли виртуальной машины либо локально с использованием GUI, либо с помощью утилитыvirt-viewer
.
-
-
Для управления виртуальными машинами и
libvirt
из командной строки может быть использована утилитаvirsh
. Несколько примеров:-
Получить список запущенных виртуальных машин:
virsh -c qemu:///system list
-
Запустить виртуальную машину:
virsh -c qemu:///system start ceph-node1
-
Аналогично, запустить виртуальную машину в процессе загрузки:
virsh -c qemu:///system autostart ceph-node1
-
Перегрузить виртуальную машину:
virsh -c qemu:///system reboot ceph-node1
-
Состояние (state) виртуальной машины может быть сохранено в файл с целью возможного восстановления в дальнейшем. Приведенная команда сохранит состояние виртуальной машины в файл с именем, содержащем дату:
virsh -c qemu:///system save ceph-node1 ceph-node1-150622.state
Сохраненная копия машины больше не может быть запущена!
-
Сохраненная виртуальная машина может быть восстановлена такой командой:
virsh -c qemu:///system restore ceph-node1-150622.state
-
Выключить виртуальную машину:
virsh -c qemu:///system shutdown ceph-node1
-
Устройство чтения CDROM может быть подмонтировано к виртуальной машине следующей командой:
virsh -c qemu:///system attach-disk ceph-node1 /dev/cdrom /media/cdrom
-
Подключение образа SATA диска в гостевую машину:
-
Создайте определение пула на основе каталога
/var/lib/libvirt/ceph_images
:$ sudo virsh pool-define-as ceph-images dir - - - - "/var/lib/libvirt/ceph_images" Pool ceph_images defined
Проверьте наличие пула в списке:
$ sudo virsh pool-list --all Name State Autoatart ------------------------------------------- ceph_images inactive no default active yes
...Создайте локальный каталог и проверьте установленные права:
$ sudo virsh pool-build ceph_images Pool ceph_images built $ sudo ls -la "/var/lib/libvirt/ceph_images" total 0 drwx------ 2 root root 6 Jun 26 14:28 . drwxr-xr-x 8 root root 87 Jun 26 14:28 ..
Стартуйте пул хранения:
$ sudo virsh pool-build ceph_images Pool ceph_images started
Включите автозапуск и проверьте его состояние:
$ sudo virsh pool-autostart ceph_images Pool ceph_images marked as autostarted $ sudo virsh pool-list --all Name State Autoatart ------------------------------------------- ceph_images active yes default active yes ...
Проверьте настройки пула хранения:
$ sudo virsh pool-info ceph_images Name: ceph_images UUID: 3e389857-8096-44f3-b532-808e489a2de8 State: running Persistent: yes Autostart: yes Capacity: 49.22 GiB Allocation: 12.80 GiB Available 36.41 GiB
Подробнее: RedHat.com >Support>Product Documentation>Red Hat Enterprise Linux>7>Virtualization Deployment and Administration Guide>Creating a directory based storage pool. -
Создайте том:
$ sudo virsh vol-create-as ceph_images ceph-node1-osd1 10G Vol ceph-node1-osd1 created
Проверьте его состояние:
$ sudo virsh vol-list ceph_images Name Path ------------------------------------------------------------------------------ ceph-node1-osd1 /var/lib/libvirt/ceph_images/ceph-node1-osd1 $ sudo parted -s "/var/lib/libvirt/ceph_images/ceph-node1-osd1" print Error: /var/lib/libvirt/ceph_images/ceph-node1-osd1: unrecognised disk label Model: (file) Disk /var/lib/libvirt/ceph_images/ceph-node1-osd1: 10240MB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags:
-
Клонируйте том:
$ sudo virsh vol-clone --pool ceph_images ceph-node1-osd1 ceph-node1-osd2 Vol ceph-node1-osd2 cloned from ceph-node1-osd1 $ sudo virsh vol-clone --pool ceph_images ceph-node1-osd1 ceph-node1-osd3 Vol ceph-node1-osd3 cloned from ceph-node1-osd1
-
Подключите диски к виртуальной машине:
$ sudo virsh attach-disk ceph-node1 /var/lib/libvirt/ceph_images/ceph-node1-osd1 vdb --cache none Disk attached successfully
и т.д.
Подробнее: RedHat.com >Support>Product Documentation>Red Hat Enterprise Linux>7>Virtualization Deployment and Administration Guide>Creating volumes. Описание диска в виде xml- файла: http://libvirt.org/formatstorage.html. Руководство по настройке виртуализации на русском языке: http://help.ubuntu.ru/wiki/system>Руководство по Ubuntu Server 12.04>20. Виртуализация>1. libvirt.
-
...
-
В этой точке мы подготовили три виртуальные машины и убедились, что каждая из них взаимодействует с остальными. Они также должны иметь доступ в интернет для установки пакетов Ceph.
-
Для развертывания вашего первого кластера Ceph мы воспользуемся инструментом ceph-deploy
для установки и настройки Ceph на всех трех виртуальных машинах. Инструмент ceph-deploy является частью определяемого программным обеспечением
хранилища, который используется для упрощения развертывания и управления вашим кластером хранения Ceph.
Поскольку мы создали три виртуальные машины, которые выполняют CentOS 6.4 и имеем связь с интернетом, а также частные сетевые соединения, мы настроим эти машины как кластер хранения Ceph согласно следующей диаграмме:
-
Настройте
ceph-node1
для регистрации на остальных узлах через SSH без пароля. Выполните следующие команды наceph-node1
:-
При настройке SSH оставьте фразу-пароль {Прим. пер.: в тексте paraphrase, что, видимо, опечатка в passphrase} пустой и продолжайте с настройками по умолчанию:
# ssh-keygen
-
Скопируйте ID ключи SSH на
ceph-node2
иceph-node3
предоставляя их пароли root. После этого вы должны быть в состоянии войти на эти узлы без пароля:# ssh-copy-id ceph-node2
-
-
Установите и настройте EPEL на все узлы Ceph:
-
Установите EPEL, который является репозиторием для установки дополнительных пакетов для систем Linux посредством выполнения следующей команды на всех узлах Ceph:
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/ epel-release-6-8.noarch.rpm
-
Убедитесь, что параметр
baserul
разрешен в файле/etc/yum.repos.d/epel.repo
. Параметрbaseurl
определяет URL для дополнительных пакетов Linux. Также проверьте, что параметрmirrorlist
должен быть запрещен (присутствовать в виде комментария) в этом файле. Если параметрmirrorlist
включен в файлеepel.repo
, при установке могут наблюдаться проблемы. Выполните этот шаг на всех трех узлах.
-
-
Установите
ceph-deploy
на машинеceph-node1
выполнив следующую команду на узлеceph-node1
:# yum install ceph-deploy
-
Далее мы создаем кластер Ceph с применением
ceph-deploy
, путем выполнения следующей команды наceph-node1
:# ceph-deploy new ceph-node1 ## Create a directory for ceph # mkdir /etc/ceph # cd /etc/ceph
Подкоманда
new
ceph-deploy
разворачивает новый кластер именем кластераceph
, что является значением по умолчанию; она создает настройки кластера и файлы ключей. Просмотрите существующие рабочие каталоги, вы найдете в них файлыceph.conf
иceph.mon.keyring
Замечание При данном тестировании мы намеренно установки редакцию программного обеспечения Ceph Emperor (v0.72), которая не является последней версией. Позже в этой книге мы продемонстрируем модернизацию Emperor на редакцию Ceph Firefly.
-
Для установки двоичных кодов программного обеспечения Ceph на все машины при помощи ceph-deploy выполните следующую команду на
ceph-node1
:ceph-deploy install --release emperor ceph-node1 ceph-node2 cephnode3
-
Создайте ваш первый монитор на
ceph-node1
:# ceph-deploy mon create-initial
Если создание монитора завершилось успешно, проверьте состояние вашего кластера. Ваш кластер не будет работоспособным на этой стадии:
# ceph status
-
Создайте на этой машине устройство хранения объектов (
OSD, object storage device
) и добавьте его в кластер Ceph, выполнив следующие шаги:-
Выведите перечень дисков виртуальной машины:
# ceph-deploy disk list ceph-node1
В выводе команды тщательно определите диски (кроме дисков OS-разделов), на которых мы должны создать Ceph OSD. В нашем случае имена дисков, в идеале, должны быть SDB, SDC и SDD.
-
Подкоманда
disk zap
уничтожит существующую таблицу разделов и содержание диска. Перед запуском следующей команды убедитесь, что вы используете правильное имя дискового устройства.# ceph-deploy disk zap ceph-node1:sdb ceph-node1:sdc cephnode1:sdd
-
# ceph-deploy mon create-initial
-
Подкоманда
osd create
сначала подготовит диск, то есть сотрет диск с файловой системой, которой по умолчанию является xfs. Затем она активирует первый раздел диска в качестве раздела данных и второй раздел как журнал:# ceph-deploy osd create ceph-node1:sdb ceph-node1:sdc cephnode1:sdd
-
Проверьте состояние кластера для новых элементов OSD:
# ceph status
На данном этапе кластер не будет работоспособным. Нам нужно добавить несколько узлов в кластер Ceph так, чтобы он мог создать распределенное, реплицированное хранилище объектов, и, следовательно, стать работоспособным.
-
Инструмент ceph-deploy
сначала установит все зависимости
а затем двоичные файлы Ceph Emperor. После успешного завершения команды, проверьте версию Ceph
и состояние Ceph на всех узлах, а именно:
# ceph –v
Теперь у нас есть кластер с одним узлом. Чтобы сделать его распределенным, надежным кластером хранения,
мы должны выполнить его масштабирование. Для расширения кластера мы должны добавить больше узлов мониторов и OSD.
Согласно нашему плану мы теперь будем настраивать машины ceph-node2
и ceph-node3
как узлы мониторов и OSD.
Кластеру хранения данных Ceph для работы, по крайней мере, требуется один монитор. Для обеспечения высокой доступности
кластер хранения Ceph основывается на нечетном числе мониторов более одного, например, 3 или 5, для получения кворума.
Он использует алгоритм Paxos для поддержки кворума большинства. Поскольку мы уже имеем один запущенный монитор на
ceph-node1
, давайте создадим два дополнительных монитора для нашего
кластера Ceph:
-
Правила межсетевого экрана не должны блокировать связь между узлами мониторов Ceph. Если такие правила имеются, вы должны исправить эти правила межсетевого экрана чтобы мониторы могли формировать кворум. Поскольку в нашем случае мы имеем дело с тестовой установкой, давайте запретим межсетевые экраны на всех трех узлах. Мы запустим эти команды с машины
ceph-node1
, если специально не оговорено иное:# service iptables stop # chkconfig iptables off # ssh ceph-node2 service iptables stop # ssh ceph-node2 chkconfig iptables off # ssh ceph-node3 service iptables stop # ssh ceph-node3 chkconfig iptables off
-
Разверните монитор на
ceph-node2
иceph-node3
# ceph-deploy mon create ceph-node2 # ceph-deploy mon create ceph-node3
-
Операция развертывания должна быть успешной. Вы можете проверить свои вновь добавленные мониторы в состоянии Ceph:
[root@ceph-node1 ~]# ceph status cluster ffa7c0e4-6368-4032-88a4-5fb6a3fb383c health HEALTH_WARN 192 pgs degraded; 192 pgs stuck unclean monmap e9: 3 mons at {ceph-node1=192.168.57.101:6789/0,ceph-node2=192.168.57.102:6789/0,ceph-node3=192.168.57.103:6789/0}, election epoch 24, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3 osdmap e20: 3 osds: 3 up, 3 in pgmap v37: 192 pgs, 3 pools, 0 bytes data, 0 objects 106 MB used, 1520 MB / 15326 MB avail 192 active+degraded [root@ceph-node1 ~]# _
-
Вы можете столкнуться с предупредительными сообщениями, вызванными расфазировкой синхросигналов на новых узлах мониторов. Чтобы решить эту проблему, мы должны установить
Network Time Protocol (NTP)
на новых узлах монитора:# chkconfig ntpd on # ssh ceph-node2 chkconfig ntpd on # ssh ceph-node3 chkconfig ntpd on # ntpdate pool.ntp.org # ssh ceph-node2 ntpdate pool.ntp.org # ssh ceph-node3 ntpdate pool.ntp.org # /etc/init.d/ntpd start # ssh ceph-node2 /etc/init.d/ntpd start # ssh ceph-node3 /etc/init.d/ntpd start
В данном пункте мы имеем работающий кластер Ceph с тремя мониторами OSD. Теперь мы будем масштабировать наш кластер
и добавим дополнительные OSD. Для осуществления этой задачи мы будем выполнять последующие команды с машины
ceph-node2
, если специально
не оговорено иное:
# ceph-deploy disk list ceph-node2 ceph-node3 # ceph-deploy disk zap ceph-node2:sdb ceph-node2:sdc ceph-node2:sdd # ceph-deploy disk zap ceph-node3:sdb ceph-node3:sdc ceph-node3:sdd # ceph-deploy osd create ceph-node2:sdb ceph-node2:sdc ceph-node2:sdd # ceph-deploy osd create ceph-node3:sdb ceph-node3:sdc ceph-node3:sdd # ceph status
Проверьте состояние кластера для новых OSD. На данном этапе ваш кластер будет работоспособным с девятью работающими OSD в нем:
cluster ffa7c0e4-6368-4032-88a4-5fb6a3fb383c health HEALTH_OK monmap e9: 3 mons at {ceph-node1=192.168.57.101:6789/0,ceph-node2=192.168.57.102:6789/0,ceph-node3=192.168.57.103:6789/0}, election epoch 30, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3 osdmap e44: 9 osds: 9 up, 9 in pgmap v92: 192 pgs, 3 pools, 0 bytes data, 0 objects 342 MB used, 45638 MB / 45980 MB avail 192 active+clean
Определяемая программным обеспечением природа Ceph обеспечивает своим последователям большую гибкость. В отличие от других фирменных систем хранения, которые зависят от аппаратных средств, Ceph может быть легко установлена и опробована практически на любых доступных сегодня компьютерных системах. Кроме того, если получение физических машин является проблемой, вы можете использовать виртуальные машины для установки Ceph, как уже упоминалось в этой главе, но имейте в виду, что такая настройка должна использоваться только в целях тестирования.
В этой главе мы узнали, как создать набор виртуальных машин с применением программного обеспечение VirtualBox, а затем развернули Ceph в виде кластера из трех узлов с помощью инструмента ceph-deploy. Мы также добавили несколько OSD и машин мониторов в наш кластер для того, чтобы продемонстрировать его динамичное масштабирование. Мы рекомендуем Вам развернуть ваш собственный кластер Ceph, используя инструкции, данные в этой главе. В следующей главе мы опишем в деталях архитектуру Ceph, ее основные компоненты, а также то. как они взаимодействуют друг с другом, чтобы формировать кластер.
Btrfs
:XFS
-
Служба keystone
horizon
-
Веб- приложение инструментальной панели horizon
n-{name}
-
Службы nova
n-sch
-
Служба планировщика nova