Menu
Citrix XEN сервер + HA-Lizard - Кластер из дЗенов

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 интерфейса)




Схема сети

В идеале надо стремиться к схеме:

HA-Lizard original scheme

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

3. Установить второму режим master b подсоединить всё
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

 Добавление локального хранилища

# cat /proc/partitions
# ll /dev/disk/by-id
# xe sr-create content-type=user device-config:device=/dev/disk/by-id/scsi-3600062b20436eac02a51c472e7377607 host-uuid=b002398d-7c80-4901-a08c-a84da5c4f71b name-label=”Local SSD-1” shared=false type=lvm

- скрипт для выключения хоста

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]

1. If your current pool master server is online, you need to connect to it by ssh.
Before changing the pool master you have to disable the HA feature temporarily.

xe pool-ha-disable

Next, get the list of your current servers in the pool.

xe host-list

Get the uuid of the slave you want to make the new master and type in the command:

xe pool-designate-new-master host-uuid=<new-master-uuid>
xe pool-ha-enable

2. If your pool master is already down for some reason, you can still make any slave as master of the pool.
Issue the following commands from the slave that will become the new master:

xe pool-emergency-transition-to-master
xe pool-recover-slaves

lisolog / 2018