Глава 2. Моментальное развертывание Ceph

В данной главе мы охватим:

Содержание

Создание среды песочницы с использованием VirtualBox
От нуля к Ceph- развертывание вашего первого кластера Ceph
Увеличение вашего кластера Ceph в масштабах- добавление монитора и OSD
Добавление монитора Ceph
Добавление OSD Ceph
Заключение

 Создание среды песочницы с использованием VirtualBox

Мы можем проверить развертывание 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 Host-Only Ethernet Adapter #<adapter number>. Пожалуйста, выполните следующие команды с правильными именами адаптеров. При использовании хостов Windows, вы можете проверить параметры сети VirtualBox в Oracle VM VirtualBox менеджере по навигации в меню File | VirtualBox Settings | Network | Host-only Networks.

  1. После установки программного обеспечения 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
     
  2. 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 подключенный к виртуальной машине

    Ниже приводится пошаговый процесс для создания виртуальной машины с применением команд CLI:
    1. Создайте вашу первую виртуальную машину:

      # 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"
      
    2. Создайте 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, или вы можете указать место, где вы его сохранили.

    3. Создайте интерфейс 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
      
    4. Создайте интерфейс 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
      
    5. Создайте интерфейс 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
      
    6. Создайте интерфейс 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
      
  3. Сейчас, в данной точке, мы готовы включить нашу виртуальную машину ceph-node1. Вы можете сделать это, выбрав ceph-node1 VM в Менеджере Oracle VM VirtualBox, а затем нажав на кнопку Start, или вы можете запустить следующую команду:

    # VBoxManage startvm ceph-node1 --type gui
  4. Как только вы стартуете свою виртуальную машину, она должна загрузиться из образа. После этого вы должны установить CentOS на виртуальную машину. Если вы еще не знакомы с установкой ОС Linux, вы можете следовать за рекомендациями документации с https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/index.html.

  5. После успешной установки операционной системы измените настройки сетевой среды для этой машины:

    • Отредактируйте /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

  6. После установки сетевых настроек перезапустите виртуальную машину и зарегистрируйтесь через SSH с вашей машины хоста. Также проверьте связь этого компьютера с интернетом, поскольку ему потребуется загрузка пакетов Ceph:

    	# ssh root@192.168.57.101
  7. После того, как установка сети была выполнена корректно, вы должны остановить свою первую виртуальную машину чтобы сделать два клона вашей первой виртуальной машины. Если вы не выполните останов своей первой виртуальной машины, операция клонирования может закончиться неудачей.

    • Создайте клон ceph-node1 с именем ceph-node2:

      	# VBoxManage clonevm --name ceph-node2 ceph-node1
      	--register
    • Создайте клон ceph-node1 с именем ceph-node3:

      	# VBoxManage clonevm --name ceph-node3 ceph-node1
      	--register
  8. После операции завершения клонирования вы можете запустить все три виртуальные машины:

    	# VBoxManage startvm ceph-node1
    	# VBoxManage startvm ceph-node2
    	# VBoxManage startvm ceph-node3
  9. Выполните установку виртуальной машины 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

    По окончанию этих изменений вы должны перезагрузить вашу виртуальную машину чтобы ввести в действие новые имена хостов. Перезапуск также обновит ваши сетевые настройки.

  10. Выполните установку виртуальной машины 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:

  1. Сначала необходимо убедиться, что оборудование поддерживает аппаратную виртуализацию, например, выполнив:

    	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

    Если увидели нечто подобное, можно продолжить.

  2. В случае с виртуальными машинами графический пользовательский интерфейс (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, кстати, является альтернативным способом установки виртуальной машины, позволяющим также создать дополнительные разделы, выполнить после-установочные сценарии и пр.

    Приведем также пошаговый процесс создания виртуальной машины из командной строки:

    1. Воспользуемся для этого пакетом 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

      Здесь:

      1. -n ceph-node1: имя новой виртуальной машины, в данном примере ceph-node1.

      2. –disk path=/var/lib/libvirt/images/ceph-node1.img,bus=virtio,size=4: указывает путь к виртуальному диску, который может быть файлом, разделом или логическим томом. В этом примере файл с именем ceph-node1.img в каталоге /var/lib/libvirt/images/ размером 10 гигабайт, использующий virtio в качестве дисковой шины

      3. или, вместо диска: -f ceph-node1: файл, являющийся виртуальный жестким диском для гостевой ОС и -s 10— объем этого диска в гигабайтах.

      4. -r 1024: определяет размер памяти виртуальной машины в мегабайтах.

      5. c jeos.iso: файл, используемый как виртуальный CDROM. Файл может быть как образом ISO, так и путем к устройству CDROM основной системы.

      6. –accelerate: разрешает использование ускоряющих технологий ядра. Также можно указать версию ядра и тип ОС: --os-type=linux и --os-variant=generic26

      7. –network: обеспечивает детали, касающиеся сетевого интерфейса виртуальной машины.

      8. –vnc: предоставление гостевой виртуальной консоли через VNC.

      9. –noautoconsole: не подключается автоматически к консоли виртуальной машины.

      10. -v: создает полностью вируализированную гостевую систему.

        -w bridge:br0: указываем использовать сетевой мост.

        После загрузки virt-install вы сможете подсоединиться к консоли виртуальной машины либо локально с использованием GUI, либо с помощью утилиты virt-viewer.

    2. Приложение virt-clone может быть использовано для копирования одной виртуальной машины в другую. Например:

      sudo virt-clone -o ceph-node1 -n ceph-node2 -f /path/to/ceph-node2.img \ --connect=qemu:///system

      Здесь:

      1. -o: оригинальная виртуальная машина.

      2. -n: имя новой виртуальной машины.

      3. -f: путь к файлу, локальному тому или разделу для использования новой виртуальной машиной.

      4. –connect: определяет к какому супервизору подключаться.

      5. также -d или –debug: для помощи при решении проблем с virt-clone.

      6. -v: создает полностью вируализированную гостевую систему.

        -w bridge:br0: указываем использовать сетевой мост.

        После загрузки virt-install вы сможете подсоединиться к консоли виртуальной машины либо локально с использованием GUI, либо с помощью утилиты virt-viewer.

    3. Для управления виртуальными машинами и libvirt из командной строки может быть использована утилита virsh. Несколько примеров:

      1. Получить список запущенных виртуальных машин:

        virsh -c qemu:///system list
      2. Запустить виртуальную машину:

        virsh -c qemu:///system start ceph-node1
      3. Аналогично, запустить виртуальную машину в процессе загрузки:

        virsh -c qemu:///system autostart ceph-node1
      4. Перегрузить виртуальную машину:

        virsh -c qemu:///system reboot ceph-node1
      5. Состояние (state) виртуальной машины может быть сохранено в файл с целью возможного восстановления в дальнейшем. Приведенная команда сохранит состояние виртуальной машины в файл с именем, содержащем дату:

        virsh -c qemu:///system save ceph-node1 ceph-node1-150622.state

        Сохраненная копия машины больше не может быть запущена!

      6. Сохраненная виртуальная машина может быть восстановлена такой командой:

        virsh -c qemu:///system restore ceph-node1-150622.state
      7. Выключить виртуальную машину:

        virsh -c qemu:///system shutdown ceph-node1
      8. Устройство чтения CDROM может быть подмонтировано к виртуальной машине следующей командой:

        virsh -c qemu:///system attach-disk ceph-node1 /dev/cdrom /media/cdrom
      9. Подключение образа 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

Для развертывания вашего первого кластера Ceph мы воспользуемся инструментом ceph-deploy для установки и настройки Ceph на всех трех виртуальных машинах. Инструмент ceph-deploy является частью определяемого программным обеспечением хранилища, который используется для упрощения развертывания и управления вашим кластером хранения Ceph.

Поскольку мы создали три виртуальные машины, которые выполняют CentOS 6.4 и имеем связь с интернетом, а также частные сетевые соединения, мы настроим эти машины как кластер хранения Ceph согласно следующей диаграмме:


  1. Настройте ceph-node1 для регистрации на остальных узлах через SSH без пароля. Выполните следующие команды на ceph-node1:

    • При настройке SSH оставьте фразу-пароль {Прим. пер.: в тексте paraphrase, что, видимо, опечатка в passphrase} пустой и продолжайте с настройками по умолчанию:

      	# ssh-keygen

    • Скопируйте ID ключи SSH на ceph-node2 и ceph-node3 предоставляя их пароли root. После этого вы должны быть в состоянии войти на эти узлы без пароля:

      	# ssh-copy-id ceph-node2

  2. Установите и настройте EPEL на все узлы Ceph:

    1. Установите EPEL, который является репозиторием для установки дополнительных пакетов для систем Linux посредством выполнения следующей команды на всех узлах Ceph:

      	# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/
      	epel-release-6-8.noarch.rpm
    2. Убедитесь, что параметр baserul разрешен в файле /etc/yum.repos.d/epel.repo. Параметр baseurl определяет URL для дополнительных пакетов Linux. Также проверьте, что параметр mirrorlist должен быть запрещен (присутствовать в виде комментария) в этом файле. Если параметр mirrorlist включен в файле epel.repo, при установке могут наблюдаться проблемы. Выполните этот шаг на всех трех узлах.

  3. Установите ceph-deploy на машине ceph-node1 выполнив следующую команду на узле ceph-node1:

    	# yum install ceph-deploy
  4. Далее мы создаем кластер 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.

  5. Для установки двоичных кодов программного обеспечения Ceph на все машины при помощи ceph-deploy выполните следующую команду на ceph-node1:

    	ceph-deploy install --release emperor ceph-node1 ceph-node2 cephnode3
  6. Инструмент ceph-deploy сначала установит все зависимости а затем двоичные файлы Ceph Emperor. После успешного завершения команды, проверьте версию Ceph и состояние Ceph на всех узлах, а именно:

    	# ceph –v
  7. Создайте ваш первый монитор на ceph-node1:

    	# ceph-deploy mon create-initial

    Если создание монитора завершилось успешно, проверьте состояние вашего кластера. Ваш кластер не будет работоспособным на этой стадии:

    	# ceph status

  8. Создайте на этой машине устройство хранения объектов (OSD, object storage device) и добавьте его в кластер Ceph, выполнив следующие шаги:

    1. Выведите перечень дисков виртуальной машины:

      	# ceph-deploy disk list ceph-node1

      В выводе команды тщательно определите диски (кроме дисков OS-разделов), на которых мы должны создать Ceph OSD. В нашем случае имена дисков, в идеале, должны быть SDB, SDC и SDD.

    2. Подкоманда disk zap уничтожит существующую таблицу разделов и содержание диска. Перед запуском следующей команды убедитесь, что вы используете правильное имя дискового устройства.

      	# ceph-deploy disk zap ceph-node1:sdb ceph-node1:sdc cephnode1:sdd
    3. 	# ceph-deploy mon create-initial
    4. Подкоманда osd create сначала подготовит диск, то есть сотрет диск с файловой системой, которой по умолчанию является xfs. Затем она активирует первый раздел диска в качестве раздела данных и второй раздел как журнал:

      	# ceph-deploy osd create ceph-node1:sdb ceph-node1:sdc cephnode1:sdd
    5. Проверьте состояние кластера для новых элементов OSD:

      	# ceph status

      На данном этапе кластер не будет работоспособным. Нам нужно добавить несколько узлов в кластер Ceph так, чтобы он мог создать распределенное, реплицированное хранилище объектов, и, следовательно, стать работоспособным.

 Увеличение вашего кластера Ceph в масштабах- добавление монитора и OSD

Теперь у нас есть кластер с одним узлом. Чтобы сделать его распределенным, надежным кластером хранения, мы должны выполнить его масштабирование. Для расширения кластера мы должны добавить больше узлов мониторов и OSD. Согласно нашему плану мы теперь будем настраивать машины ceph-node2 и ceph-node3 как узлы мониторов и OSD.

 Добавление монитора Ceph

Кластеру хранения данных Ceph для работы, по крайней мере, требуется один монитор. Для обеспечения высокой доступности кластер хранения Ceph основывается на нечетном числе мониторов более одного, например, 3 или 5, для получения кворума. Он использует алгоритм Paxos для поддержки кворума большинства. Поскольку мы уже имеем один запущенный монитор на ceph-node1, давайте создадим два дополнительных монитора для нашего кластера Ceph:

  1. Правила межсетевого экрана не должны блокировать связь между узлами мониторов 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
  2. Разверните монитор на ceph-node2 и ceph-node3

    	# ceph-deploy mon create ceph-node2
    	# ceph-deploy mon create ceph-node3
  3. Операция развертывания должна быть успешной. Вы можете проверить свои вновь добавленные мониторы в состоянии 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 ~]# _
  4. Вы можете столкнуться с предупредительными сообщениями, вызванными расфазировкой синхросигналов на новых узлах мониторов. Чтобы решить эту проблему, мы должны установить 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

 Добавление OSD Ceph

В данном пункте мы имеем работающий кластер 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