Proxmox + Ceph: гиперконвергентный кластер своими руками

Гиперконвергентная инфраструктура: зачем и когда

Гиперконвергентная инфраструктура (HCI) объединяет вычислительные ресурсы и хранилище данных на одних и тех же серверах. Вместо отдельной СХД (SAN/NAS) все диски серверов объединяются в распределённое хранилище Ceph, а Proxmox VE управляет виртуализацией.

Преимущества HCI на Proxmox + Ceph:

  • Стоимость: отсутствие дорогостоящей СХД — экономия сотен тысяч рублей
  • Масштабируемость: добавление ноды увеличивает и вычислительные ресурсы, и хранилище
  • Отказоустойчивость: данные реплицируются на 3 ноды, выход одной не вызывает простоя
  • Живая миграция: VM перемещаются между нодами без остановки
  • Простота управления: единый веб-интерфейс Proxmox для всего

Минимальная конфигурация кластера — 3 ноды. Каждая нода выполняет роль гипервизора (Proxmox VE) и ноды хранения (Ceph OSD). Рекомендуемые требования к серверу:

ПараметрМинимумРекомендуется
CPU8 ядер16+ ядер
RAM32 ГБ64+ ГБ
SSD/NVMe (OSD)2 × 500 ГБ4 × 1 ТБ NVMe
Сеть2 × 10 GbE2 × 25 GbE

Подготовка кластера Proxmox VE

Установите Proxmox VE 8.x на все три ноды с отдельным разделом под систему (желательно на отдельный SSD). NVMe-диски для Ceph оставьте неразмеченными.

Сетевая конфигурация — ключевой момент. Рекомендуется выделить отдельную сеть для трафика Ceph:

# /etc/network/interfaces на каждой ноде
auto lo
iface lo inet loopback

# Management + Corosync
auto vmbr0
iface vmbr0 inet static
    address 10.0.1.11/24
    gateway 10.0.1.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

# Ceph Public + Cluster network (10GbE/25GbE)
auto vmbr1
iface vmbr1 inet static
    address 10.0.10.11/24
    bridge-ports eno2
    bridge-stp off
    bridge-fd 0
    mtu 9000

Включите Jumbo Frames (MTU 9000) на Ceph-сети для максимальной производительности. Проверьте:

ping -M do -s 8972 10.0.10.12

Создаём кластер Proxmox на первой ноде:

pvecm create my-cluster --link0 10.0.1.11

Присоединяем остальные ноды:

# На ноде 2
pvecm add 10.0.1.11 --link0 10.0.1.12

# На ноде 3
pvecm add 10.0.1.11 --link0 10.0.1.13

Проверяем статус кластера:

pvecm status
pvecm nodes

Развёртывание Ceph через веб-интерфейс Proxmox

Proxmox VE включает интегрированную установку Ceph прямо из веб-интерфейса. Перейдите в любую ноду → CephInstall Ceph. Выберите версию Reef (18.x) и нажмите Install.

Альтернативно, через CLI на каждой ноде:

pveceph install --repository no-subscription
pveceph init --network 10.0.10.0/24 --cluster-network 10.0.10.0/24

Параметр --network задаёт public network (трафик клиентов), а --cluster-network — сеть для репликации между OSD. В небольших кластерах можно использовать одну сеть.

Создание мониторов и менеджеров

Ceph-мониторы (MON) отвечают за карту кластера и кворум. Минимум 3 монитора — по одному на ноду:

# На каждой ноде
pveceph mon create

# Проверка
pveceph status

Менеджеры (MGR) обеспечивают дополнительные функции мониторинга:

pveceph mgr create

После создания мониторов на трёх нодах статус должен показывать HEALTH_WARN (пока нет OSD) с 3 мониторами в кворуме.

Создание OSD

OSD (Object Storage Daemon) — процесс, управляющий одним диском. Для каждого NVMe-диска создаётся отдельный OSD:

# На ноде 1
pveceph osd create /dev/nvme0n1
pveceph osd create /dev/nvme1n1

# На ноде 2
pveceph osd create /dev/nvme0n1
pveceph osd create /dev/nvme1n1

# На ноде 3
pveceph osd create /dev/nvme0n1
pveceph osd create /dev/nvme1n1

Для оптимизации можно выделить отдельный NVMe под WAL и DB блоки Ceph:

pveceph osd create /dev/sda --db_dev /dev/nvme2n1 --wal_dev /dev/nvme2n1

После создания всех OSD статус кластера должен стать HEALTH_OK:

ceph -s
ceph osd tree

Настройка пулов и хранилищ

Ceph Pool — логическое хранилище с заданным уровнем репликации. Создаём пулы для VM-дисков и контейнеров:

# Пул для виртуальных машин (3 реплики)
pveceph pool create vm-pool --size 3 --min_size 2 --pg_num 128

# Пул для контейнеров
pveceph pool create ct-pool --size 3 --min_size 2 --pg_num 64

# Пул для ISO-образов и шаблонов
pveceph pool create iso-pool --size 2 --min_size 1 --pg_num 32

Параметры:

  • size=3 — три копии данных (переживает выход одной ноды)
  • min_size=2 — минимум копий для записи (при min_size=1 данные доступны при потере двух нод, но с риском)
  • pg_num — количество Placement Groups (формула: OSD * 100 / size / пулы)

Подключаем пулы как хранилища Proxmox:

# В веб-интерфейсе: Datacenter → Storage → Add → RBD
# Или через CLI:
pvesm add rbd ceph-vm --pool vm-pool --content images,rootdir --krbd 0
pvesm add rbd ceph-ct --pool ct-pool --content rootdir --krbd 0
pvesm add rbd ceph-iso --pool iso-pool --content iso,vztmpl --krbd 0

Теперь при создании VM или контейнера выбирайте хранилище ceph-vm или ceph-ct.

Живая миграция виртуальных машин

Благодаря общему хранилищу Ceph, виртуальные машины можно перемещать между нодами без остановки — это называется живая миграция (live migration).

Миграция через веб-интерфейс: правый клик по VM → Migrate → выберите целевую ноду → Migrate.

Через CLI:

# Живая миграция VM 100 на ноду pve-02
qm migrate 100 pve-02 --online

# Миграция контейнера
pct migrate 200 pve-03 --online --restart

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

# Перевести ноду в режим обслуживания (все VM мигрируют автоматически)
ha-manager set vm:100 --state migrate

# Или через HA-группы
ha-manager groupadd ha-group --nodes pve-01,pve-02,pve-03 --nofailback 0
ha-manager add vm:100 --group ha-group --state started --max_restart 3 --max_relocate 2

HA (High Availability) в Proxmox автоматически перезапускает VM на другой ноде при сбое. Для этого необходимо добавить VM в группу HA:

# В веб-интерфейсе: Datacenter → HA → Add
# Или CLI:
ha-manager add vm:100 --state started
ha-manager add vm:101 --state started
ha-manager add ct:200 --state started

Мониторинг и обслуживание кластера Ceph

Состояние кластера Ceph отображается в веб-интерфейсе Proxmox на вкладке Ceph. Основные команды для диагностики:

# Общий статус кластера
ceph -s

# Подробная информация об OSD
ceph osd tree
ceph osd df

# Статус пулов
ceph df detail
rados df

# Производительность в реальном времени
ceph -w

# Здоровье кластера с рекомендациями
ceph health detail

Типичные предупреждения и их решение:

  • HEALTH_WARN: 1 nearfull osd(s) — диск OSD заполнен более чем на 85%. Добавьте диски или удалите ненужные данные
  • HEALTH_WARN: too few PGs per OSD — увеличьте pg_num для пулов
  • HEALTH_WARN: clock skew detected — настройте NTP на всех нодах: timedatectl set-ntp true

Замена диска OSD

При выходе диска из строя Ceph автоматически перебалансирует данные на оставшиеся OSD. Процедура замены:

# 1. Помечаем OSD как вышедший из строя
ceph osd out osd.3

# 2. Останавливаем OSD
sudo systemctl stop ceph-osd@3

# 3. Удаляем из CRUSH-карты
ceph osd crush remove osd.3
ceph auth del osd.3
ceph osd rm osd.3

# 4. Физически заменяем диск

# 5. Создаём новый OSD на новом диске
pveceph osd create /dev/sdX

Перебалансировка данных начинается автоматически. Следите за прогрессом: ceph -w.

CephFS для общего файлового хранилища

Помимо блочного хранилища (RBD) для VM-дисков, Ceph поддерживает файловую систему CephFS — распределённое POSIX-совместимое хранилище.

Создаём CephFS через Proxmox:

# Создаём пулы для метаданных и данных
pveceph pool create cephfs-meta --size 3 --pg_num 32
pveceph pool create cephfs-data --size 3 --pg_num 128

# Создаём MDS (Metadata Server) на каждой ноде
pveceph mds create

# Создаём файловую систему
ceph fs new cephfs cephfs-meta cephfs-data

Подключаем CephFS как хранилище Proxmox:

pvesm add cephfs ceph-shared --content snippets,iso,vztmpl --fs-name cephfs

CephFS можно также монтировать на Linux-серверах как обычную файловую систему:

# На клиентской машине
sudo apt install ceph-common -y

# Получаем ключ
ceph auth get-key client.admin

# Монтируем
sudo mount -t ceph 10.0.10.11:6789,10.0.10.12:6789,10.0.10.13:6789:/ /mnt/cephfs \
  -o name=admin,secret=AQDxxxxxxxxxxxxxxxxxxxxx==

# Или через fstab
echo '10.0.10.11:6789,10.0.10.12:6789:/ /mnt/cephfs ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime 0 0' >> /etc/fstab

CephFS удобен для хранения ISO-образов, шаблонов контейнеров и бэкапов, доступных со всех нод кластера.

Часто задаваемые вопросы

Технически возможно с помощью внешнего кворум-устройства (QDevice) на третьей машине, но Ceph с двумя нодами не обеспечивает отказоустойчивость хранилища — при выходе одной ноды данные недоступны. Минимум для продакшена — 3 ноды.

Минимум 10 Гбит/с для Ceph-трафика. С 1 Гбит/с кластер будет работать, но производительность дисков NVMe будет ограничена сетью. Для NVMe-дисков с пропускной способностью 3+ ГБ/с рекомендуется 25 Гбит/с. Обязательно включите Jumbo Frames (MTU 9000).

При трёх репликах (size=3) полезная ёмкость составляет 1/3 от суммарной. Например, 6 NVMe по 1 ТБ (2 на ноду) дают 6 ТБ сырого пространства и 2 ТБ полезного. Ceph не рекомендует заполнять хранилище более чем на 85%, итого ~1.7 ТБ.

Можно, но производительность будет значительно ниже. Для VM-дисков рекомендуются SSD или NVMe. HDD подходят для холодного хранения — бэкапы, архивы. Можно создать два класса хранения: быстрый NVMe-пул для VM и медленный HDD-пул для бэкапов, используя CRUSH-правила Ceph.

Добавление ноды в Proxmox+Ceph кластер выполняется без простоя. Установите Proxmox VE на новый сервер, добавьте его в кластер (pvecm add), установите Ceph (pveceph install), создайте MON, MGR и OSD. Ceph автоматически перебалансирует данные, распределив их на четыре ноды.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#Proxmox#Ceph#гиперконвергентный кластер#HCI#виртуализация#распределённое хранилище#OSD#живая миграция
Комментарии 0

Оставить комментарий

загрузка...