Ceph в ProxMox на ZFS

У своїй роботі (системний адміністратор) завжди доводиться шукати речі і знання, унікальні для свого регіону. Однією з таких речей в нашій конторі є ProxMox, поставлений на файлової системи ZFS, що дозволяє використовувати непоганий raid масив без використання залізних контролерів. Одного разу, думаючи, що можна ще здивувати і порадувати клієнтів, ми вирішили все це поставити на розподілену файлову систему Ceph. Не знаю вже, наскільки було таке рішення адекватним, але я вирішив втілити бажання в життя. І тут понеслася… Я перелопатив гори статей і форумів, але так і не знайшов одного адекватного мануала, описує в подробицях що і як робити, тому, впоравшись з усім, народилася ця стаття, кому цікаво, ласкаво просимо під кат.
image

Отже, в принципі, все робиться в консолі і веб-морда ProxMox нам особливо не потрібна. Робив я все в тестовому режимі, тому було піднято дві виртуалки з чотирма дисками не дуже потужного по залізу проксмокса (отака матрьошка). Чотири диска спочатку були обумовлені тим, що хотілося підняти, як і на майбутньому вже не тестовому залозі, на ZFS10, але не вийшла золота рибка по невідомим мені причинам (насправді, було лінь розбиратися). Вийшло так, що ProxMox не зміг розмітити ZFS10 на віртуальних дисках, тому було вирішено використовувати трохи іншу «географію». На одному з дисків ставилося власне сам ProxMox, на двох інших піднімався ZFS1, третій був нібито під журнал Ceph, але я в підсумку про нього забув, тому поки залишимо його в спокої. Отже, приступимо.
Тут буде невелика вступна:
Проксмокс у нас свежеустановленный в двох місцях. Ноди називаються ceph1 і ceph2. Робимо на обох ноди, все однаково, крім тих місць, що я позначу. Мережа у нас 192.168.111.0/24. Перша нода (ceph1) має адресу 192.168.111.1, друга (ceph2) — 192.168.111.2. Диски на обох нодам мають наступні значення: /dev/vda — диск, на якому стоїть ProxMox, /dev/vdb і /dev/vdc — диски, призначені для ZFS, /dev/vdd — диск для журналу Ceph.
Перше, що нам потрібно зробити, це змінити платний репозиторій ProxMox, що вимагає підписки, на безкоштовний:
nano /etc/apt/sources.list.d/pve-enterprise.list

Там коментуємо єдиний рядок і вписуємо нову нижче:
deb http://download.proxmox.com/debian jessie pve-no-subscription

Далі оновлюємо наш ProxMox:
apt update && apt dist-upgrade

Встановлюємо пакети для роботи з Ceph:
pveceph install -version hammer

Наступним кроком нам потрібно зробити кластер з проксмоксов.
На першій ноде виконуємо послідовно:
pvecm create mycluster

де mycluster — це ім'я нашого кластера.
На другий ноде:
pvecm add 192.168.111.1

Погоджуємося з тим, що потрібно прийняти ключ ssh і вводимо пароль root від першої ноди.
Перевіряємо все це справа командою pvecm status
Далі инициализуруем конфігурацію Ceph (робиться тільки на першій ноде, яка буде «головною»):
pveceph init --network 192.168.111.0/24

це створить нам симлинк на /etc/ceph/ceph.conf, від якого ми будемо відштовхуватися далі.
Відразу після цього нам треба додати туди опцію розділ [osd]:
[osd]
journal dio = false

Це пов'язано з тим, що ZFS не вміє directIO.
Таке, що робимо, це готуємо наш ZFS пул. Для цього диски потрібно розмітити в GPT:
fdisk /dev/vdb

Там послідовно натискуємо g і w (g для створення таблиці GPT і w для прийняття змін). Те ж саме повторюємо на /dev/vdc.
Створюємо дзеркальний ZFS пул, називатися він у нас буде як прийнято в ProxMox – rpool:
zpool create rpool mirror /dev/vdb /dev/vdc

Перевіримо командою zpool status -v і отримаємо (принаймні повинні):
pool: rpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
vdb ONLINE 0 0 0
vdc ONLINE 0 0 0
errors: No known data errors

ZFS пул у нас створено, прийшло саме час зайнятися головним — ceph.
Створимо файлову систему (дивна назва, але воно взято з доками за ZFS) для нашого монітора Ceph:
zfs create -o mountpoint=/var/lib/ceph/mon rpool/ceph-monfs

Створимо сам монітор (спочатку на першій ноде, потім на другий):
pveceph createmon

Далі починається те, з чим довелося повозитися, а саме те, як зробити блочний пристрій для Ceph OSD (а він саме з ними й працює) в ZFS і щоб воно працювало.
А робиться все просто — через zvol:
zfs create -V 90G rpool/ceph-osdfs 

90G — це те, скільки ми віддаємо нашу Ceph на розтерзання. Так мало тому, що віртуальний сервер і більше 100G я йому не давав.
Ну і зробимо сам Ceph OSD:
ceph-disk prepare --zap-disk --fs-type xfs --cluster ceph --cluster-uuid FSID /dev/zd0

--fs-type у нас вибрано XFS тому, що XFS — це дефолтна ФС у Ceph. FSID — це ID нашого Ceph, який можна підглянути в /etc/ceph/ceph.conf. Ну, і /dev/zd0 — це наш zvol.
Якщо після цього у вас df -h не покаже приблизно таке:
/dev/zd0p1 85G 35M 85G 1% /var/lib/ceph/osd/ceph-0

значить щось пішло не так і вам потрібно перезавантажитися, або ще раз потрібно виконати створення ceph OSD.
загалом, на цьому ми вже зробили наш ceph і можна далі їм рулити вже в вебморде ProxMox і створити на ньому потрібне RDB сховище, але ви не зможете його використовувати (власне, заради чого все це затівалося). Лікується простим способом (для цього все-таки сховище треба створити) — потрібно скопіювати ключ ceph з першої ноди в другу.
Відкриваємо конфіг сховищ ProxMox:
nano /etc/pve/storage.cfg 

І вписуємо туди потрібний нам RBD:
rbd: test
monhost 192.168.111.1:6789;192.168.111.2:6789
pool rbd
krbd 1
username admin
content images

Тут test — це ім'я нашого сховища, а IP-адреси — це те, де знаходяться ceph монітори, тобто наші проксмоксы. Інші опції дефолтні.
Далі створюємо папку для ключа на другий ноде:
mkdir /etc/pve/priv/ceph

І копіюємо ключ з першої:
scp ceph1:/etc/ceph/ceph.client.admin.keyring /etc/pve/priv/ceph/test.keyring

Тут ceph1 — наша перша нода, а test — ім'я сховища.
На цьому можна ставити крапку — сховище активно і працює, можемо користуватися всіма плюшками ceph.
Дякую за увагу!
Для того, щоб все це підняти, користувався даними посиланнями:
» https://pve.proxmox.com/wiki/Storage:_Ceph
» https://pve.proxmox.com/wiki/Ceph_Server
» http://xgu.ru/wiki/ZFS
» https://forum.proxmox.com
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.