Практические задания

Практическое задание №1. Создание виртуальной машины в новом проекте

Задачи:

  1. Подключиться к облачной инфраструктуре.
  2. Убедиться в наличии доступных сетей.
  3. Создать виртуальную машину.
  4. Настройка правил безопасности.
  5. Узнать адрес виртуальной машины.
  6. Подключиться к ВМ по ssh
1. Подключиться к облачной инфраструктуре.

Необходимо перейти по ссылке https://cloud.resds.ru. Для подключения использовать домен AD, а также учётную запись пользователя, используемую для подключения к WiFi СПбГУТ

Для выполнения практических занятий необходимо переключиться на проект [GROUP]:[team]-lab:sandbox.


Рис. 1
2. Убедиться в наличии доступных сетей.

Открыть: проект -> сеть -> сети, и убедиться, что там есть сеть external-net (рис. 2)
Рис. 2

3. Сгенерировать ключевую пару.
При первом входе сгенерировать ключевую пару, для доступа к Linux виртуальным машинам. Открыть: Проект -> ключевая пара -> создать ключевую пару (рис. 3)
Рис. 3
В открывшемся окне (рис. 4) ввести имя ключевой пары и тип ключа(ssh-key)
Рис. 4
Ключ будет сохранен на ваш компьютер, он понадобится в дальнейшем.
4. Создать виртуальную машину.
Открыть меню Проект > вычислительные ресурсы > инстансы > запустить инстанс (рис. 5)
Рис. 5

В открывшемся окне (рис. 6), во вкладке подробности ввести имя инстанса и нажать Следующая > внизу страницы.
Рис. 6

В следующем меню (Источник) выбрать источник – образ, указать размер тома данных, выбрать удаление диска при удалении инстанса, выбрать необходимый вам образ из доступных (например Ubuntu-server-20.04:docker), и нажать справа от него стрелку вверх (рис. 7)
Рис. 7

В следующем меню (тип инстанса) определить объем выделяемых виртуальной машине вычислительных ресурсов. Для этого нужно выбрать один из предопределённых типов инстансов (например small), и нажать справа от него стрелку вверх (рис. 8).


Рис. 8

В меню сети выбрать нужную вам сеть, к которой будет подключена виртуальная машина (наличие сети было проверено в п.1). Если в инфраструктуре доступна только одна сеть, она будет выбрана автоматически, и выбирать ничего не нужно. (рис. 9)
Рис. 9

Затем перейти к меню Ключевая пара, выбрать созданную ключевую пару, и нажать справа от неё стрелку вверх. (рис. 10)
Рис. 10

После выполнения всех действий — нажать справа снизу кнопку «запустить инстанс» для создания и запуска виртуальной машины.
5. Настройка правил безопасности.
Для работы с инстансом необходимо разрешить ему сетевое взаимодействие (80/TCP – HTTP, 22/TCP – SSH, 51820/UDP - other): Для этого нужно открыть Проект > Сеть > Группы безопасности > выбрать группу безопасности default и нажать – управление правилами (рис. 11)
Рис. 11

В открывшемся меню добавить правило для входящего трафика (рис. 12)
Рис. 12

В открывшемся меню добавления правил (рис. 13), добавить правило для порта 80(tcp) Для этого выбрать:
Правило: «Настраиваемое правило TCP»
Направление: Входящий трафик
Порт: 80
Формат записи подключаемого диапазона адресов: CIDR
Сам подключаемый диапазон адресов: 0.0.0.0/0
Последняя запись означает разрешение подключения с любого адреса
После заполнения всех полей нажать кнопку «Добавить» в правом нижнем углу.
Рис. 13

То же самое необходимо сделать для всех остальных портов.
6. Узнать адрес виртуальной машины.
Для этого вернуться во вкладку инстансы и в поле ip адрес будет ip адрес вашего виртуального инстанса (рис 14). Этот адрес понадобится в дальнейшем, для подключения к нему и его настройки.
Рис. 14

7. Подключиться к ВМ по ssh
Сделать это можно, например, с помощью putty. Для этого необходимо перейти на страницу загрузки - Загрузка putty, выбрать msi установщик, так как понадобятся дополнительные компоненты) Открыть puttygen, нажать кнопку load и выбрать скачанный п п.2 ключ с расширением .pem Puttygen автоматически подставит все поля из ключа. Далее необходимо нажать кнопку save private key, и выбрать место, куда ключ будет сохранен (рис. 15).
Рис. 15

Открыть расположение сохраненного ключа, и два раза нажать на него, для запуска помощника авторизации pagent (pagent откроется в трее рабочего стола, пользователь не увидит запуск никаких приложений на рабочем столе) Запустить putty Открыть меню connection -> SSH -> Auth и в открывшемся меню в поле private key for authentication выбрать путь к сгенерированному ключу (рис. 16)
Рис. 16

Открыть заново вкладку session, ввести адрес нашей ВМ и нажать Open (рис. 17)
Рис. 17

В открывшемся окне терминала ввести имя пользователя cloudadmin. Это позволит получить удалённый доступ к вашей виртуальной машине.

Практическое задание №3.Создание сервиса облачного хранилища

Создание облачного сервиса.

Необходимо войти в панель управления облачной платформой – https://cloud.resds.ru/

В панели управления платформой необходимо выбрать проект [№ группы]-[№ бригады]:sandbox

1. Создание виртуального сервера.

Создать новый виртуальный сервер, на базе которого будет произведено создание образа собственного сервиса.
При создании сервиса задать образ - Ubuntu-20-Installer, при этом не создавая новый образ, и используя имеющийся для установки необходимых компонентов сервера (рис. 1).

Рис. 1 – выбор образа для установки

Тип инстанса выбрать Small
Выбрать сеть с внешним подключением (external-net)
После выбора сети появится возможность запуска инстанса - нажать «запустить инстанс» (справа снизу).

  1. Необходимо создать виртуальный диск, который будет являться образом нового сервиса. Для этого слева в панели выбрать меню – Диски -> Диски -> Создать диск (рис. 2)

    Рис. 2 – создание диска.
  2. В появившемся меню задать имя диска и размер (20GB) и нажать – создать диск( рис. 3) Все

    Рис. 3



6. Когда диск создан, необходимо подключить его к виртуальному серверу, на котором планируется создание нового сервиса. Для этого в раскрывающемся меню справа от нового диска выбрать «управление подключением дисков», а в открывшемся меню выбрать виртуальный сервер, к которому его необходимо подключить. (рис. 4)

Рис. 4. Подключение дисков к виртуальному серверу.


  1. Дальше можно переходить в меню установки нового сервиса. Для этого необходимо вернуться в меню инстансы(слева), и нажать на имя нашего нового инстанса, созданного в пункте 2. После этого необходимо открыть консоль этого инстанса, на вкладке – консоль. На самом деле перед вами установочное меню операционной системы ubuntu 20 в серверном исполнении, и возможностью установки сервисов.

  2. В данной работе установка подразумевает под собой установку параметров в режиме по умолчанию. Для навигации по установочному меню используются кнопки клавиатуры: вверх-вниз – для перемещения фокуса выделения по пунктам меню, enter – для нажатия на необходимый пункт, пробел – для выбора пунктов в меню со списком выбора, Tab – для переключения между группами пунктов выбора.

  3. в первом пункте по умолчанию выбран язык English – лучше его изменить на русский, для избегания проблем с локализацией. Для этого переместить фокус выделения на русский язык и нажать – enter.

  4. В следующем меню оставить английскую расскладку клавиатуры и нажать готово

  5. В следующем меню – сетевые соединения – оставить все параметры по умолчанию и нажать готово

  6. В меню ввода адреса прокси сервера оставить пустым и нажать – готово

  7. В в меню выбора зеркала для скачивания архивов ничего не менять и нажать готово

  8. В в меню настройки дисковых устройств убедиться, что выбран диск на 20 гигабайт (созданный в пункте 5), и если он и выбран – нажать готово (рис. 5)

    Рис. 5
  9. в меню детальной настройки диска оставить всё без изменений и нажать – готово (в появившемся окне с предупреждением – нажать продолжить)

  10. заполнить все поля имени пользователя и пароля (рис. 6).

Рис. 6

Server name Ваше имя Имя пользователя Пароль
cloudstorage labuser labuser labpass1!
  1. установить OpenSSH server. Для этого в меню выбора при мигающем курсоре нажать – пробел – рис. 7
Рис. 7
  1. В меню выбора функций выбрать nextcloud и нажать пробел. (рис. 8) После того, как выбор сделан – нажать готово.
Рис. 8

Если всё было сделано корректно, установка должна успешно начаться. Когда установка дойдёт до «downloading and installing security update», можно удалять инстанс, так как эти компоненты не обязательны, а их установка может занять длительное время (рис. 9).

Рис. 9

Для удаления необходимо в правом верхнем меню инстанса выбрать – удалить инстанс (рис. 10).

Рис. 10 Удаление виртуального сервера.

Теперь, когда виртуальный сервер удалён, можно приступать к развёртыванию собственного сервиса.

Развертывания из образа

В предыдущем шаге был подготовлен образ для развёртывания из него виртуального сервиса. Образ хорошо использовать по той причине, что его можно один раз создать, а потомиспользовать при необходимости развернуть конкретное приложение.

  1. необходимо сделать диск образа загрузочным. Для этого перейти в меню диски – диски – образ – редактировать диск (рис. 11)
Рис. 11
2. В открывшемся меню выбрать пункт – загрузочный, и нажать – отправить (рис. 12)
Рис. 12
3. Необходимо развернуть новый инстанс, выбрав источником диск, созданный в разделе 1
  1. При выборе источника диска выбрать меню диск, и выбрать созданный на предыдущих этапах диск для развёртывания (рис. 13)
Рис. 13

Выбрать тип виртуального сервера – small, и в качестве сети выбрать external-net

  1. После выборы сети – нажать запустить инстанс – всё, сервис готов, осталось дождаться, пока он запустится и подключиться к нему.
  2. Для подключения – в браузере набрать адрес виртуального сервиса (рис. 14).
Рис. 14
  1. После подключения в браузере - задать логин и пароль администратора системы (можно использовать labuser и labpass1!), снять опцию – установить рекомендуемые приложения и нажать – завершить установку (рис. 15)
Рис. 15
  1. После завершения настройки облачного сервиса вы сможете начать им пользоваться, он будет полностью под вашим контролем. Все файлы будут в меню файлы, вы сможете как загрузить их через браузер с вашего локального компьютера просто перетащив их, так и скачать их с облака.

P.S.
Nextcloud так же имеет приложения для различных платформ:
Для компьютера
Для android
Для iOS
При установке этого приложения вам нужно будет ввести адрес вашего сервиса, ваш логин, и ваш пароль который вы задали на этапе 6

Практическое задание №4.Wireguard

Для выполнения практических занятий необходимо переключиться на проект [GROUP]:[team]-lab:sandbox.

Пользовательская установка wireguard

Для начала надо развернуть новый инстанс (при ограничении ресурсов может потребоваться удалить все предыдущие инстансы) так, как это было сделанно в первой практической работе.

Зайти в режим привилегированного пользователя

sudo su

установить нужные пакеты:

apt update
apt install -y wireguard qrencode

Настройка системы

Разрешить перенаправление сетевых пакетов на уровне ядра. Для этого откройте файл /etc/sysctl.conf и добавьте в конец такие строки:

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

Затем необходимо выполнить команду sysctl -p чтобы система перечитала конфигурацию:

sysctl -p

Генерация ключей сервера

Для сервера надо создать приватный и публичный ключ. Эти ключи, потом надо будет записать в конфигурационный файл сервера и клиента, сами файлы ключей вам не нужны, поэтому можете создавать их где хотите, например, в домашней папке. Так же полученный ключ можно записать в переменную окружения:

wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key

Ключи созданы, утилита tee запишет их в файл, а также выведет на экран, что очень удобно для сохранения значения в переменную

Генерация ключей клиента

Аналогичным образом создаём ключи для клиента. Команда та же:

wg genkey | sudo tee client_private.key | wg pubkey | sudo tee client_public.key

Конфигурационный файл сервера

Конфигурационный файл сервера необходимо разместить по пути /etc/wireguard/wg0.conf и заполнить следующим образом(обратить внимание, что значение ключей в файле необходимо заменить):

vi /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.1/24 
ListenPort = 51820
PrivateKey = “содержимое файла server_private.key”
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
MTU = 1420
[Peer]
PublicKey = “содержимое файла client_public.key”
AllowedIPs = 10.10.10.2/32

Файл разделен на две секции:

В данном случае будет настроен сервер WireGuard для работы с IPv4, со следующими основными параметрами:

Секции Peer содержат настройки клиентов, которые могут подключится к серверу:

Теперь можно переходить к созданию конфигурационного файла непосредственно для клиента.

Конфигурационный файл клиента Конфигурационный файл клиента будет выглядеть примерно так:

vi client.conf
[Interface]
PrivateKey = “содержимое файла client_private.key”
Address = 10.10.10.2
DNS = 172.17.1.10
MTU = 1384
[Peer]
PublicKey = “содержимое файла server_public.key”
Endpoint = “ip адрес вашего инстанса”:51820
AllowedIPs = 0.0.0.0/0

Обратите внимание, что все ключи мы генерируем на сервере, а затем уже скидываем конфигурационный файл клиента на компьютер, который надо подключить к сети. Рассмотрим подробнее что за что отвечает:

Запуск сервера

Для запуска сервера используйте такую команду:

sudo systemctl start wg-quick@wg0

С помощью systemd можно настроить автозагрузку интерфейса:

sudo systemctl enable wg-quick@wg0

Подключение клиента

Вывести в консоль qr код, для подключения к vpn. Подключаться к ВПН с использованием клиента wireguard с мобильного телефона Для этого в консоли сгенерировать qr код:

qrencode -t ansiutf8 < client.conf

Далее необходимо проверить, что установленный сервер работает.

Инструкция по проверке подключения находится в конце данного руководства.

Установка wireguard из готового контейнера

Контейнер сам по себе является операционной системой минимального размера, с установленным внутри необходимым программным обеспечением. Контейнеры могут быть преднастроенными, и всё, что необходимо с ними сделать, это установить, передав нужные аргументы. Для работы с контейнерами чаще всего используются docker контейнеры, настроенные на необходимый режим работы путём передачи в них переменных окружения.

Перед установкой Docker нужно выполнить все необходимые настройки системы.

Установка Docker

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

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release

Далее необходимо скачать ключи доступа к репозиториям (одной командой):

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

После этого необходимо добавить нужные репозитории (одной командой):

echo   "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Добавив репозитории, можно установить все необходимые пакеты

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io nftables

Запуск контейнера

Как только все необходимые приготовления сделаны, необходимо запустить контейнер с нужными параметрами (одной командой):

sudo docker run -ti -d  --restart=always --network host \
--entrypoint "/wireguard-ui" -v /tmp/wireguard-ui:/data \
--privileged embarkstudios/wireguard-ui:latest  \
--data-dir=/data --wg-listen-port=51820 \
--wg-endpoint="«ip адрес вашего виртуального сервера»:51820" \
--wg-allowed-ips=0.0.0.0/0 --wg-dns="172.17.1.10" \
--wg-device-name="wg0" --listen-address=":80" \
--nat --nat-device="eth0" --client-ip-range="10.0.8.1/24"

Настройка VPN тоннелей

Как только контейнер запущен, необходимо подключиться к web интерфейсу VPN сервера для того, чтобы добавить клиентов для подключения. Для этого необходимо открыть в браузере адрес: http://«ip адрес вашего виртуального сервера» В открывшемся окне нажать + в правом нижнем углу

В появившемся окне ввести имя клиента и нажать create

Клиент для подключения создан, так же создан конфигурационный файл для клиента и QR код, по которому можно скачать содержимое этого конфигурационного файла После создания клиента VPN сервер готов к подключениям внешних клиентов, и можно переходить к проверке.

Автоматизация развёртывания облачного сервиса.

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

Добавлять в контейнер установку Docker не нужно, так как вы будете запускать из виртуального инстанса с предустановленным и запущенным Docker

Создание преднастроенной виртуальной машины

Необходимо создать виртуальную машину(в данной практической работе необходимо использовать образ ubuntu-server-20:docker), дополнительно заполнив раздел конфигурация В разделе конфигурация в текстовое поле ввести скрипт, автоматизирующий установку и развёртывание облачного сервиса. Сам скрипт автоматизации должен включать в себя запуск wireguard контейнера, и запись необходимых параметров в системные файлы.

Пример конфига

#!/bin/bash

cat << EOF | sudo tee -a /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
EOF

sudo sysctl -p

ip=$(ip a | grep 172.17 | awk '{print $2}' | awk -F "/" '{print $1}')

sudo docker run -ti -d -p 80:80 -p 51820:51820 --restart=always --network host --entrypoint "/wireguard-ui" -v /tmp/wireguard-ui:/data --privileged embarkstudios/wireguard-ui:latest --data-dir=/data --wg-listen-port=51820 --wg-endpoint="$ip:51820" --wg-allowed-ips=0.0.0.0/0 --wg-dns="172.17.1.10" --wg-device-name="wg0" --listen-address=":80" --nat --nat-device="eth0" --client-ip-range="10.0.8.1/24"

sudo reboot -h now

В конце данного скрипта должна быть инструкция на перезагрузку сервера

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

Настройка VPN тоннелей

Как только контейнер запущен, необходимо подключиться к web интерфейсу VPN сервера для того, чтобы добавить клиентов для подключения. Для этого необходимо открыть в браузере адрес:

http://«ip адрес вашего виртуального сервера»

В открывшемся окне нажать + в правом нижнем углу

В появившемся окне ввести имя клиента и нажать create

Клиент для подключения создан, так же создан конфигурационный файл для клиента и QR код, по которому можно скачать содержимое этого конфигурационного файла После создания клиента VPN сервер готов к подключениям внешних клиентов, и можно переходить к проверке.

Проверка

Для начала необходимо установить клиент для подключения к VPN на мобильный телефон:

Android IOS

Проверку необходимо выполнить со своего персонального устройства. Для начала убедиться, что вы работаете из сети СПбГУТ (Необходимо быть подключенным к WiFi сети) Перед подключением к VPN серверу необходимо проверить свой текущий ip адрес, под которым вас идентифицируют внешние службы. Сделать это можно открыв сайт ifconfig.resds.ru. На этой странице будет показано, c каким ip адресом вы обращайтесь как к этой странице.

Для проверки работоспособности VPN сервера необходимо к нему подключиться, и проверить, изменился ли ваш адрес, под которым вы обращаетесь к внешним службам. Если задание практической части было сделано правильно, то вы должны обращаться к внешним службам от адреса вашего VPN сервера.
Для подключения к VPN серверу необходимо:

  1. Открыть скачанное приложение WireGuard
  2. Нажать Add a tunnel для добавления VPN тоннеля
  3. Выбрать Create from QR code
  4. Отсканировать QR код с настройками вашего тоннеля
  5. В появившемся меню ввести произвольное имя тоннеля и нажать Save
  6. Подключиться к созданному тоннелю, нажав на переключатель в списке подключений Теперь снова необходимо открыть сайт ifconfig.resds.ru. Если значения изменились, можно сделать вывод о том, что ваш трафик идёт через сервер WireGuard

В случае возникновения проблем у WireGuard нет подробных логов, где можно было бы посмотреть какая ошибка произошла, а причин проблем может быть очень много. Чаще всего — это несоответствующие ключи, закрытый порт или неверный адрес сервера. Для исправления этих ошибок необходимо заново проверить все выполненные настройки.

Практическое задание №5-1. Запуск кластера Ceph

Схема виртуального лабораторного стенда

net-scheme.drawio-3.png

Для работы с облачной платформой необходимо прочитать инструкцию.

Переключиться на проект [GROUP]:[team]-lab:sandbox.

Подготовка системы

Запуск сети
Создание и настройка маршрутизатора
  1. Необходимо перейти в раздел Сеть, в пункте Сети, у вас должна быть доступна сеть external-net, вторую сеть необходимо создать самостоятельно. Название для сети выбираем произвольно, например my-internal-net. create-net-1.png
  2. Создаем подсеть в этой сети аналогично скриншоту ниже:
    • В Деталях подсети отключаем DHCP create-net-2.png
Создание и настройка портов для инстансов
  1. Заходим в созданную ранее сеть -> Порты:
    • Нажимаем Создать порт
    • Заполняем поля формы:
      • Имя: ceph-port-1
      • IP адрес или подсеть: Фиксированный IP-адрес
      • Фиксированный IP-адрес: 192.168.0.21
      • Выключить Безопасность порта create-net-6.png
    • Аналогично создаём порты ceph-port-2 и ceph-port-3 с адресами 192.168.0.22 и 192.168.0.23 соответственно
Создание инстансов
  1. Запустить 3 инстанса с характеристиками:

    • Имена инстансов: ceph-01, ceph-02, ceph-03;
    • Источник: Образ Ubuntu-server-20.04;
    • Тип инстанса: small;
    • Сети: external_net;
    • Сетевые порты: port-ceph-1, port-ceph-2, port-ceph-3 для каждого инстанса соответственно.
  2. Создать 3 диска по 2 Гб, подключить по одному диску на каждый инстанс. Список подключенных дисков может иметь следующий вид:

    create-disks.png

  3. На каждом инстансе добавить записи в файл /etc/hosts (после подстановки адресов, кавычек быть не должно):

    192.168.0.21 ceph-01
    192.168.0.22 ceph-02
    192.168.0.23 ceph-03
    
    "внешний адрес узла #1" ext-ceph-01
    "внешний адрес узла #2" ext-ceph-02
    "внешний адрес узла #3" ext-ceph-03
    
  4. Создать пару ключей на ceph-01 для соединения между инстансами(вводить никакие значения не требуется, на все вопросы оставить значение по умолчанию и нажать Enter)

    ssh-keygen
    

Далее задать пароли для пользователя cloudadmin на узлах ceph-01,ceph-02,ceph-03

sudo passwd cloudadmin

пароль может быть любой

и скопировать публичный ключ ceph-01 на каждый инстанс(в том числи и на сам ceph-01 для автоматизации):

ssh-copy-id ceph-01

на второй:

ssh-copy-id ceph-02

И на третий:

ssh-copy-id ceph-03

Запуск кластера Ceph

Установка Ceph

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

  1. Для этого на каждом узле выполнить следующие команды:

    sudo apt update
    sudo apt install -y ca-certificates
    wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
    sudo apt-add-repository 'deb https://download.ceph.com/debian-quincy/ focal main'
    sudo apt update && sudo apt install ceph ceph-mds -y
    
    • Либо использовать скрипт:
      Скрипт для запуска на ceph-01
      #!/bin/bash
      
      for NODE in ceph-01 ceph-02 ceph-03
      do
        ssh $NODE \
          "sudo apt update; \
          sudo apt install -y ca-certificates; \
          wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -; \
          sudo apt-add-repository 'deb https://download.ceph.com/debian-quincy/ focal main'; \
          sudo apt update && sudo apt install ceph ceph-mds -y"
      done
      
  2. Проверить статус установки можно с помощью команды:

    sudo ceph -v
    
Запуск демонов ceph-mon, ceph-mgr, ceph-osd, ceph-mds
Подготовка к запуску демонов

На узле ceph-01 необходимо выполнить следующие действия:

  1. Получить уникальный идентификатор для кластера (можно с помощью команды uuidgen):
    ad56ab6d-7f7a-4ee4-8b02-9c7ef1ddb438 - используется в качетсве примера

  2. Создать файл конфигурации для кластера по пути /etc/ceph/ceph.conf. Необходимо вставить свои значения параметров: fsid, адреса интерфейсов внешней сети.
    vi /etc/ceph/ceph.conf:

[global]
  fsid = ad56ab6d-7f7a-4ee4-8b02-9c7ef1ddb438
  mon initial members = ceph-01, ceph-02, ceph-03
  mon host = ext-ceph-01, ext-ceph-02, ext-ceph-03
  cluster network = 192.168.0.0/24
  public network = 172.17.32.0/19
  auth cluster required = cephx
  auth service required = cephx
  auth client required = cephx
  osd pool default size = 3
  osd pool default min size = 2
  osd pool default pg num = 64
  osd pool default pgp num = 64
  osd crush chooseleaf type = 1
  1. Создать связку ключей для своего кластера и сгенерировать секретный ключ монитора. Также создать связку ключей администратора, client.admin пользователя и добавить пользователя в связку ключей. Создать связку ключей bootstrap-osd, client.bootstrap-osd пользователя и добавить пользователя в связку ключей:

    sudo ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
    sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring \
     --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' \
     --cap mds 'allow *' --cap mgr 'allow *'
    sudo ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring \
     --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' \
     --cap mgr 'allow r'
    
  2. Добавить сгенерированные ключи в связку ceph.mon.keyring:

    sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
    sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
    
  3. Сгенерировать карту мониторов, используя имена узлов, внешние адреса (записи из файла /etc/hosts здесь не работают) и FSID. Сохранить как /tmp/monmap:

    monmaptool --create --fsid ad56ab6d-7f7a-4ee4-8b02-9c7ef1ddb438 \
     --add ceph-01 "внешний адрес узла #1" --add ceph-02 "внешний адрес узла #2" \
     --add ceph-03 "внешний адрес узла #3" /tmp/monmap
    
Запуск ceph-mon
  1. Необходимо скопировать файлы /etc/ceph/ceph.conf, /etc/ceph/ceph.client.admin.keyring, /tmp/monmap, /tmp/ceph.mon.keyring, /var/lib/ceph/bootstrap-osd/ceph.keyring с ceph-01 на ceph-02 и ceph-03.

    • Примеры выполнения данного пункта:

      Пошаговые действия с описанием
      1. Создадим папку /tmp/ceph_files и скопируем в неё все необходимые файлы:

        mkdir /tmp/ceph_files
        sudo cp /etc/ceph/ceph.conf /tmp/ceph_files/ceph.conf
        sudo cp /etc/ceph/ceph.client.admin.keyring /tmp/ceph_files/ceph.client.admin.keyring
        sudo cp /tmp/monmap /tmp/ceph_files/monmap
        sudo cp /tmp/ceph.mon.keyring /tmp/ceph_files/ceph.mon.keyring
        sudo cp /var/lib/ceph/bootstrap-osd/ceph.keyring /tmp/ceph_files/ceph.keyring
        
      2. Далее добавим общие права на чтение для всех файлов в папке и отправим эти файлы на ceph-02 и ceph-03. Удалим созданную ранее папку:

        sudo chmod 644 /tmp/ceph_files/*
        scp -r /tmp/ceph_files/ ceph-02:~
        scp -r /tmp/ceph_files/ ceph-03:~
        sudo rm -rf /tmp/ceph_files
        
      3. На ceph-02 и ceph-03 выполняем следующие команды (возвращаем файлам их исходные права, копируем их по нужным путям и удаляем полученные файлы:

        cd ~/ceph_files
        sudo chmod 600 ceph.client.admin.keyring ceph.mon.keyring ceph.keyring
        sudo cp ceph.conf /etc/ceph/ceph.conf
        sudo cp ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring
        sudo cp monmap /tmp/monmap
        sudo cp ceph.mon.keyring /tmp/ceph.mon.keyring
        sudo cp ceph.keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
        cd ..
        rm -rf ceph_files
        
      Cкрипт для запуска на ceph-01
      #!/bin/bash
      
      mkdir /tmp/ceph_files
      sudo cp /etc/ceph/ceph.conf /tmp/ceph_files/ceph.conf
      sudo cp /etc/ceph/ceph.client.admin.keyring /tmp/ceph_files/ceph.client.admin.keyring
      sudo cp /tmp/monmap /tmp/ceph_files/monmap
      sudo cp /tmp/ceph.mon.keyring /tmp/ceph_files/ceph.mon.keyring
      sudo cp /var/lib/ceph/bootstrap-osd/ceph.keyring /tmp/ceph_files/ceph.keyring
      
      sudo chmod 644 /tmp/ceph_files/*
      scp -r /tmp/ceph_files/ ceph-02:~
      scp -r /tmp/ceph_files ceph-03:~
      sudo rm -rf /tmp/ceph_files
      
      for NODE in ceph-02 ceph-03
      do
        ssh $NODE \
          "cd ~/ceph_files; \
          sudo chmod 600 ceph.client.admin.keyring ceph.mon.keyring ceph.keyring; \
          sudo cp ceph.conf /etc/ceph/ceph.conf; \
          sudo cp ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring; \
          sudo cp monmap /tmp/monmap; \
          sudo cp ceph.mon.keyring /tmp/ceph.mon.keyring; \
          sudo cp ceph.keyring /var/lib/ceph/bootstrap-osd/ceph.keyring; \
          cd ..; \
          rm -rf ceph_files"
      done
      
  2. Далее создадим каталог для данных мониторов на узлах. Заполним демоны монитора картой мониторов и набором ключей. Это можно сделать с помощью следующих команд на каждом хосте:

    sudo chown ceph:ceph /tmp/ceph.mon.keyring
    sudo -u ceph mkdir /var/lib/ceph/mon/ceph-$HOSTNAME
    sudo -u ceph ceph-mon --mkfs -i $HOSTNAME \
     --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
    sudo systemctl enable ceph-mon@$HOSTNAME --now
    
    • Либо использовать скрипт:
      Скрипт для запуска на ceph-01
      #!/bin/bash
      
      for NODE in ceph-01 ceph-02 ceph-03
      do
        ssh $NODE \
      	  "sudo chown ceph:ceph /tmp/ceph.mon.keyring; \
      	  sudo -u ceph mkdir /var/lib/ceph/mon/ceph-$NODE; \
      	  sudo -u ceph ceph-mon --mkfs -i $NODE \
      	   --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring; \
      	  sudo systemctl enable ceph-mon@$NODE --now"
      done
      
  3. Включим протокол MESSENGER V2, отключим небезопасное использование клиентами глобальных идентификаторов и установим вывод предупреждений о малом свободном пространстве на основном диске хоста при остакте в 10% (иначе без этих параметров кластер может иметь статус HEALTH_WARN). Также установим параметр, позволяющий удалять пулы, в значение true:

    sudo ceph mon enable-msgr2
    sudo ceph config set mon auth_allow_insecure_global_id_reclaim false
    sudo ceph config set mon mon_data_avail_warn 10
    sudo ceph config set mon mon_allow_pool_delete true
    
  4. Так как ещё не добавлено никаких устройств хранения, то в выводе состояния нас интересует только образовавшийся кворум мониторов:

    sudo ceph -s
    
Запуск ceph-mgr

На каждом узле, где вы запускаете демон ceph-mon, вы также должны настроить демон ceph-mgr. Сначала создадим ключ аутентификации для демона, поместим этот ключ в путь /var/lib/ceph/mgr/ceph-$HOSTNAME/keyring и запустим демон ceph-mgr.

  1. Для этого небоходимо выполнить данные действия на каждом хосте:

    sudo ceph auth get-or-create mgr.$HOSTNAME mon 'allow profile mgr' osd 'allow *' mds 'allow *'
    sudo ceph auth get-or-create mgr.$HOSTNAME > /tmp/mgr.admin.keyring
    sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-$HOSTNAME
    sudo cp /tmp/mgr.admin.keyring /var/lib/ceph/mgr/ceph-$HOSTNAME/keyring
    sudo chown -R ceph. /var/lib/ceph/mgr/ceph-$HOSTNAME
    sudo systemctl enable --now ceph-mgr@$HOSTNAME
    
    • Либо использовать скрипт:
      Скрипт для запуска на ceph-01
      #!/bin/bash
      
      for NODE in ceph-01 ceph-02 ceph-03
      do
        MGR_PATH=/var/lib/ceph/mgr/ceph-$NODE;
        ssh $NODE \
      	  "sudo ceph auth get-or-create mgr.$NODE \
      	   mon 'allow profile mgr' osd 'allow *' mds 'allow *'; \
      	  sudo ceph auth get-or-create mgr.$NODE > /tmp/mgr.admin.keyring; \
      	  sudo -u ceph mkdir $MGR_PATH; \
      	  sudo cp /tmp/mgr.admin.keyring $MGR_PATH/keyring; \
      	  sudo chown -R ceph. $MGR_PATH; \
      	  sudo systemctl enable --now ceph-mgr@$NODE"
      done
      
  2. На данном этапе мы можем увидеть статус запуска демонов менеджеров:

    sudo ceph -s
    
Запуск ceph-osd

Ceph предоставляет ceph-volume утилиту, которая может подготовить логический том, диск или раздел для использования с Ceph. Утилита ceph-volume создает идентификатор OSD путем увеличения индекса. Кроме того, ceph-volume добавит новый OSD в карту CRUSH хоста.

  1. На каждом хосте выполнить:

    sudo ceph-volume lvm create --data /dev/vdb
    
    • Либо использовать скрипт:
      Скрипт для запуска на ceph-01
      #!/bin/bash
      
      for NODE in ceph-01 ceph-02 ceph-03
      do
          ssh $NODE "sudo ceph-volume lvm create --data /dev/vdb"
      done
      
  2. На данном этапе кластер должен иметь статус HEALTH_OK:

    sudo ceph -s
    
  3. Также подключенные OSD можно получить с помощью команды:

    sudo ceph osd tree
    

Запуск услуг кластера

Создание пула и блочного устройства
  1. Создадим пул rbd и инициализируем его:

    sudo ceph osd pool create rbd 32
    sudo rbd pool init rbd
    
  2. Получить список созданных пулов с помощью команды:

    sudo ceph osd pool ls
    
  3. Создать блочное устройство в новом пуле:

    sudo rbd create --size 10G --pool rbd rbd01
    
Проверка
  1. Подключаем созданное устройство к ceph-01:

    sudo rbd map rbd01
    
  2. Получить список подлючённых устройств можно с помощью команды:

    sudo rbd showmapped
    
  3. Установим файловую систему на подключенное устройство и примонтируем его к каталогу /mnt/ceph_rbd:

    sudo mkfs.xfs /dev/rbd0
    sudo mkdir /mnt/ceph_rbd
    sudo mount /dev/rbd0 /mnt/ceph_rbd/
    
  4. На ceph-01 создать файл с произвольным текстом и поместить его в каталог /mnt/ceph_rbd. Затем отмонтировать блочное устройство:

    echo "my text for ceph rbd" | sudo tee /mnt/ceph_rbd/rbd.txt
    sudo umount /dev/rbd0
    sudo rbd unmap /dev/rbd/rbd/rbd01
    
  5. На ceph-02 подключить использованное ранее блочное устройство и примонтировать его к каталогу /mnt/ceph_rbd:

    sudo rbd map rbd01
    sudo mkdir /mnt/ceph_rbd
    sudo mount /dev/rbd0 /mnt/ceph_rbd/
    
  6. Проверить содержимое подключенного блочного устройства:

    ls /mnt/ceph_rbd/
    cat /mnt/ceph_rbd/rbd.txt
    
  7. Отмонтировать блочное устройство и удалить его, удалить пул:

    sudo umount /dev/rbd0
    sudo rbd unmap /dev/rbd/rbd/rbd01
    sudo rbd rm rbd01 -p rbd
    sudo ceph osd pool delete rbd rbd --yes-i-really-really-mean-it
    

Практическое задание №5-2. Установка клиентской ВМ и настройка динамической миграции на базе Corosync/Pacemaker

Для выполнения практических занятий необходимо переключиться на проект [GROUP]:[team]-lab:sandbox.

Схема виртуального лабораторного стенда

net-scheme.drawio-3.png

Запуск ВМ с использованием Ceph RBD

Интеграция Ceph и libvirt
Установка libvirt
sudo apt install -y qemu-kvm virtinst libvirt-clients libvirt-daemon-system
Добавление пула Ceph в libvirt
  1. Во-первых, нам нужно создать пул Ceph OSD специально для использования хранилища kvm, qemu, libvirt:

    sudo ceph osd pool create libvirt-pool 64 64
    sudo rbd pool init libvirt-pool
    
  2. Во-вторых, нам нужен пользователь Ceph для манипулирования только что созданным пулом.

    sudo ceph auth get-or-create "client.libvirt" mon "profile rbd" osd "profile rbd pool=libvirt-pool"
    

Выполнить пункты 3-6 на каждом узле

  1. Нам нужно добавить файл с секретом libvirt для аутентификации.
    uuidgen -> e6ca4cff-bf4f-4444-9089-8bd1304b3500 - для libvirt секрета, использовать один для всех хостов
    sudo vi /tmp/libvirt-secret.xml:

    <secret ephemeral='no' private='no'>
      <uuid>e6ca4cff-bf4f-4444-9089-8bd1304b3500</uuid>
      <usage type='ceph'>
        <name>client.libvirt secret</name>
      </usage>
    </secret>
    
  2. Встраиваем ключ авторизации пользователя Ceph в файл с секретом с указанным uuid.

    sudo virsh secret-define --file "/tmp/libvirt-secret.xml"
    sudo rm -f "/tmp/libvirt-secret.xml"
    sudo virsh secret-set-value --secret "e6ca4cff-bf4f-4444-9089-8bd1304b3500" \
     --base64 "$(sudo ceph auth get-key client.libvirt)"
    
  3. Нам также необходимо определить пул хранения RBD в libvirt. Сначала нам нужно создать файл определения пула хранения (вставить свои адреса внешних интерфейсов в теги host):
    vi /tmp/libvirt-rbd-pool.xml:

    <pool type="rbd">
      <name>libvirt-pool</name>
      <source>
        <name>libvirt-pool</name>
        <host name='ext-ceph-01' port='6789' />
        <host name='ext-ceph-02' port='6789' />
        <host name='ext-ceph-03' port='6789' />
        <auth username='libvirt' type='ceph'>
          <secret uuid='e6ca4cff-bf4f-4444-9089-8bd1304b3500'/>
        </auth>
      </source>
    </pool>
    
  4. Теперь мы можем определить и запустить пул.

    sudo virsh pool-define "/tmp/libvirt-rbd-pool.xml"
    sudo rm -f "/tmp/libvirt-rbd-pool.xml"
    sudo virsh pool-autostart "libvirt-pool"
    sudo virsh pool-start "libvirt-pool"
    
    • Проверить доступность созданного пула: sudo virsh pool-list
Запуск ВМ
  1. Скачать образ cirros и скопировать его по пути /tmp/cirros.img

    wget http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img
    sudo cp cirros-0.5.1-x86_64-disk.img /tmp/cirros.img
    
  2. Создать Ceph RBD для виртуальной машины:

    sudo qemu-img convert -p -t none /tmp/cirros.img rbd:libvirt-pool/cirros
    sudo virsh pool-refresh libvirt-pool
    
    • Проверить доступность созданного образа: sudo virsh vol-list libvirt-pool
  3. Создать ВМ:

    sudo virt-install --name Test-VM --graphics none \
      --vcpus 1 --memory 128 --disk "vol=libvirt-pool/cirros" \
      --import --autostart
    
  4. Проверить работоспособность запущенной ВМ:

    sudo virsh list --all
    sudo virsh console Test-VM
    

Настройка динамической миграции

Установка Pacemaker/Corosync
Запуск кластера
  1. Задать пароль пользователя hacluster на всех узлах (в примере используется пароль password):

    sudo passwd hacluster
    
  2. Отредактировать раздел nodelist файла /etc/corosync/corosync.conf (на одном из узлов):

    nodelist {
        node {
                name: ceph-01
                nodeid: 1
                ring0_addr: ceph-01
        }
        node {
                name: ceph-02
                nodeid: 2
                ring0_addr: ceph-02
        }
        node {
                name: ceph-03
                nodeid: 3
                ring0_addr: ceph-03
        }
    }
    
  3. С помощью pcs создать кластер (на одном из узлов):

    sudo pcs host auth ceph-01 ceph-02 ceph-03 -u hacluster -p password
    sudo pcs cluster setup newcluster ceph-01 ceph-02 ceph-03 --force
    sudo pcs cluster start --all
    
  4. Отключить fencing (в рамках работы он не рассматривается):

    sudo pcs property set stonith-enabled=false
    
  5. Включить автозапуск сервисов на всех трех машинах:

    sudo systemctl enable pacemaker corosync
    
  6. Просмотреть информацию о кластере и кворуме:

    sudo pcs status
    sudo corosync-quorumtool
    
Создание ресурса
  1. Создать дамп созданной ВМ и затем удалить её:

    sudo virsh dumpxml Test-VM > vm_conf.xml
    sudo virsh undefine Test-VM
    sudo virsh destroy Test-VM
    
  2. Скопировать дамп с ceph-01 на ceph-02 и ceph-03:

    scp vm_conf.xml ceph-02:~
    scp vm_conf.xml ceph-03:~
    
  3. На ceph-01, ceph-02 и ceph-03 переместить файл в /etc/pacemaker/

    sudo mv vm_conf.xml /etc/pacemaker/
    sudo chown hacluster:haclient /etc/pacemaker/vm_conf.xml
    
  4. Теперь добавить сам ресурс:

    sudo pcs resource create test-vm VirtualDomain \
    config="/etc/pacemaker/vm_conf.xml" \
    migration_transport=tcp meta allow-migrate=true
    
  5. Просмотреть список добавленных ресурсов:

    sudo pcs status
    sudo pcs resource config test-vm
    
  6. Проверить список виртуальных машин на узле, на котором запустился ресурс:

    sudo virsh list --all
    
  7. Проверить, что ресурс успешно запустился.

Настройка миграции

Выполнить действия на всех узлах

  1. Необходимо отредактировать файл /etc/libvirt/libvirtd.conf:

    listen_tls = 0
    listen_tcp = 1
    auth_tcp = "none"
    
  2. Отредактировать файл /etc/default/libvirtd:

    libvirtd_opts="--config /etc/libvirt/libvirtd.conf"
    
  3. Запустить сокет libvirt-tcp:

    sudo systemctl stop libvirtd && sudo systemctl start libvirtd-tcp.socket
    
Миграция ресурса
  1. Нужно переместить ресурс на ceph-02:

    sudo pcs resource move test-vm ceph-02
    
  2. На ceph-02 посмотреть статус кластера, и проверить список запущенных гостевых машин можно следующими командами:

    sudo pcs status
    sudo virsh list --all
    
  3. Команда move добавляет ресурсу правило, заставляющее его запускаться только на указанном узле. Для того, чтобы очистить все добавленные ограничения - clear:

    sudo pcs resource clear test-vm
    

Практическое задание №5-3. Ceph FS, Ceph Dashboard

Для выполнения практических занятий необходимо переключиться на проект [GROUP]:[team]-lab:sandbox.

Использование файловой системы Ceph

Запуск ceph-mds

Чтобы услуга Ceph FS работала для клиентов, необходимо запустить демон сервера метаданных (MDS). Для этого создадим папку для демона, пользователя Ceph и запустим службу ceph-mds.

  1. Запустить демоны MDS на хостах ceph-02, ceph-03:
    sudo mkdir -p /var/lib/ceph/mds/ceph-$HOSTNAME
    sudo ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-$HOSTNAME/keyring \
     --gen-key -n mds.$HOSTNAME
    sudo chown -R ceph. /var/lib/ceph/mds/ceph-$HOSTNAME
    sudo ceph auth add mds.$HOSTNAME osd "allow rwx" mds "allow" mon "allow profile mds" \
     -i /var/lib/ceph/mds/ceph-$HOSTNAME/keyring
    sudo systemctl enable --now ceph-mds@$HOSTNAME
    
    • Либо использовать скрипт:
      Скрипт для запуска на ceph-01
      #!/bin/bash
      
      for NODE in ceph-02 ceph-03
      do
        MDS_PATH=/var/lib/ceph/mds/ceph-$NODE;
        ssh $NODE \
      	   "sudo mkdir -p $MDS_PATH; \
      	   sudo ceph-authtool --create-keyring $MDS_PATH/keyring \
      	    --gen-key -n mds.$NODE; \
      	   sudo chown -R ceph. $MDS_PATH; \
      	   sudo ceph auth add mds.$NODE osd 'allow rwx' mds 'allow' mon 'allow profile mds' \
      	    -i $MDS_PATH/keyring; \
      	   sudo systemctl enable --now ceph-mds@$NODE"
      done
      
Создание файловой системы

На любом узле кластера необходимо выполнить следующие команды:

  1. Чтобы запустить файловую систему ceph, нужно создать два пула: пул для данных и пул для метаданных:

    sudo ceph osd pool create cephfs_data 64
    sudo ceph osd pool create cephfs_metadata 64
    
  2. Создадим файловую систему:

    sudo ceph fs new cephfs cephfs_metadata cephfs_data
    

    С помощью данных команд можно просмотреть статус файловой системы:

    sudo ceph fs ls
    sudo ceph mds stat
    sudo ceph fs status cephfs
    
  3. Создадим пользователя для подключения к файловой системе и запишем ключ пользователя в отдельный файл:

    sudo ceph fs authorize cephfs client.fsclient / rw -o /etc/ceph/ceph.client.fsclient.keyring
    sudo ceph auth get-or-create-key client.fsclient -o /etc/ceph/fsclient.secret
    
  4. Необходимо скопировать файлы /etc/ceph/fsclient.secret и /etc/ceph/ceph.client.fsclient.keyring на остальные узлы.

Проверка
  1. На каждом узле кластера необходимо выполнить следующие команды:

    sudo mkdir /mnt/cephfs
    sudo mount -t ceph fsclient@.cephfs=/ /mnt/cephfs -o secretfile=/etc/ceph/fsclient.secret
    
  2. Проверить статус монтирования:

    df -hT | grep ceph
    
  3. На ceph-01 создать файл с произвольным текстом и поместить его в каталог /mnt/cephfs:

    echo "my text for ceph fs" | tee /mnt/cephfs/test.txt
    
  4. Проверить содержание файла на других узлах:

    ls /mnt/cephfs/
    cat /mnt/cephfs/test.txt
    
Динамическая миграция ВМ с использованием Ceph FS
  1. Поместим образ cirros в созданную файловую систему:

    sudo cp /tmp/cirros.img /mnt/cephfs/cirros.img
    
  2. Запустим ВМ:

    sudo virt-install --name cirros --graphics none \
     --vcpus 1 --memory 128 --disk "vol=libvirt-pool/cirros" \
     --import --autostart
    
  3. Проверим работоспособность запущенной ВМ:

    sudo virsh list --all
    sudo virsh console cirros
    
  4. Дальнейшие действия аналогичны пунктам "Создание ресурса", "Миграция ресурса" практики 5.2.

Запуск Ceph Dashboard

  1. В работающем кластере Ceph панель мониторинга Ceph активируется с помощью:

    sudo ceph mgr module enable dashboard
    
  2. Сгенерируем и установим самоподписанный SSL сертификат:

    sudo ceph dashboard create-self-signed-cert
    
  3. Чтобы иметь возможность войти в систему, вам необходимо создать учетную запись пользователя и связать ее хотя бы с одной ролью. Ceph предоставляет набор предопределенных системных ролей, которые вы можете использовать. Чтобы создать пользователя admin с паролем password и ролью администратора, можно воспользоваться следующими командами:

    echo "password" >> mypass
    sudo ceph dashboard ac-user-create admin -i mypass --force-password administrator
    rm mypass
    
  4. В Openstack в группе безопасности добавить правило для порта 8443/tcp.

  5. С помощью команды sudo ceph mgr services на одном из узлов кластера можно получить ссылки доступных сервисов. Пример вывода:

    {
        "dashboard": "https://172.17.5.232:8443/"
    }