Как сделать кластерный сервер на ARM процессоре и тестирование VPS на AWS Graviton2

Как сделать кластерный сервер на ARM процессоре и тестирование VPS на AWS Graviton2

В предыдущей публикации рассматривались преимущества использование ARM серверов для хостинг провайдеров. В этом посте рассмотрим практические варианты создания кластерного сервера на ARM процессоре и протестируем инстанс Amazon EC2 T4g работающий на процессоре ARM AWS Graviton2, посмотрим на что он способен.

Создание серверного кластера на Raspberry/Banana/Orange Pi

На данный момент существует множество различных вариантов сборки кластера на базе различных одноплатных компьютеров. Можно собрать самостоятельно или купить готовую коробку (CASE) для наполнения модулями CoM Raspberry Pi.

Cluster Server ARM
Кластер на Raspberry/Banana/Orange Pi

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

  1. Малая производительность используемых ARM-процессоров.
  2. В большинстве случаем хранение данных только на eMMC или microSD.
  3. Большой набор лишней периферии, такой как модуль связи Wi-Fi и Bluetooth, порты видеовыхода HMDI и т.д., что приводит к лишней стоимости платы и увеличению энергопотребления.
  4. Невозможна плотная компоновка модулей.
  5. Большое количество лишних проводов для подключения линий электропитания и Ethernet.

Для решения выше перечисленных недостатков необходимо перейти на концепцию — Компьютер-на-Модуле (Computer on Module, CoM).

Компьютер на модуле (CoM)

Компьютер на модуле (CoM) – это плата, которая объединяет в себе основные элементы системы обработки данных и позволяет подключить их к несущей плате с помощью разъёмов или пайки. На такой плате размещается основной процессор, оперативная память, дополнительные модули чипы. Плата обычно содержит периферийные функции, а несущая плата позволяет реализовать специфические функции устройства, например, соединение с внешними устройствами посредством различных интерфейсов.

Cluster Server ARM
Компьютер на модуле (CoM)

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

Cluster Server ARM
Подключение модуля CoM к несущей плате

Стартап miniNodes разрабатывает недорогие ARM сервера, предназначенные для небольших облачных сервисов, веб-сайтов и приложений Интернета вещей. Они разработали микро-сервер состоящий из несущей платы и 5 модулей Raspberry Pi 3 CoM. Несущая плата Carrier Board содержит встроенный гигабитный коммутатор, который обеспечивает подключение ко всем 5 модулям. С противоположной стороны платы размещен модуль питания для обеспечивания питание CoM. Каждый из вычислительных модулей также имеет отдельный переключатель включения/выключения питания. Модули Raspberry Pi CM3 + поставляются с 8 ГБ, 16 ГБ или 32 ГБ eMMC на борту, поэтому нет необходимости использовать SD-карты, как на обычных платах Raspberry Pi. Таким образом, при полной загрузке есть 5 узлов, состоящих из 4 ядер, 1 ГБ ОЗУ и до 32 ГБ eMMC каждый, всего 20 ядер, 5 ГБ ОЗУ и до 160 ГБ хранилища.

Cluster Server ARM
5 Node Raspberry Pi 3 CoM Carrier Board

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

Блейд-сервер от Firefly на процессорах Rockchip

Среди доступных решений выделяются процессоры компании Rockchip. По сравнению с процессорами от других производителей, для процессоров Rockchip доступно больше драйверов под Linux и есть даташиты в публичном доступе. Компания Firefly разрабатывает модули CoM на процессорах Rockchip и комплектует из них блейд-серверы. В каталоге компании доступно 9 различных по производительности модулей CoM, которые можно использовать для комплектации сервера. Модули для подключения имеют стандартный интерфейс SODIMM.

Cluster Server ARM
Модули COM от компании Firefly

Компания разработала сервер Cluster Server R1 в 1U форм-факторе который может содержать до 11 модулей CoM.

Cluster Server ARM
Сервер Cluster Server R1

Сервер предназначен для запуска приложений на Linux, облачных игр, виртуальных рабочих столов, тестирования мобильных приложений (до 110 виртуальных телефонов на Android). Возможен запуск ОС: Linux и Android.

Для комплектации доступны модули CoM:

  • RK3399(AI) Core Board (Core-3399-JD4): два ядра A72 + четыре ядра A53, частота до 1.8GHz
  • RK3328 Core Board (Core-3328-JD4): четы ядра A53, частота до 1.5GHz
  • RK1808(AI) Core Board (Core-1808-JD4): два ядра с A35, частота до 1.6GHz

На лицевой панели блейд-сервера размещено: 4 порта Gigabit Ethernet, HDMI, два порта USB2.0, OTG, дополнительно для модулей доступен 3.5-дюймовый жесткий диск SATA/SSD с горячей заменой, слот для SIM карт модуля 4G-LTE.

Cluster Server ARM
Лицевая панель сервера Cluster Server R1

Для управления узлами используется BMC (Baseboard Management Controller) с помощью которой можно управлять узлами: включать/выключать, удаленный доступ, мониторинг состояния, управление аппаратной конфигурацией.

В начале этого года была представлена вторая версия кластерного сервера — Cluster Server R2. Cluster Server R2 поставляется в 2U форм-факторе и содержит:

  • 9 блейд-узлов (каждый узел содержит 8 модулей CoM).
  • Два 3.5-дюймовых жестких дисков SATA/SSD.
  • 4 порта Gigabit Ethernet.
  • два порта USB 3.0, USB 2.0, порт HDMI.

Cluster Server ARM
Cluster Server Cluster Server R2

Кластерный север так же работает под управлением ОС: Android, Ubuntu или некоторых других дистрибутивов Linux. Варианты использования сервера: «облачный телефон», виртуальный рабочий стол, облачные игры, облачное хранилище, блокчейн, декодирование многоканального видео, и т. Д. Наличие AI (NPU-нейронный процессор) делает кластер похожим на Solidrun Janux GS31 Edge AI. Сервер, предназначенный для вывода в режиме реальном времени нескольких видеопотоков для мониторинга умных городов и инфраструктуры, интеллектуального корпоративного/промышленного видеонаблюдения, обнаружения, распознавания и классификации объектов, интеллектуального визуального анализа и т. д.

Что можно запустить на ARM процессоре?

Запуск приложений с помощью Docker и Kubernetes давно стал де-факто стандартом для Linux. Поэтому рассмотрим какие наиболее популярные контейнеры можно запустить под ARM:

  1. Portainer.io — управление и мониторинг контейнерами с помощью web-интерфейса.
  2. OpenVPN — самый популярный бесплатный VPN сервер
  3. SoftEther VPNмультипротокольный VPN-сервер с графическим интересом под Windows.
  4. Базы данных — все официальные Docker-образы так же собраны для ARM архитектуры: PostgreSQL, Mariadb, MongoDB.
  5. Nginx-proxy — Nginx прокси-сервер, образ на базе Alpine
  6. Traefikобратный прокси-сервер, альтернатива Nginx
  7. WordPress — популярная CMS-система
  8. Elasticsearch — поисковая система на Java
  9. Asterisk PBX — компьютерная телефония (в том числе, VoIP) с открытым исходным кодом от компании Digium
  10. Zabbix — система мониторинга и отслеживания статусов различных сервисов компьютерной сети, серверов и сетевого оборудования

Отдельно необходимо отметить проект linuxserver.io, которые собирает контейнеры на базе наиболее популярных приложения для Linux, сборки готовятся и для архитектуры ARM. Наиболее популярные приложений для Linux представлены в виде контейнеров для ARM-систем, поэтому можно уже начинать тестировать.

Тестирование VPS на AWS Graviton2

Amazon для тестирования предоставляет инстансы на базе процессора ARM AWS Graviton2. Это отличная возможность бесплатно протестировать ПО на совместимость с ARM архитектурой и просто получить опыт работы, эксплуатации системы на ARM процессоре. Бесплатно предоставляется инстанс t4g.micro до 30 июня 2021 года в режиме 24×7. Для тестирования достаточно зарегистрироваться и развернуть инстанс на Ubuntu Server 20.04 LTS.
Конфигурация инстанса t4g.micro:

  • 2 vCPUs 2.5 GHz
  • 1 GiB memory
  • 8 GB SSD

Инстанс t4g.micro доступен для развертывания на различных площадках. Ближайшая к нам площадка Europe (Frankfurt) eu-central-1, пинг от Питера в среднем составляет 78 ms.

Команда lscpu выдает следующую информацию:

ubuntu@host:~$ lscpu
Architecture:                    aarch64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
CPU(s):                          2
...
Vendor ID:                       ARM
Model:                           1
Model name:                      Neoverse-N1
Stepping:                        r3p1
BogoMIPS:                        243.75
L1d cache:                       128 KiB
L1i cache:                       128 KiB
L2 cache:                        2 MiB
L3 cache:                        32 MiB
NUMA node0 CPU(s):               0,1
...
Flags:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimdd
                                 p ssbs

“Железо”:

root@host:/home/ubuntu# inxi -b
System:    Host: host Kernel: 5.4.0-1038-aws aarch64 bits: 64 Console: tty 1
           Distro: Ubuntu 20.04.2 LTS (Focal Fossa)
Machine:   Type: Other-vm? System: Amazon EC2 product: t4g.micro v: N/A serial: ec21ba8c-f1b0-3f47-74e0-c648a84383c4
           Mobo: Amazon EC2 model: N/A serial: N/A UEFI: Amazon EC2 v: 1.0 date: 11/1/2018
CPU:       Dual Core: Model N/A type: MCP speed: 0
Graphics:  Message: No Device data found.
           Display: server: No display server data found. Headless machine? tty: 130x42
           Message: Advanced graphics data unavailable for root.
Network:   Device-1: Amazon.com Elastic Network Adapter driver: ena
Drives:    Local Storage: total: 8.00 GiB used: 2.52 GiB (31.5%)
Info:      Processes: 145 Uptime: 2d 23h 46m Memory: 952.5 MiB used: 336.2 MiB (35.3%) Shell: bash inxi: 3.0.38

Тест CPU

Тестируем процессор sysbench’ем:

root@host:/home/ubuntu# sysbench --test=cpu --cpu-max-prime=20000 --num-threads=1 run
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Prime numbers limit: 20000
...
CPU speed:
    events per second:  1097.02
General statistics:
    total time:                          10.0002s
    total number of events:              10972
Latency (ms):
         min:                                    0.91
         avg:                                    0.91
         max:                                    0.95
         95th percentile:                        0.92
         sum:                                 9998.11
Threads fairness:
    events (avg/stddev):           10972.0000/0.00
    execution time (avg/stddev):   9.9981/0.00

Тест ОЗУ:

root@host:/home/ubuntu# sysbench --test=memory --num-threads=4 --memory-total-size=512MB run
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
...
Total operations: 524288 (3814836.42 per second)
512.00 MiB transferred (3725.43 MiB/sec)
General statistics:
    total time:                          0.1360s
    total number of events:              524288
Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                    8.00
         95th percentile:                        0.00
         sum:                                  315.89

Тест диска

Посмотрим что покажет dd. Скорость до полноценного SSD недотягивает, но уже полноценный SATA:

root@home:/home/ubuntu# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 7.03664 s, 153 MB/s

Результаты теста бенчмарка 7-zip:

root@host:/home/ubuntu# 7za b
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs LE)

LE
CPU Freq: - - - - - - 512000000 - -

RAM size:     952 MB,  # CPU hardware threads:   2
RAM usage:    441 MB,  # Benchmark threads:      2

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       6957   167   4054   6768  |       8353   199    358    713
23:        757   172    448    772  |      22509   200    975   1948
24:       7073   185   4118   7606  |      80370   200   3535   7056
25:       6831   185   4227   7800  |      77906   199   3480   6934
----------------------------------  | ------------------------------
Avr:             177   3212   5736  |              199   2087   4163
Tot:             188   2649   4950

Сравнение стоимости инстанса t4g.micro с VPS на x86

Воспользуемся калькулятором calculator.aws и рассчитаем на сколько ARM дешевле x86 VPS на AWS. Расчет будем производить для площадки Europe (Frankfurt) eu-central-1. Ближайшей аналог x86 по характеристикам это инстанс t2.micro.

Конфигурация инстанса t2.micro:

  • 1 vCPUs
  • 1 GiB memory
  • 8 GB SSD

Допустим инстанс будет работать 365 дней * 24 часа * 1 год = 8760.0000 часов.

Ежемесячный платеж за аренду инстанса по требованию без учета трафика составит:

  • t4g.micro (ARM): 5.33 USD ~ 400 р. (по курсу 1$ = 75 р.);
  • t2.micro (x86): 7.96 USD ~ 597 р. (по курсу 1$ = 75 р.).

Получает что сервер на ARM стоит на 33% дешевле аналога на x86. Отдельно необходимо рассчитывать объем сетевого трафика, стоимость не зависит от типа архитектуры инстанса. Первый гигабайт трафика в месяц будет бесплатным, далее объем до 10 ТБ оплачивается по цене $0.09 за каждый Гб. Входящий трафик не тарифицируется. Если будем исходить из средней сетевой нагрузки в 150 Гб исходящего трафика в месяц, то стоимость за трафик будет:

  • 150 Гб * $0.09 = $13.5  ~ 1000 р. (по курсу 1$ = 75 р.);

В итоге VPS инстанс t4g.micro (ARM) с объемом трафика в  150 Гб в месяц будет стоить — 1 400 р./месяц.

Если для сравнения взять VPS от VDSina.ru за 330 р./месяц (1 ядро, 30 ГБ NVMe, 32 ТБ трафика), то для конкурентного преимущества серверам на ARM еще расти и расти.

Вывод: Отсутствие нативного ПО под ARM архитектуру еще долго будет останавливающим фактором массового перехода. Но так или иначе частичный переход на ARM сервера это уже тренд. Основными двигателями перехода выступают три мощных фактора. Первый фактор — независимость от основных поставщиков процессоров x86. Можно выбрать решение максимально подходящее под себя. Второй фактор — возможность максимальной «оптимизации под себя», исключение всего лишнего и добавление специализированных блоков, таких как NPU, FPGA, и т.д. Третий фактор — открытость и доступность Linux.  Если сравнивать ARM сервера для массового потребительского сектора, то в этом сегменте еще очень долго будет господствовать x86 архитектура. Скорее всего мы увидим создание нового сегмент рынка для специальных задач ориентированных на преимущества ARM архитектуры, например сервера с FPGA модулями или NPU.


На правах рекламы

Наша компания предлагает в аренду серверы с современными процессорами от Intel и AMD под самые разнообразные задачи. Эпичные серверы — это VDS с AMD EPYC, частота ядра CPU до 3.4 GHz. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe. Создайте свой собственный тариф самостоятельно в пару кликов!

 

Источник

arm, AWS Graviton, Cluster Server, COM, Docker, firefly, rockchip, servers, тестирование

Читайте также