Как создать тестовую среду кластера с использованием виртуализации CentOS 5 и iSCSI
Обзор
Это руководство показывает, как подготовить Xen‑базированную тестовую среду, где можно отработать развёртывание двухузлового кластера. Саму установку кластера тут не описываю — задача документации — дать все необходимые компоненты и конфигурацию для выполнения последующих шагов.
XEN поддерживает два типа гостевых систем: паравиртуализованные (PV) и полностью виртуализованные (HVM).
- Для PV-гостей требуется дерево установки Red Hat Enterprise Linux 5, доступное по NFS, FTP или HTTP.
- Для HVM-гостей нужен DVD/CD‑ROM или загрузочный ISO и сетевое дерево установки.
В этом документе показан вариант с паравиртуализованными гостями. В примере участвуют три системы:
- node00 — физический хост виртуальные IP: 192.168.222.1 (public1 vlan), 192.168.100.1 (private1 vlan)
- node01 — гостевая PV‑система 1 виртуальные IP: 192.168.222.10 (public1 vlan), 192.168.100.10 (private1 vlan)
- node02 — гостевая PV‑система 2 виртуальные IP: 192.168.222.20 (public1 vlan), 192.168.100.20 (private1 vlan)
Что я использовал
- Сервер HP Blade bl25p с 4 ГБ оперативной памяти (AMD64). Достаточно хватающей ОЗУ и CPU для запуска нескольких PV‑гостей.
- CentOS i386 5 update 1 — DVD ISO. Из этого ISO были подготовлены HTTP, NFS и FTP источники установки и локальный yum‑репозиторий.
- LVM‑тома для размещения образов гостей и «виртуальных LUN» для iSCSI (вместо LVM можно использовать разделы, но здесь использованы LV).
Настройка LVM (пример)
Ниже приведён вывод lvs из моей конфигурации (lvLUN0* — тома, используемые для iSCSI и разделяемые гостями):
lvs LV VG Attr LSize Origin Snap% Move Log Copy%
lvLUN01 Virtual00VG -wi-ao 50.00G
lvLUN02 Virtual00VG -wi-ao 50.00G
lvNODE01 Virtual00VG -wi-ao 30.00G
lvNODE02 Virtual00VG -wi-ao 30.00G
lvNODE03 Virtual00VG -wi-ao 15.00G
lvsys00 vg00 -wi-ao 512.00M
lvsys01 vg00 -wi-ao 8.00G
lvsys02 vg00 -wi-ao 8.00G
lvsys03 vg00 -wi-ao 512.00M
lvsys04 vg00 -wi-ao 128.00M
lvsys05 vg00 -wi-ao 1.00G
lvsys06 vg00 -wi-ao 256.00M
Подготовка хоста
Предполагается, что вы умеете устанавливать CentOS/RHEL и знакомы с RPM/YUM. Я использую PXE‑сервер и kickstart для автоматизации установки хоста (node00). Ниже — пример kickstart‑файла и шаги по созданию HTTP/NFS/FTP источников и локального yum‑репозитория.
Проверка групп пакетов и установка виртуализации
Чтобы увидеть группы пакетов CentOS:
yum grouplistЧтобы установить группу Virtualization:
yum groupinstall VirtualizationKickstart для node00
Вам нужно изменить значения под вашу сеть и устройство. Привожу пример kickstart, который я использовал для хоста node00.
## START node00_ks.cfg
#modify for your own settings
install
nfs --server=remote_server --dir=/path/to/CENTOS5U1/i386
lang en_US.UTF-8
keyboard us
skipx
reboot
network --device eth2 --bootproto static --ip a.b.c.1 --netmask 255.255.255.0 --gateway a.b.c.2 --nameserver x.y.z.n --hostname node00.example.com
# grub and root password is a1s2d3f4g5
rootpw --iscrypted $1$3CXK2$CG9WlX2PuPpp7nxYMQGwP0
firewall --disabled
authconfig --enableshadow
selinux --disabled
timezone Asia/Singapore
bootloader --location=mbr --driveorder=cciss/c0d0 --append="rhgb quiet" --md5pass=$1$3CXK2$CG9WlX2PuPpp7nxYMQGwP0
clearpart --all --initlabel --drives=cciss/c0d0
part /boot --fstype ext3 --size=100 --ondisk=cciss/c0d0
part pv.100000 --size=100 --grow --ondisk=cciss/c0d0 --asprimary
volgroup vg00 --pesize=32768 pv.100000
logvol /tmp --fstype ext3 --name=lvsys05 --vgname=vg00 --size=1024
logvol /opt --fstype ext3 --name=lvsys04 --vgname=vg00 --size=128
logvol /var --fstype ext3 --name=lvsys03 --vgname=vg00 --size=512
logvol /usr --fstype ext3 --name=lvsys02 --vgname=vg00 --size=8192
logvol swap --fstype swap --name=lvsys01 --vgname=vg00 --size=8192
logvol /home --fstype ext3 --name=lvsys06 --vgname=vg00 --size=256
logvol / --fstype ext3 --name=lvsys00 --vgname=vg00 --size=512
%packages
@development-libs
@editors
@system-tools
@text-internet
@x-software-development
@virtualization
@dns-server
@core
@base
@ftp-server
@network-server
@legacy-software-development
@base-x
@web-server
@printing
@server-cfg
@sql-server
@admin-tools
@development-tools
lsscsi
createrepo
audit
net-snmp-utils
iptraf
tftp
lynx
mesa-libGLU-devel
kexec-tools
bridge-utils
device-mapper-multipath
vnc-server
xorg-x11-server-Xnest
xorg-x11-server-Xvfb
imake
openmotif
-vim-enhanced
-zisofs-tools
-zsh
-bluez-hcidump
-sysreport
## END of node00_ks.cfg
Настройка HTTP/NFS/FTP источников
Ниже пример конфигурации Apache для выдачи образа CentOS по HTTP. Файл: /etc/httpd/conf.d/centos5u1.conf
#/etc/httpd/conf.d/centos5u1.conf
Alias /centos5u1 /var/ftp/pub/centos5u1
Options Indexes FollowSymLinks MultiViews
IndexOptions FancyIndexing
Order deny,allow
Deny from all
Allow from 127.0.0.1 ::1 all
Запустите и добавьте в автозагрузку:
service httpd start
chkconfig httpd onДля NFS отредактируйте /etc/exports:
# /etc/exports
/var/ftp/pub/centos5u1 192.168*(ro)И запустите сервисы:
service nfs start
chkconfig nfs onFTP: если каталоги уже в /var/ftp/pub/centos5u1, достаточно запустить vsftpd:
service vsftpd start
chkconfig vsftpd onЛокальный YUM‑репозиторий
Я использовал loopback‑монтирование ISO в каталог установки и создал репозиторий командой createrepo.
cd /var/ftp/pub/centos5u1/
mkdir temp
mount -o loop CentOS-5.1-i386-bin-DVD.iso temp
cp -pr temp i386
umount temp
createrepo -g i386Для RHEL5 используйте compos‑файл:
createrepo -g repodata/comps-rhel5-server-core.xml ServerПример файла репозитория /etc/yum.repos.d/CentOS5.repo:
#/etc/yum.repos.d/CentOS5.repo
[centos5-Server]
name=CentOS5 Server
baseurl=http://node00/centos5u1/i386
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
Убедитесь, что node00 разрешается через /etc/hosts или замените node00 на его IP.
VNC для удалённого GUI
Если у вас нет локальной консоли, используйте vncserver на node00 и подключайтесь через vncviewer (node00:1):
vncserverПример вывода при первом запуске (создание пароля и файла .Xauthority):
You will require a password to access your desktops.
Password:
Verify:
xauth: creating new authority file /root/.Xauthority
New 'node00.example.com:1 (root)' desktop is node00.example.com:1
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/node00.example.com:1.log
Мини‑методология развертывания тестбеда
- Подготовка хоста: установить CentOS, настроить LVM, установить пакеты Virtualization.
- Подготовить инсталляционные источники (HTTP/NFS/FTP) и локальный yum‑репозиторий.
- Создать LV для гостей и LV для общего хранения (lvLUN*), настроить iSCSI target при необходимости.
- Создать PV‑гости через Xen, используя подготовленные источники (PXE/kickstart или ISO).
- Установить гостям необходимые пакеты и проверить сетевое взаимодействие между public/private vlan.
- Проверить доступность общих LUN через iSCSI с обеих гостевых систем.
Роли и чек‑листы
Администратор хоста:
- Установить CentOS по kickstart.
- Настроить LVM и выделить LV для гостей и LUN.
- Настроить HTTP/NFS/FTP и локальный createrepo.
- Установить пакеты Virtualization и убедиться, что libvirt/xend/выполняемые процессы работают.
Администратор хранения (Storage):
- Настроить iSCSI target (например, tgt/iscsi‑target) и пробросить lvLUN*.
- Проверить права доступа и сетевую изолированность между VLAN.
- Убедиться в корректности резервного копирования LVM metadata.
Администратор гостя:
- Создать/загрузить PV‑гостя через xm или virt‑install.
- Подключить iSCSI LUN, провести разметку и монтирование.
- Установить необходимые сервисы для теста кластера.
Критерии приёмки
- node00 успешно устанавливается и отображается в списке групп yum.
- HTTP/NFS/FTP каталоги доступны с других хостов в сети.
- LV lvLUN01 и lvLUN02 доступны через iSCSI из обеих гостевых систем одновременно (для тестирования кластерных файловых систем использовать подходящие СУФ).
- Гостевые системы корректно загружаются и имеют назначенные виртуальные IP.
Советы и распространённые ошибки
- Если kickstart не видит NFS, проверьте /etc/exports и сетевую доступность.
- При проблемах с createrepo убедитесь, что репо‑директория содержит repodata.
- Не пытайтесь использовать один и тот же блоковый LUN как обычный ext3/ext4 на двух машинах одновременно — это приведёт к порче данных; для одновременного доступа нужны кластерные файловые системы (GFS2/OCFS2) или специализированные решения.
- Для тестирования iSCSI target можно использовать пакеты tgt (istgt, scst или targetcli в зависимости от дистрибутива).
Примеры команд и сниппеты
- Список групп и установка виртуализации:
yum grouplist
yum groupinstall Virtualization- Монтирование ISO и создание репозитория:
mount -o loop CentOS-5.1-i386-bin-DVD.iso temp
cp -pr temp i386
createrepo -g i386- Запуск httpd и автозапуск:
service httpd start
chkconfig httpd onФакто‑бокс: ключевые параметры тестовой среды
- Количество хостов: 1 физический + 2 PV‑госта.
- RAM на физическом хосте в примере: 4 ГБ.
- Размеры LV в примере: lvLUN01/02 — по 50G, lvNODE* — 30/30/15G.
- Используемые технологии: Xen (PV), LVM, iSCSI, PXE/kickstart, createrepo.
Миграционные заметки и совместимость
- RHEL5/CentOS5 устарели по современным стандартам безопасности; для продакшн‑окружений рассматривайте более новые релизы и современные гипервизоры.
- Форматы LVM и iSCSI остаются совместимыми с более новыми версиями ядра, но пакеты и утилиты (tgt, iscsi) могли поменять имена и параметры.
Краткое резюме
- Подготовьте хост: LVM, локальный репозиторий, HTTP/NFS/FTP.
- Используйте kickstart и PXE для автоматических установок PV‑гостей.
- Создайте LV для LUN и экспортируйте их через iSCSI для тестирования кластерных сценариев.
Важно: перед одновременным монтированием блочных устройств на нескольких гостях используйте кластерные файловые системы или распределённые решения для предотвращения порчи данных.
Критические шаги: проверка сетевой доступности источников установки, корректная конфигурация iSCSI target и согласованность версий утилит на хосте и гостях.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента