170 lines
4.9 KiB
Markdown
170 lines
4.9 KiB
Markdown
# разворачиваем Linstor на кластере Proxmox
|
||
|
||
## Proxmox
|
||
|
||
1. поднимаем три ноды pve{1,2,3}
|
||
1.1 по два диска sd{a,b}
|
||
1.2 по две сетевых 192.168.9.20{1,2,3}, 10.0.0.20{1,2,3}
|
||
|
||
2. создаем кластер
|
||
2.1 не забываем про /etc/hosts
|
||
|
||
## Кластер Linstor
|
||
|
||
### работаем на всех трех нодах PVE{1,2,3}
|
||
|
||
1. Ставим drbd на всех нодах
|
||
|
||
```bash
|
||
apt update && apt install -y mc htop zip wget curl git net-tools gnupg2
|
||
|
||
wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
|
||
echo "deb http://packages.linbit.com/proxmox/ proxmox-7 drbd-9" > /etc/apt/sources.list.d/linbit.list
|
||
|
||
apt-get update && apt-get -y install pve-headers drbd-dkms drbd-utils
|
||
```
|
||
|
||
2. Ставим пакет для proxmox и для хранилищ
|
||
|
||
```bash
|
||
apt-get -y install linstor-proxmox linstor-satellite
|
||
|
||
systemctl start linstor-satellite.service
|
||
systemctl enable --now linstor-satellite.service
|
||
```
|
||
|
||
3. Создаем пул для данных
|
||
|
||
```bash
|
||
pvcreate /dev/sdb
|
||
vgcreate drbd0 /dev/sdb
|
||
lvcreate -l 100%FREE --thinpool drbd0/lvmthinpool
|
||
```
|
||
|
||
4. Ребутим ноды, что бы загрузился модуль drdb-9
|
||
|
||
проверить его можно так:
|
||
|
||
```bash
|
||
modprobe drbd
|
||
reboot
|
||
|
||
cat /proc/drbd
|
||
```
|
||
|
||
### Сетапим контроллер Linstor
|
||
|
||
1. Поднимаем контроллер в LXC-контейнере (за основу берем debian-11, в нем две сетевых 192.168.9.225 и 10.0.0.225), в нем устанавливаем пакеты контроля:
|
||
|
||
```bash
|
||
apt update && apt install -y mc htop zip wget curl git net-tools gnupg2
|
||
|
||
wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
|
||
echo "deb http://packages.linbit.com/proxmox/ proxmox-7 drbd-9" > /etc/apt/sources.list.d/linbit.list
|
||
|
||
apt-get update && apt-get install -y linstor-controller linstor-client
|
||
|
||
systemctl start linstor-controller.service
|
||
systemctl enable --now linstor-controller.service
|
||
|
||
dpkg-reconfigure tzdata
|
||
```
|
||
|
||
2. Поднимаем сателиты и сразу указываем интерфейсы для репликации
|
||
|
||
```bash
|
||
linstor node create pve1 10.0.0.221
|
||
linstor node create pve2 10.0.0.222
|
||
linstor node create pve3 10.0.0.223
|
||
|
||
linstor node interface create pve1 data 10.0.0.221
|
||
linstor node interface create pve2 data 10.0.0.222
|
||
linstor node interface create pve3 data 10.0.0.223
|
||
```
|
||
|
||
3. Проверяем
|
||
|
||
```bash
|
||
linstor node list
|
||
```
|
||
|
||
3. Подключаем хранилища и сразу настраиваем их на репликацию через наш интерфейс data
|
||
|
||
```bash
|
||
linstor storage-pool create lvmthin pve1 drbdpool0 drbd0/lvmthinpool
|
||
linstor storage-pool create lvmthin pve2 drbdpool0 drbd0/lvmthinpool
|
||
linstor storage-pool create lvmthin pve3 drbdpool0 drbd0/lvmthinpool
|
||
|
||
linstor storage-pool set-property pve1 drbdpool0 PrefNic data
|
||
linstor storage-pool set-property pve2 drbdpool0 PrefNic data
|
||
linstor storage-pool set-property pve3 drbdpool0 PrefNic data
|
||
```
|
||
|
||
4. проверяем
|
||
|
||
```bash
|
||
linstor storage-pool list
|
||
```
|
||
|
||
5. создаем группы ресурсов и добавляем туда пулы
|
||
|
||
```bash
|
||
linstor resource-group create --storage-pool drbdpool0 --place-count 2 drbdrg0
|
||
linstor volume-group create drbdrg0
|
||
|
||
linstor resource-group create --storage-pool drbdpool0 --place-count 3 drbdrg1
|
||
linstor volume-group create drbdrg1
|
||
```
|
||
|
||
## Proxmox
|
||
|
||
1. подключаем новое хранилище в прокс
|
||
|
||
```bash
|
||
cat >> /etc/pve/storage.cfg <<EOF
|
||
|
||
drbd: drbdpool0
|
||
content rootdir,images
|
||
controller 10.0.0.225
|
||
resourcegroup drbdrg0
|
||
|
||
drbd: drbdpool1
|
||
content rootdir,images
|
||
controller 10.0.0.225
|
||
resourcegroup drbdrg1
|
||
EOF
|
||
```
|
||
|
||
2. создаем тестовый контейнер с диском на новом хранилище, проверяем
|
||
|
||
```bash
|
||
linstor v list
|
||
```
|
||
|
||
3. настриваем HA для контроллера при отказе нод
|
||
|
||
## Тюнинг
|
||
|
||
1. Split-brain
|
||
|
||
```bash
|
||
linstor controller drbd-options --after-sb-0pri=discard-zero-changes --after-sb-1pri=discard-secondary --after-sb-2pri=disconnect
|
||
```
|
||
|
||
2. Оптимальная синхронизация для 1Г сетей
|
||
|
||
```bash
|
||
linstor controller drbd-options --max-buffers=3686 --rcvbuf-size=209715 --sndbuf-size=104857
|
||
linstor controller drbd-options --c-fill-target=1024 --c-max-rate=73728 --c-min-rate=2048 --c-plan-ahead=10
|
||
```
|
||
|
||
3. про высокую доступность и 3 контроллера [тут](https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-linstor_ha)
|
||
|
||
## Видео к курсу
|
||
- [видео](https://realmanual.ru/public/course/178e2fb6-b7d8-4c79-98fd-3da1491be462)
|
||
|
||
##### Автор
|
||
- **Vassiliy Yegorov**
|
||
- [сайт](https://realmanual.ru)
|
||
- [youtube](https://youtube.com/realmanual)
|