Настройте OpenStack в кластере Raspberry Pi.
Поскольку процессоры Arm являются «первосортными гражданами» в OpenStack, а Raspberry Pi построены на Arm, почему бы не объединить их?
За год, прошедший с момента выпуска Raspberry Pi 4, я видел множество руководств (например, этого и этого) и статей о том, насколько хорошо модель 4 ГБ работает с такими контейнерными платформами, как Kubernetes (K8s), Lightweight Kubernetes (K3s) и Docker. Рой. Во время исследования я прочитал, что процессоры Arm являются «гражданами первого сорта» в OpenStack. Поскольку Raspberry Pi построен на базе Arm, я решил проверить эту теорию, установив OpenStack на кластер Raspberry Pi.
Предварительные условия
Есть несколько вещей, которые мне нужно учитывать в этом проекте:
- Использовать ли 64-разрядную версию Ubuntu или 64-разрядную версию CentOS для загрузки Raspberry Pi без управления; ОС Raspberry Pi будет недостаточно, даже как производная от Debian, поскольку для нее нет пакетов OpenStack.
- Мне нужна последняя версия OpenStack, которая будет работать в моем дистрибутиве, поскольку я не думаю, что последние версии имеют образ AArch64.
- Я сомневаюсь, что существует какая-либо документация по автоматизации установки с нуля, поэтому я буду использовать пошаговый процесс.
Используемые материалы:
- Четыре Raspberry Pi 4B, модель 4 ГБ (рекомендуется 8 ГБ)
- Четыре карты MicroSD по 32 ГБ.
- Четыре корпуса Raspberry Pi с вентиляторами и радиаторами (очень важно)
- Четыре официальных блока питания Raspberry
Настройка базовой операционной системы
Я использовал образ CentOS AArch64; Как я и подозревал, для Raspberry Pi не существует образа CentOS 8, поэтому я использовал CentOS 7 AArch64 с этим предварительно созданным образом. Когда я пытался установить его с помощью dd
, это не сработало, но когда я использовал balenaEtcher, это сработало как чудо.
(Аарон Джон Канлас, CC BY-SA 4.0)
После записи изображений на SD-карты я подключил Raspberry Pi к маршрутизатору, чтобы проверить их IP-адреса и иметь возможность удаленного доступа к ним с помощью SSH. Я настроил их Wi-Fi и имена хостов с помощью nmtui
, чтобы получить к ним доступ без каких-либо подключенных кабелей (за исключением источника питания, конечно). Пользователь по умолчанию — root
, а пароль по умолчанию — centos
.
(Аарон Джон Канлас, CC BY-SA 4.0)
Я обновил операционную систему:
[root@rpi4b4-0 ~]# yum update -y
Я повторил этот процесс на всех своих Raspberry Pi, а затем перезагрузил их.
Установить OpenStack
Последние выпуски OpenStack (Ussuri и Victoria) требуют CentOS 8, поэтому я использовал Train, так как это самая последняя версия, использующая CentOS 7.
(Аарон Джон Канлас, CC BY-SA 4.0)
Я использовал шаги установки OpenStack Foundation, но столкнулся с некоторыми проблемами. Чтобы другим было проще установить OpenStack на CentOS 7, я собрал следующие ссылки и советы.
Предварительные условия
Протокол сетевого времени (NTP)
- Установка узла контроллера
- Установка вычислительного узла
- Проверьте работу
Сервисы OpenStack
Служба идентификации (Keystone)
- Установка узла контроллера
Проверьте работу
(Аарон Джон Канлас, CC BY-SA 4.0)
Служба обработки изображений (Glance)
- Установка узла контроллера
Проверьте работу
СОВЕТ: Вместо загрузки образа CirrOS, упомянутого в документах, обязательно используйте образ AArch64 CirrOS для Raspberry Pis.
(Аарон Джон Канлас, CC BY-SA 4.0)
Служба размещения (Размещение)
- Установка узла контроллера
Проверьте работу
(Аарон Джон Канлас, CC BY-SA 4.0)
Вычислительный сервис (Нова)
- Установка узла контроллера
Проверьте работу
СОВЕТ: В последней части операции проверки проверка обновления статуса nova
завершается неудачно из-за ошибки упаковки. Чтобы это исправить, отредактируйте следующий файл в контроллере:
[root@rpi4b4-0 ~]# vim /etc/httpd/conf.d/00-placement-api.conf
(…)
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
Если вы запустите проверку обновления статуса nova
сейчас, это сработает.
(Аарон Джон Канлас, CC BY-SA 4.0)
Сетевой сервис (Нейтрон)
- Установка узла контроллера
Контроллер для варианта 2: установка сети самообслуживания
Чтобы включить модульbr_netfiler
:[root@rpi4b4-0 ~]# modprobe br_netfilter [root@rpi4b4-0 ~]# echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf [root@rpi4b4-0 ~]# lsmod|grep br_netfilter
- Установка вычислительного узла
Подсчитайте вариант 2: установка сети самостоятельного обслуживания
Чтобы включить модульbr_netfiler
:[root@rpi4b4-X ~]# modprobe br_netfilter [root@rpi4b4-X ~]# echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf [root@rpi4b4-X ~]# lsmod|grep br_netfilter
- Проверьте работу
Проверьте работу варианта 2: установка сети самообслуживания
(Аарон Джон Канлас, CC BY-SA 4.0)
Служба информационных панелей (Horizon)
Установка узла контроллера
СОВЕТ: После перезапуска службы httpd вы получите ошибку 404. Чтобы решить эту проблему, добавьте эту строку в конец/etc/openstack-dashboard/local_settings
:WEBROOT = '/dashboard'
Затем перезапустите httpd как обычно:
[root@rpi4b4-X ~]# systemctl restart httpd.service
Проверьте работу
(Аарон Джон Канлас, CC BY-SA 4.0)
Насколько хорошо это работает?
Это был веселый и успешный эксперимент. С точки зрения производительности, это довольно медленно, учитывая, что мой контроллер имеет всего четыре ядра и 4 ГБ оперативной памяти, но он полезен для управления несколькими компьютерами на одной панели. Моим следующим шагом будет попытка сделать это с развертыванием TripleO и кластером хранения Ceph, чтобы обеспечить живую миграцию. Я мог бы попробовать использовать Ethernet Raspberry Pi, если имею в виду более крупный кластер и рабочую нагрузку; на данный момент Grafana отлично работает для интернет-мониторинга.