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
Добавление локального хранилища
# 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