Поиск по сайту:

Настройте 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.

Предварительные условия

Есть несколько вещей, которые мне нужно учитывать в этом проекте:

  1. Использовать ли 64-разрядную версию Ubuntu или 64-разрядную версию CentOS для загрузки Raspberry Pi без управления; ОС Raspberry Pi будет недостаточно, даже как производная от Debian, поскольку для нее нет пакетов OpenStack.
  2. Мне нужна последняя версия OpenStack, которая будет работать в моем дистрибутиве, поскольку я не думаю, что последние версии имеют образ AArch64.
  3. Я сомневаюсь, что существует какая-либо документация по автоматизации установки с нуля, поэтому я буду использовать пошаговый процесс.

Используемые материалы:

  1. Четыре Raspberry Pi 4B, модель 4 ГБ (рекомендуется 8 ГБ)
  2. Четыре карты MicroSD по 32 ГБ.
  3. Четыре корпуса Raspberry Pi с вентиляторами и радиаторами (очень важно)
  4. Четыре официальных блока питания 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, я собрал следующие ссылки и советы.

Предварительные условия

  1. Протокол сетевого времени (NTP)

    1. Установка узла контроллера
    2. Установка вычислительного узла
    3. Проверьте работу
  2. Пакеты OpenStack: запустите версию установки Train (эта ссылка включает все версии).
  3. База данных SQL: установка узла контроллера
  4. Очередь сообщений: установка узла контроллера
  5. Memcached: установка узла контроллера
  6. И т.д.: Установка узла контроллера

Сервисы OpenStack

  1. Служба идентификации (Keystone)

    1. Установка узла контроллера
    2. Проверьте работу

      (Аарон Джон Канлас, CC BY-SA 4.0)

  2. Служба обработки изображений (Glance)

    1. Установка узла контроллера
    2. Проверьте работу

      СОВЕТ: Вместо загрузки образа CirrOS, упомянутого в документах, обязательно используйте образ AArch64 CirrOS для Raspberry Pis.

      (Аарон Джон Канлас, CC BY-SA 4.0)

  3. Служба размещения (Размещение)

    1. Установка узла контроллера
    2. Проверьте работу

      (Аарон Джон Канлас, CC BY-SA 4.0)

  4. Вычислительный сервис (Нова)

    1. Установка узла контроллера
    2. Установка вычислительного узла
    3. Проверьте работу

      СОВЕТ: В последней части операции проверки проверка обновления статуса 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)

  1. Сетевой сервис (Нейтрон)

    1. Установка узла контроллера
    2. Контроллер для варианта 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
    3. Установка вычислительного узла
    4. Подсчитайте вариант 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
    5. Проверьте работу
    6. Проверьте работу варианта 2: установка сети самообслуживания

      (Аарон Джон Канлас, CC BY-SA 4.0)

  2. Служба информационных панелей (Horizon)

    1. Установка узла контроллера

      СОВЕТ: После перезапуска службы httpd вы получите ошибку 404. Чтобы решить эту проблему, добавьте эту строку в конец /etc/openstack-dashboard/local_settings:

      WEBROOT = '/dashboard'

      Затем перезапустите httpd как обычно:

      [root@rpi4b4-X ~]# systemctl restart httpd.service
    2. Проверьте работу

      (Аарон Джон Канлас, CC BY-SA 4.0)

Насколько хорошо это работает?

Это был веселый и успешный эксперимент. С точки зрения производительности, это довольно медленно, учитывая, что мой контроллер имеет всего четыре ядра и 4 ГБ оперативной памяти, но он полезен для управления несколькими компьютерами на одной панели. Моим следующим шагом будет попытка сделать это с развертыванием TripleO и кластером хранения Ceph, чтобы обеспечить живую миграцию. Я мог бы попробовать использовать Ethernet Raspberry Pi, если имею в виду более крупный кластер и рабочую нагрузку; на данный момент Grafana отлично работает для интернет-мониторинга.

Статьи по данной тематике: