Подключаем ZFS over iSCSI на Oracle Linux 8 (CentOS) в Proxmox
Положим у вас есть кластер Proxmox и вы хотите отказоустойчивость.
Отказоустойчивость можно сделать через Ceph, но через Ceph рекомендуется фактор репликации = 3 (т.е. полезная емкость дисков будет в 3 раза меньше используемой) и вы может быть ещё пока не уверены справитесь ли с Ceph с точки зрения надёжности.
Значит чтобы можно было пережить отказ серверной ноды Proxmox и запустить ВМ на другой ноде надо общую хранилку.
Возможности системы хранения Proxmox: нас интересуют где Shared и Snapshots в yes. |
ZFS over iSCSI
ZFS over iSCSI: архитектура
Установка ZFS в Oracle Linux 8 (CentOS)
# source /etc/os-release# dnf install https://zfsonlinux.org/epel/zfs-release.el${VERSION_ID/./_}.noarch.rpm# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux# dnf install epel-release kernel-devel zfs# echo zfs >/etc/modules-load.d/zfs.conf# modprobe zfs
Поднимаем модуль ZFS:
# modprobe zfs
Создаём ZFS pool
zpool create -o ashift=14 tank raidz3 sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm
Установка iSCSI в Oracle Linux 8
Устанавливаем ПО для поддержки iSCSI от LIO и добавляем в автозапуск:
# dnf install targetcli
# systemctl enable --now target
Нам надо разрешить трафик на нужный порт и здесь внимательно: НЕ СТОИТ ОТКРЫВАТЬ iSCSI порт всем, как это сделано ниже. Настройте firewalld для пропуска трафика только с Proxmox. Для простоты же я приведу пропуск всем:
# firewall-cmd --permanent --add-port=3260/tcp
# systemctl reload firewalld
Приступаем к конфигурации iSCSI target:
# targetcli
/> cd iscsi/
Создаём target pool group в формате iqn, в котором указываем текущий год, месяц и в перевернутой форме имя хоста (в примере com.example, у вас хост хранилки), а также пул (tank только для примера):
/iscsi> create iqn.2021-09.com.example:tank
Смотрим что получилось:
/iscsi> ls
Переходим к настройке TPG:
/iscsi> cd iqn.2021-09.com.example:tank/tpg1
Сейчас надо будет настроить аутентификацию, иначе Proxmox не пустит по iSCSI. В данном случае отключаем аутентификацию и разрешаем писать всем, кто имеет доступ к порту (поэтому не делайте так, если не закрыли файрволлом порт iSCSI):
/iscsi/iqn.2021-09.com.example:tank/tpg1> set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1
Сохраняем конфигурацию:
/iscsi/iqn.2021-09.com.example:tank/tpg1> cd /
/> saveconfig
Идём в Proxmox и на каждой ноде в Shell выполняем настройку подключения к iSCSI.
В /etc/ssh/sshd_config:
UseDNS no
GSSAPIAuthentication no
Генерируем ключ в формате <portal>_id_rsa и переносим его на хранилку:
mkdir /etc/pve/priv/zfs
ssh-keygen -f /etc/pve/priv/zfs/172.16.1.2_id_rsa
ssh-copy-id -i /etc/pve/priv/zfs/172.16.1.2_id_rsa.pub root@172.16.1.2
На каждой ноде логинемся один раз по SSH и подтверждаем сохранение fingerprint:
ssh -i /etc/pve/priv/zfs/172.16.1.2_id_rsa root@172.16.1.2
Заходим в GUI Proxmox и добавляем новое хранилище, указав корректный ZFS pool и iqn с TPG:
В итоге в /etc/pve/storage.cfg будет что-то вроде:
zfs: example.com
blocksize 4k
iscsiprovider LIO
pool tank
portal 172.16.1.2
target iqn.2021-09.com.example:tank
content images
lio_tpg tpg1
nowritecache 1
sparse 1
Теперь попробуйте создать виртуальную машину QEMU на этом хранилище.
Комментарии
Отправить комментарий