
Citrix XEN сервер + HA-Lizard - Кластер из дЗенов
Установка xen-server и HA-Lizard на локальных хранилицах.
Скачать FREE версию XEN сервера всегда можно с оф.сайта, правда придется зарегистрироваться.
Ограничения Free версии:
- не более 3-х хостов в пуле.
- отсутствие штатного HA
- отстутствие Dynamc memory Control
- отсутствие интеграции с AD
- значки Unlicensed на хостах и пуле
(всё вышеописанное не мешает достаточно полноценно пользоваться им)
Системные требования к серверу
Minimum | Normaly | |
CPU | 1.5GHz | 2GHz One or more 64-bit x86 CPU(s) с аппаратной виртуализацией |
RAM | 2GB | 4GB |
HDD | 46GB | 70GB Локальные (PATA, SATA, SCSI) или внешний SAN |
LAN | 1x100Mb/s | >2x1Gb/s (для HA lizard - минимум 2 интерфейса) |
Схема сети
В идеале надо стремиться к схеме:
Master xen: xen-serv1
management interface: 172.16.11.56
replication interface: 10.3.0.1
Slave xen: xen-serv2
management interface: 172.16.11.57
replication interface: 10.3.0.2
Самая простая конфигурация - два ПК, примерно с одинаковыми параметрами, с двумя сетевыми картами в каждом, гигабитные соеденены патчкордом.
Установка Xen Серверов
- тащим образ XenServer-7.1.0-install-cd.iso и XenServer-7.1.0-XenCenterSetup-7.1.1.exe с например тут. С citrix.com уже не утащить. Или качаем официальную Free версию 7.6.
- Requires additional permissions to access.
- записываем образ XenServer-7.x.0-install-cd.iso на флэшкарту (например, с помощью win32diskimager) или CD
- загружаем сервер с данного носителя.
- выбираем язык - ru (просто ru)
- welcome to xenserver setup.... - OK
- accept EULA
- Perform clean instalation - OK (HA-lizard, который ставиться позже, хочет чистую установку)
- выбор диска - OK
- select instalation source - local media - OK
- skip verification (source) - OK (нам же быстрее надо)
- дважды вводим пароль root.. - OK
- выбираем сетевой адаптер для management interface - OK
- забиваем сетевые параметры сетевого интерфейса управления - OK
- hostname и DNS - OK
- europe - OK
- moscow - OK
- настраиваем NTP (очень желательно) - OK
- вводим пару - OK
- жмём install xenserver и ждём
- Would you like to install supplemental packs? - No
- The Xenserver instalation has completed. Вынимаем носитель. Жмём ОК.
- Сервер установлен. Повторяем действия со вторым сервером.
- обновить из XenCenter сервер: tools -> install updates
- можно разрешить репозитории: vi /etc/yum.repos.d/CentOS-Base.repo В секции [base] раскомментировать baseurl= и enabled=1 (установить)
- Для того, чтобы bond не разваливался при перезапуске хоста citrix рекомендует:
systemctl status fcoe
systemctl status xs-fcoe
systemctl stop fcoe
systemctl stop xs-fcoe
systemctl disable fcoe
systemctl disable xs-fcoe
, однако это не помогает. А помогает включать bond не в режиме active-active, а в LACP with load balancing on source MAC address
- устанавливам XenCenter на управляющем компе в сети.
- добавить XEN сервера в пул с помощью XenCenter
- соединить Replication интерфейсы между собой.
(При наличии бОльшего колическтва интерфейсов имеет смысл создать Bounded network из 2х и более интерфейсов. После создания потребуется перезагрузка)
- подключить SMB или NFS ISO библиотеку к пулу
Установка HA lizard c объединенными в софт-iscsi локальными хранилищами
- проверить или создать репликационную сеть 10.3.0.0 в xen-center.
- включить HA на пуле, если нужно
- скачать скрипт установки halizard_nosan_installer_2.1.4 Для версии сервера 7.* или более актуальный - https://www.halizard.com/ha-lizard-software/ha-lizard-nosan-installer-xen-7
- залить с помощью winSCP на оба сервера в /tmp и установить флаг X (запуск)
- запустить ssh сессии на оба сервера и на обоих выполнить /tmp/halizard_nosan_installer_2.1.4
- нажать enter для начала установки
- ответы на вопросы
Master: | Slave: |
10.3.0.1 | 10.3.0.2 |
10.3.0.2 | 10.3.0.1 |
10.3.0.3 | 10.3.0.3 |
xen-serv1 | xen-serv1 |
xen-serv2 | xen-serv2 |
1 | 1 (указать репликационную сеть, интерфейсы) |
yes | yes |
10 | 10 |
172.16.11.32 | 172.16.11.32 (просто постоянно включенный узел в сети, например коммутатор) |
- подключить в XenCenter soft-iscsi хранилище к пулу по адресу 10.3.0.3
- проверить процесс репликации на серверах через SSH
cat /proc/drbd
- проверить сервис ha-lizard::
service ha-lizard status
ha-lizard running: 22952 [ OK ]
- проверить статус ha-cfg на мастере:
ha-cfg status
Pool HA Status: DISABLED
Ввести yes
Pool HA Status: ENABLED
Можно устанавливать виртуалки.
Настройка ящерицы (HA-Lizard)
OP-MODE
1 = управлять устройствами,
2 = управлять виртуальными машинами
Значение по умолчанию = 2
global_vm_ha
Укажите, следует ли отдельно включать HA на каждой виртуальной машине в пуле (когда OP_MODE = 2).
0 = Вы должны индивидуально установить ha-lizard-enabled на true / false для каждой виртуальной машины в пуле
1 = ВСЕ ВМ имеют включенную HA независимо от настроек в GUI / CLI
disabled_vapps Укажите UUID (и) vapps, которые не запускаются автоматически ha-lizard, когда OP_MODE = 1 (управление приборы) Массив ":" разделен следующим образом (UUID1: UUID2: UUID3) Оставьте пустым, если ВСЕ vapps управляются ящерица "DISABLED_VAPPS = ()" применяется только когда OP_MODE = 1
Посмотреть статус VM (включен HA или нет)
ha-cfg get-vm-ha
Выбраны настройки
OP-MODE=2
global_vm_ha=0
В xencenter на пуле создан custom field "ha-lizard-enabled"
Для тех VM, которым не нужен HA значение параметра установлено в false, остальные - true
Устранение сбоев:
Тип сбоя | Результат и действия |
ыключение по питанию SLAVE и включение его | Автоматическое перемещение VMs на MASTER и запуск их. Деёствия не требуются |
выключение по питанию MASTER и включение его | Автоматическая смена роли: SLAVE становится MASTER. VMs запускаются на новом MASTER. |
отключение и выход из строя SLAVE | 1... 2.В XenCenter сказать сломанному серверу Destroy. ISCSi должно перестроиться. 3.Проинсталлировать новый сервак с теме же версиями, и ввести в пул. 4.Создать репликационную сеть, закачать скрипт установки и пройти пути для SLAVEа. 5.Дождаться синхронизации и сервер готов. |
отключение и выход из строя MASTER | 1.Автоматическая смена роли: SLAVE становится MASTER. VMs запускаются на новом MASTER. 2.В XenCenter сказать сломанному серверу Destroy. ISCSi должно перестроиться. 3.Проинсталлировать новый сервак с теме же версиями, и ввести в пул. 4.Создать репликационную сеть, закачать скрипт установки и пройти пути для SLAVEа. 5.Дождаться синхронизации и сервер готов. |
Возможные проблемы на Drbd:
расстройка конфигурации:
cat /proc/drbd
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r-----
1. Стартануть Drbd на обоих
2. Указать первому, что он secondary и отменить все данные
drbdadm secondary all
drbdadm disconnect all
drbdadm -- --discard-my-data connect all
drbdadm primary all drbdadm disconnect all drbdadm connect all
(HA мы не используем, т.к. используется HA-lizard service, но вдруг будет полезно)
- Неправильная перезагрузка мастера с HA приводит к выпадению мастера из пула.
Решение: Зайти на мастер и потушить HA
xe host-emergency-ha-disable force=true
подключиться в xen-centrу и перезапустить HA
полезные команды
-список виртуальных машин и серверов XEN:
xe vm-list
-Просмотр хостов в пуле:
xe host-list
-Показать мастер сервер пула:
xe pool-list params=uuid,master
- остановка VM
xe vm-shutdown uuid= force=true
xe vm-reset-powerstate uuid= force=true
- удаление VM:
xe vm-destroy uuid=
xe vdi-destroy uuid=
-Перезагрузка XenVM:
xe vm-reboot uuid=684f260e-cb1a-0630-360c-3ea1d7eb930d force=true
- включение/отключение ручного режима
iscsi-cfg manual-mode-enable/disable
СМЕНА РОЛЕЙ.(На HA-Lizard происходит автоматически, но вдруг понадобится)
Сначала оба хоста приводятся к slave, потом один из них выводится в master
- повышение хранилища до master mode (в ручном режиме)
iscsi-cfg become-primary
(при перезапуске хоста в ручном режиме, виртуалки потеряют связь с хранилищем)
- понидение хранилища до slave mode (в ручном режиме)
iscsi-cfg become-secondary
- Посмотреть свободное место на хранилище
vgs
- Посмотреть размеры виртуальных дисков
vhd-util scan -f -m "VHD-*" -l VG_XenStorage-197d07e3-f1b9-6ddd-56fd-75a41d0ee1b3 -p
- скрипт для выключения хоста
xe vm-list
echo "disabling host"
xe host-disable
echo "VMs poweroff"
xe vm-shutdown --multiple
echo "VMs poweroff force"
xe vm-shutdown --multiple force=true
echo "Power Off"
xe host-reboot
#xe host-shutdown
Проброс USB
lspci | grep USB
проброс xe vm-param-set other-config:pci=0/000:00:1d.0 uuid=684f260e-cb1a-0630-360c-3ea1d7eb930d
Проверка xe vm-param-list uuid=684f260e-cb1a-0630-360c-3ea1d7eb930d | grep other-config
Отключить xe vm-param-remove param-name=other-config param-key=pci uuid=684f260e-cb1a-0630-360c-3ea1d7eb930d
XEN BACKUP
Скрипт бэкапа xen server надо прописать в cron, например раз в сутки.
- работа с SMB шарой
- бэкапятся только HA-lizard-enable=true машины
- защита от повторного запуска (при большом объеме бэкапы могут перекрыться по времени)
#!/bin/bash cifs="//10.10.10.32/back" #backup share mnt=/mnt/nfs/back/ #mount path user_cifs=user #share username passwd_cifs=password #share password mnt_xen=/mnt/nfs/back/xen_r #backup folder max_day_live=3 #backup time to live dateback=$(date +%y%m%d) #folder date format run_flag=/tmp/xen-backup.run if [ ! -f "$run_flag" ]; then touch $run_flag UNAM=$(uname -n) LOG=/tmp/$dateback-$UNAM-backup.log log(){ message="$(date +"%b %d %T") $UNAM: $@" echo -e $message echo -e $message >>$LOG } log "Start XEN backup script" #umount share umount $mnt #mount share mount -t cifs $cifs $mnt -o user=$user_cifs,password=$passwd_cifs log "Delete old backups on $mnt_xen for $max_day_live days ago" #delete old backups find $mnt_xen -mtime +$max_day_live -exec rm -rf {} \; #get VM list vmlist=$(xe vm-list is-control-domain=false is-a-snapshot=false | awk -F: '$1 ~ /^uuid/ {print $2}' | tr -d " ") # Cicle by uuids for vm in $vmlist do #get VM name vmname=$(xe vm-list uuid=$vm params=name-label | grep name-label | awk -F: '{print $2}' | tr -d " ") #get VM state vmstate=$(xe vm-list uuid=$vm params=name-label,other-config | grep -o -P '(?<=lizard-enabled: ).*(?=; home)' ) log "$vmname: HA-state is $vmstate" if [ "$vmstate" == "true" ]; then log "Start backuping $vmname" #making snapshot, get uuid uuidsn=$(xe vm-snapshot uuid=$vm new-name-label=snapshotname) #restore from snapshot xe template-param-set is-a-template=false ha-always-run=false uuid=$uuidsn #export vm to file.xva xe vm-export vm=$uuidsn filename=$mnt_xen/$dateback-$vmname.xva #delete vm xe vm-uninstall uuid=$uuidsn force=true log "Finish backuping $vmname" fi done log "Finish XEN backup script" vgs >> $LOG cp $LOG $mnt_xen rm $LOG #umount share umount $mnt rm $run_flag fi
Источники:
[tags]citrix,xen,server,HA,lizard,виртуализация,сервер,centos,linux[/tags]
lisolog / 2018