Привет всем! Я запускаю проект конвейера данных с нуля для своего стартапа. Нужна обработка потоков в реальном времени, поэтому я обновляю некоторые свои хосты Milan до кластера Proxmox + Ceph из 3 узлов.
По узлу:
Снимок материнской платы – Gigabyte MZ72-HB0
Вычислительные ресурсы и RAM – 2 × EPYC 7T83 (128 c/256 t) + 1 TB DDR4-3200: достаточно закрепленных ядер для Ceph, Kafka, Flink и небольшого экземпляра Redis без перекрестных взаимодействий NUMA.
Загрузка – 2 × 480 GB Samsung PM893 SATA (ZFS mirror): защищены PLP, нулевая стоимость PCIe-линий.
Уровень данных Ceph – 6 × 3.84 TB Samsung PM9A3 U.2 NVMe: три на сокет для сбалансированных IOPS и быстрого восстановления.
Ceph block.db/WAL – 2 × Optane P5801X 400 GB: по одному на каждые три OSD для синхронных записей класса µs.
RocksDB для Flink – 1 × Optane P5801X 400 GB: резервные копии и восстановление за менее чем за секунду.
Лог Kafka – 1 × 3.84 TB PM9A3: горячие сегменты на NVMe; хранилище Kafka с многоуровневой структурой выгружает устаревшие данные в небольшой кластер MinIO S3.
Кэш Redis – работает в памяти на свободных ядрах, обеспечивая быстрые поисковые запросы для клиентской части.
Сетевая карта – Mellanox ConnectX-5 EX 100 GbE через пассивный QSFP28 twin-ax.
Коммутатор Top-of-rack – MikroTik CRS520-4XS-16XQ-RM : 16 × QSFP28 (100 GbE) + 4 × SFP28; экономичный вариант для шести 100 Gb-соединений сегодня и запас для расширения; включены jumbo frames и ECN/WRED, чтобы компенсировать скромные буферы размером 6 МБ.
Почему такой набор? Ceph с NVMe на базе Optane поддерживает низкую задержку записи; Kafka буферизирует входящий поток данных объемом 200 Мбит/с и выгружает исторические данные в MinIO; Flink работает с быстрыми состояниями на базе Optane; Redis обеспечивает мгновенный доступ для приложения; CRS520 обеспечивает доступное 100 Gb-соединение, которое насыщает восстановление Ceph и перестановки Flink, а зеркальные загрузочные диски SATA освобождают линии PCIe для высокопроизводительных рабочих нагрузок.
Я включил аннотированную блок-схему — там есть устаревшие элементы/ошибки, но править в Adobe — настоящая боль, на 99% всё правильно. Основная проблема там в том, что я немного теряю слоты PCIe с Optane, но эта конфигурация должна помочь мне начать работу, думаю.
Для расширения PCIe в слот 4 я планирую использовать это:
У меня есть эти серверы Milan пару лет, и они всегда были стабильными. Планирую выделить corosync в отдельный физический сетевой уровень.
Ищу любые серьезные недостатки, которые я мог упустить, или проблемы с этой конструкцией — все комментарии приветствуются!
По узлу:
Снимок материнской платы – Gigabyte MZ72-HB0
Вычислительные ресурсы и RAM – 2 × EPYC 7T83 (128 c/256 t) + 1 TB DDR4-3200: достаточно закрепленных ядер для Ceph, Kafka, Flink и небольшого экземпляра Redis без перекрестных взаимодействий NUMA.
Загрузка – 2 × 480 GB Samsung PM893 SATA (ZFS mirror): защищены PLP, нулевая стоимость PCIe-линий.
Уровень данных Ceph – 6 × 3.84 TB Samsung PM9A3 U.2 NVMe: три на сокет для сбалансированных IOPS и быстрого восстановления.
Ceph block.db/WAL – 2 × Optane P5801X 400 GB: по одному на каждые три OSD для синхронных записей класса µs.
RocksDB для Flink – 1 × Optane P5801X 400 GB: резервные копии и восстановление за менее чем за секунду.
Лог Kafka – 1 × 3.84 TB PM9A3: горячие сегменты на NVMe; хранилище Kafka с многоуровневой структурой выгружает устаревшие данные в небольшой кластер MinIO S3.
Кэш Redis – работает в памяти на свободных ядрах, обеспечивая быстрые поисковые запросы для клиентской части.
Сетевая карта – Mellanox ConnectX-5 EX 100 GbE через пассивный QSFP28 twin-ax.
Коммутатор Top-of-rack – MikroTik CRS520-4XS-16XQ-RM : 16 × QSFP28 (100 GbE) + 4 × SFP28; экономичный вариант для шести 100 Gb-соединений сегодня и запас для расширения; включены jumbo frames и ECN/WRED, чтобы компенсировать скромные буферы размером 6 МБ.
Почему такой набор? Ceph с NVMe на базе Optane поддерживает низкую задержку записи; Kafka буферизирует входящий поток данных объемом 200 Мбит/с и выгружает исторические данные в MinIO; Flink работает с быстрыми состояниями на базе Optane; Redis обеспечивает мгновенный доступ для приложения; CRS520 обеспечивает доступное 100 Gb-соединение, которое насыщает восстановление Ceph и перестановки Flink, а зеркальные загрузочные диски SATA освобождают линии PCIe для высокопроизводительных рабочих нагрузок.
Я включил аннотированную блок-схему — там есть устаревшие элементы/ошибки, но править в Adobe — настоящая боль, на 99% всё правильно. Основная проблема там в том, что я немного теряю слоты PCIe с Optane, но эта конфигурация должна помочь мне начать работу, думаю.
Для расширения PCIe в слот 4 я планирую использовать это:
У меня есть эти серверы Milan пару лет, и они всегда были стабильными. Планирую выделить corosync в отдельный физический сетевой уровень.
Ищу любые серьезные недостатки, которые я мог упустить, или проблемы с этой конструкцией — все комментарии приветствуются!
