Возможно вы искали: 'Virtual City (2003)'

May 15 2025 18:41:33
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Создание кластера высокой доступности для XEN с Live миграцией в CentOS 5.3 с использованием VLAN и DRBD (xen cluster virtual centos)

Создание кластера высокой доступности для XEN с Live миграцией в CentOS 5.3 с использованием VLAN и DRBD (xen cluster virtual centos)

Ключевые слова: xen, cluster, virtual, centos, (найти похожие документы)

From: Andrey Zentavr
Newsgroups:
Date: Mon, 7 Aug 2009 17:02:14 +0000 (UTC)
Subject: Создание кластера высокой доступности для XEN с Live миграцией в CentOS 5.3 с использованием VLAN и DRBD

Предисловие: Статья была написана для сайта habrahabr.ru. Дабы она не
затерялась в просторах великого и могучего Интернета, решено было её
запостить на opennet.

После прочтения статьи Какая система виртуализации лучше? хабраюзера
point212 уж очень захотелось помочь парню. Достать его данные из
хабрасайта, увы, не вышло, а сам вот-вот только занимался этим же
вопросом. Потому было решено написать статью чтобы меня услышали и,
возможно, получить инвайт в хаброобщество.

Поехали! Итак, что у нас есть?

Два сервера средней мощности - MB: TYAN Computer Corp S2865 - CPU:
AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ - RAM: 4096Mb -

Network: Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI
Express nVidia Corporation CK804 Ethernet Controller

HDD: 2 x WDC WD1500ADFD-00NLR1 150Gb На обоих - CentOS 5.3 x86_64, Винты
сконфигурированы в RAID 1 средствами бортового NVidia-контроллера.

На eth0 подняты 7 вланов (5 на юзверов и 2 на два канала интернет)
ЗадачиПоднять на этом хозяйстве виртуальную машину высокой
доступности, которая бы имела доступ ко всем вланам. На моё
удивление, только родная сборка xen-3.0.3 корректно поднимала бриджи
на вланах. Пробовал ставить и 3.4.0 и 3.2.0 и т.д.... - нет, не
судьба. Вланы мои пропадали. Поэтому решил сторонних репозиториев не
подключать. Но.. это я забегаю на перёд - обо всём по порядку.


Установка CentOS 5.3
--------------------

Для установки список пакетов я выбирал по-минимуму, да и системный
раздел сделал всего 15Гб+4Гб свопа. Всё остальное уйдёт потом на
синхронизируемый сетевой RAID1 массив. При первой перезагрузке
отключаю SeLinux на обоих нодах

[root@ics1 ~]# cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted


Далее, конфигурирую сетевые интерфейсы, причём вланы поднимаю без
сетевого адреса (попервой для закачки пакетов можно, конечно внешние
IP прописать).

[root@ics2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth*
#ifcfg-eth0
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:E0:81:59:20:22
IPADDR=192.168.10.2
NETMASK=255.255.0.0
ONBOOT=yes

#ifcfg-eth0.100
# ISP
DEVICE=eth0.100
BOOTPROTO=static
IPADDR=11.22.33.44
NETMASK=255.255.255.248
ONBOOT=yes
VLAN=yes

#ifcfg-eth0.101
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0.101
BOOTPROTO=static
#IPADDR=
#NETMASK=
ONBOOT=yes
VLAN=yes

#ifcfg-eth0.2
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0.2
BOOTPROTO=static
#IPADDR=
#NETMASK=
ONBOOT=yes
VLAN=yes

#ifcfg-eth.200
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0.200
BOOTPROTO=static
#IPADDR=
#NETMASK=
ONBOOT=yes
VLAN=yes

#ifcfg-eth0.300
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0.300
BOOTPROTO=static
#IPADDR=
#NETMASK=
ONBOOT=yes
VLAN=yes

#ifcfg-eth0.415
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0.415
BOOTPROTO=static
#IPADDR=
#NETMASK=
ONBOOT=yes
VLAN=yes

#ifcfg-eth0.5
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0.5
BOOTPROTO=static
#IPADDR=
#NETMASK=
ONBOOT=yes
VLAN=yes

#ifcfg-eth1
# nVidia Corporation CK804 Ethernet Controller
DEVICE=eth1
BOOTPROTO=static
BROADCAST=10.44.44.3
HWADDR=00:E0:81:59:20:23
IPADDR=10.44.44.2
NETMASK=255.255.255.252
NETWORK=10.44.44.0
ONBOOT=yes


На соседней ноде ics1 вместо 192.168.10.2 конфигурирую адрес
192.168.10.1, вместо 10.44.44.2 конфигурирую 10.44.44.1, ну и на интернет
******.66

Настройка служб Так как runlevel у меня 3й (без X-сервера), то службы
оставляю следующие:

[root@ics2 ~]# chkconfig --list | grep "3:вкл"
acpid 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
auditd 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
cpuspeed 0:выкл 1:вкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
crond 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
gpm 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
haldaemon 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
hidd 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
iptables 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
irqbalance 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
iscsi 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
iscsid 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
lm_sensors 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
lvm2-monitor 0:выкл 1:вкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
mcstrans 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
mdmonitor 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
messagebus 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
netfs 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
network 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
nfslock 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
ospfd 0:выкл 1:выкл 2:выкл 3:вкл 4:выкл 5:выкл 6:выкл
portmap 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
readahead_early 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
restorecond 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
rpcgssd 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
rpcidmapd 0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл
smartd 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
snmpd 0:выкл 1:выкл 2:выкл 3:вкл 4:выкл 5:выкл 6:выкл
sshd 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
syslog 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
xfs 0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
zebra 0:выкл 1:выкл 2:выкл 3:вкл 4:выкл 5:выкл 6:выкл


Перезагрузка.


Установка пакетов для виртуализации и HA-кластера
-------------------------------------------------

После перезагрузки на обоих нодах устанавливаем следующие пакеты:

# yum install kernel-xen xen kmod-drbd82-xen kmod-drbd82 drbd82 libvirt qemu heartbeat


После этого удостоверимся, что в grub.conf по-умолчанию грузится
xen-изированое ядро:

[root@ics2 ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.el5xen)
root (hd0,0)
kernel /boot/xen.gz-2.6.18-164.el5
module /boot/vmlinuz-2.6.18-164.el5xen ro root=LABEL=/
module /boot/initrd-2.6.18-164.el5xen.img


Перезагружаемся. Смотрим на uname и видим что-то похожее на это:

[root@ics2 ~]# uname -a
Linux ics2.zpr 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:03:03 EDT 2009 x86_64 x86_6
4 x86_64 GNU/Linux
[root@ics2 ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 905 2 r----- 1569.3


Значит всё пока идёт по плану :) Поправим немножечко /etc/hosts - а
вдруг ДНС упадёт? (Или у нас его нет вовсе? :))

[root@ics2 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

192.168.10.2 ics2.zpr ics2
192.168.10.1 ics1.zpr ics1

10.44.44.2 ics2.local ics2.xen
10.44.44.1 ics1.local ics1.xen


Создание ssh-rsa ключей для безпарольного доступа между нодами

Далее, для быстроты проведения копипаста файлов с одного сервера на другой
создадим ssh-rsa ключи (этот шаг можно пропустить, если хотите при
каждой операции вводить рутовский пароль): На ics1

[root@ics1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
86:80:84:54:1f:5c:f8:1e:c3:19:a5:fa:4e:fe:4f:43 root@ics1.zpr
[root@ics1 ~]# scp /root/.ssh/id_rsa.pub ics2:/root/.ssh/authorized_keys


На ics2

[root@ics2 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ba:e5:5a:2a:d2:13:7d:41:d6:d8:95:ee:ba:de:0d:ac root@ics2.zpr
[root@ics2 ~]# scp /root/.ssh/id_rsa.pub ics1:/root/.ssh/authorized_keys


Скопипастим /etc/hosts на соседнюю ноду:

[root@ics2 ~]# scp /etc/hosts ics1:/etc/hosts


Настройка синхронизируемого дискового пространства

Теперь очередь ВRBD. Для этого создадим файл /etc/drbd.conf следуюего содержания:

[root@ics2 ~]# cat /etc/drbd.conf
global {
minor-count 64;
dialog-refresh 5;
usage-count yes;
}

common {
syncer { rate 50M;}
}

resource internet {
protocol C;
handlers {
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
outdate-peer "/usr/lib64/heartbeat/drbd-peer-outdater -t 5";
}

startup {
wfc-timeout 60;
degr-wfc-timeout 120;
}

disk {
on-io-error detach;
}

net {
timeout 60; # 6 seconds (unit = 0.1 seconds)
connect-int 10; # 10 seconds (unit = 1 second)
ping-int 10; # 10 seconds (unit = 1 second)
ping-timeout 5; # 500 ms (unit = 0.1 seconds)

max-buffers 2048;
unplug-watermark 128;
max-epoch-size 2048;
ko-count 4;

# Следующий параметр необходим для Live-миграции
allow-two-primaries;
after-sb-0pri discard-least-changes;
after-sb-1pri call-pri-lost-after-sb;
after-sb-2pri call-pri-lost-after-sb;
rr-conflict disconnect;
}

syncer {
rate 50M;
al-extents 257;
}

on ics1.xen {
device /dev/drbd0;
# меняем на своё блочное устройство. Размер устройства долже быть одинаков на обоих нодах!!!
disk /dev/mapper/nvidia_ecjbdbeap3;
address 10.44.44.1:7788;
meta-disk internal;
}

on ics2.xen {
device /dev/drbd0;
disk /dev/mapper/nvidia_bjijcibhp3;
address 10.44.44.2:7788;
meta-disk internal;
}

}


Копипастим на соседа:

[root@ics2 ~]# scp /etc/drbd.conf ics1:/etc/drbd.conf


Инициализируем DRBD-ноду:

[root@ics2 ~]# drbdadm create-md internet


Стартуем службу:

[root@ics2 ~]# service drbd start


На соседней ноде:

[root@ics1 ~]# drbdadm create-md internet
[root@ics1 ~]# service drbd start


Теперь на одной из нод сделаем ресурс primary. Для этого:

[root@ics2 ~]# drbdsetup /dev/drbd0 primary -o


И смотрим как оно засинхронизируется :)

[root@ics2 ~]# watch -n1 "cat /proc/drbd"


Конфигурация гипервизора Xen

После перекура приступаем к конфигурированию Xen. Как было сказано
ранее, необходимо, чтобы DomU системы имели доступ к вланам. Также
необходима поддержка live-миграции виртуального домена. Для этого
немножко изменим конфигурационный файл xen следующим образом
(комментарии опущены):

[root@ics2 xen]# cat /etc/xen/xend-config.sxp
# Путь к логам
(logfile /var/log/xen/xend.log)
# Уровень логов.
(loglevel DEBUG)
(xend-unix-server yes)
# Опция, необходима для кросс-миграции
(xend-relocation-server yes)
# Сокет для взаимодействия с разными утиллитами управления
(xend-unix-path /var/lib/xend/xend-socket)
# RPC Порт и адрес соответственно для взаимодействия с соседями
(xend-relocation-port 8002)
(xend-relocation-address '10.44.44.2')
# кому можно к нам коннектится?
(xend-relocation-hosts-allow '^ics1\.zpr$ ^ics1\.local$ ^ics1$ ^ics1\.xen$ ^i
cs2\.zpr$ ^ics2\.local$ ^ics2$ ^ics2\.xen$ ^localhost$ ^localhost\.localdomain$')
# ВАЖНО!!!! Нестандартный скрипт создания Xen-бриджей. Должен находится в /etc/xen/scripts/
(network-script my-network-bridge)
# Далее настройки по умолчанию...
(vif-script vif-bridge)
(dom0-min-mem 256)
(dom0-cpus 0)


На ноде ics1 конфиг будет отличаться лишь ИП, к которому приbindим
RPC-сокет, т.е.

(xend-relocation-address '10.44.44.1')


Содержание чудо-файла my-network-bridge следующее:

[root@ics2 scripts]# cat /etc/xen/scripts/my-network-bridge
#!/bin/bash

dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=0 netdev=eth0 bridge=xenbr0
"$dir/network-bridge" "$@" vifnum=1 netdev=eth0.2 bridge=xenbr2
"$dir/network-bridge" "$@" vifnum=2 netdev=eth0.5 bridge=xenbr5
"$dir/network-bridge" "$@" vifnum=3 netdev=eth0.100 bridge=xenbr100
"$dir/network-bridge" "$@" vifnum=4 netdev=eth0.101 bridge=xenbr101
"$dir/network-bridge" "$@" vifnum=5 netdev=eth0.200 bridge=xenbr200
"$dir/network-bridge" "$@" vifnum=6 netdev=eth0.300 bridge=xenbr300
"$dir/network-bridge" "$@" vifnum=7 netdev=eth0.415 bridge=xenbr415


После этого на обоих нодах - service xend start. Запустив после этого
ifconfig увидим кучу интерфейсов вида eth**, peth**, vif** и xenbr**. у
меня вышло 8*4 = 32 :) + eth1 + lo = 34 Попробуем установить
сконфигурировать виртуальный домен.


Установка CentOS в виртуальную машину

Важно! Операцию установки необходимо производить на одной из нод. В
нашем случае это ICS2.XEN. На всякий:

[root@ics2 ~]# drbdsetup /dev/drbd0 primary -o


Так как мои процессоры не поддерживают HVM-виртуализацию :(, остаётся
лишь использовать паравиртуализацию. Создадим файл для установки:

[root@ics2 xen]# cat /etc/xen/internet
kernel = "/opt/images/xen/vmlinuz"
ramdisk = "/opt/images/xen/initrd.img"
extra = "text"
on_reboot = "destroy"
on_crash = "destroy"
name = "internet"
uuid = "ed310594-db0e-457a-be11-1961bc84ff5a"
maxmem = 3072
memory = 3072
vcpus = 2
on_poweroff = "destroy"
vfb = [ ]
# Virtual Hard Drive
disk = [ "drbd:internet,xvda,w" ]

# Networking
vif = [ "mac=00:16:3e:01:00:00,bridge=xenbr0",
"mac=00:16:3e:01:00:02,bridge=xenbr2",
"mac=00:16:3e:02:00:05,bridge=xenbr5",
"mac=00:16:3e:03:01:00,bridge=xenbr100",
"mac=00:16:3e:04:01:01,bridge=xenbr101",
"mac=00:16:3e:05:02:00,bridge=xenbr200",
"mac=00:16:3e:06:03:00,bridge=xenbr300",
"mac=00:16:3e:07:04:15,bridge=xenbr415" ]


Краткое описание параметров:

kernel - какое ядро грузить. Ядро, указанное в конфиге можно найти на
инсталляционном диске CentOS в images/xen/

ramdisk - Init-образ. находился на инсталл-диске там же где и ядро.

extra - параметры, которые отдаём ядру. Можно, например, указать
NFS-сервер установки и Kickstart файл

on_reboot - действие при перезагрузке виртуальной машине. (Уничтожить)

on_crash - действие при падении (Уничтожить) vcpus - сколько ядер процессора использовать

on_poweroff - действие при выключении (Уничтожить)

disk = [ "drbd:internet,xvda,w" ] - Диск. В нашем случае будем
устанавливать на DRBD-ноду с именем internet (она же /dev/drbd0).
Здесь неоходимо указывать именно ИМЯ а не блочное устройство!!!

Lets do it! для старта установки выполним на ics2

[root@ics2 xen]# xm create -c internet


После чего нас перебросит в виртуальную консоль. (Для выхода необходимо
нажать Alt+5 (Иногда Ctrl+5). Для возврата назад - xm console internet).
При старте установки Вам зададут несколько вопросов, а именно откуда
будем ставить ОС? Так как никаких образов мы не подключали, то можно
ставить только из Internet или NFS. Благо, NFS у нас на предприятии уже
давно есть, посему я разшарил каталог /data/centos в который просто
перекопировал содержимое установочного диска. Следуем указаниям
мастера, отвечаем на вопросы и запускаем anaconda (я конфигурировал
запуск VNC-инсталлера и потом с маздая тыкал в гуёвые кнопочки). При
установке система должна обнаружить блочное устройство /dev/xvda на
которое и необходимо произвести установку. ... При окончании установки
и перезагрузке гипервихор xen уничтожит домен internet:

[root@ics2 xen]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 905 2 r----- 1706.4


Танцы с бубном

Теперь немножко изменим наш конфигурационный файл виртуального домена internet

[root@ics2 xen]# cat /etc/xen/internet
name = "internet"
uuid = "ed310594-db0e-457a-be11-1961bc84ff5a"
maxmem = 3072
memory = 3072
vcpus = 2
bootloader = "/usr/bin/pygrub"
on_reboot = "restart"
on_crash = "restart"
on_poweroff = "destroy"
vfb = [ ]
# Virtual Hard Drive
disk = [ "drbd:internet,xvda,w" ]
# Networking
vif = [ "mac=00:16:3e:01:00:00,bridge=xenbr0",
"mac=00:16:3e:01:00:02,bridge=xenbr2",
"mac=00:16:3e:02:00:05,bridge=xenbr5",
"mac=00:16:3e:03:01:00,bridge=xenbr100",
"mac=00:16:3e:04:01:01,bridge=xenbr101",
"mac=00:16:3e:05:02:00,bridge=xenbr200",
"mac=00:16:3e:06:03:00,bridge=xenbr300",
"mac=00:16:3e:07:04:15,bridge=xenbr415" ]


Изменений в принципе не много.

[root@ics2 xen]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-bu
ild, 2008-10-03 11:30:32
0: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r---
ns:1465004 nr:347516 dw:1812520 dr:76948 al:117 bm:87 lo:0 pe:0 ua:0 ap:0 oos:0


При остановке домена DRBD-массив перешео в состояние Secondary. Пробуем
запустить:

[root@ics2 xen]# xm create -c internet


Но не тут то было! Начинают валится ошибки что устройства не найдено и
бла бла бла и т.д. Ну, тут необходим бубен да и пляски. А что вы
хотели? Четыре дня гугления по инету немного для меня прояснили
ситуацию, но готового решения я так и не нашел. Ждать никого у меня не
было времени, поэтому пришлось править python-скрипты ручками
(учитывая, что я его впервые в этот день увидел). Для таких страдальцев
как я, я наваял два патча, которые дают возможность работать Xen'у с
DRBD-дисками.

Итак, идём на багзиллу Xen'а: Cannot use pygrub with
drbd blcok device as xvda. и тянем оттуда два патча - для pygrub и
blkif.py pygrub находится по /usr/bin/pygrub а blkif.py у меня
лежало в /usr/lib64/python2.4/site-packages/xen/util Положил эти файлы
соответсвенно рядом с приложениями, которыми они патчат и
patch -p0 < имя_diff Кстате, в /usr/lib64/python2.4/site-packages/xen/util я ещё на
всякслучай в сторону откинул blkif.pyc и blkif.pyo. Патчить нужно на
обоих нодах. Ну, поехали:

[root@ics2 xen]# xm create -c internet


Теперь вроде всё отлично. Свернув консоль, увидим

[root@ics2 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-bu
ild, 2008-10-03 11:30:32
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:351972 nr:1465004 dw:1818064 dr:163469 al:95 bm:68 lo:0 pe:0 ua:0 ap:0 oos:0
[root@ics2 ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 905 2 r----- 1725.7
internet 2 3070 2 -b---- 112.8


Пробуем мигрировать:

[root@ics2 ~]# xm migrate internet ics1.xen --live


В это время на соседе наблюдаем процесс

[root@ics2 ~]# watch -n1 "cat /proc/drbd && echo && xm list"
Every 1,0s: cat /proc/drbd && echo && xm list
Tue Sep 29 00:52:17 2009

version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-bu
ild, 2008-10-03 11:30:32
0: cs:Connected st:Primary/Primary ds:UpToDate/UpToDate C r---
ns:1465004 nr:353140 dw:1818144 dr:76948 al:117 bm:87 lo:0 pe:0 ua:0 ap:0 oos:0

Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 905 2 r----- 1724.4
internet 2 1858 0 -bp--- 0.0


Когда всё устаканится, получим:

[root@ics1 ~]# cat /proc/drbd && echo && xm list
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-bu
ild, 2008-10-03 11:30:32
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:1465772 nr:353272 dw:1819044 dr:76948 al:118 bm:87 lo:0 pe:0 ua:0 ap:0 oos:0

Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 905 2 r----- 1776.0
internet 2 3069 2 -b----0.3


При этом, если пинговать машину извне - она пингуется в процессе
переноса! Пинг пропадает только один-два раза при окончании процесса.


Настройка Heartbeat
-------------------

Уже почти всё готово, необходимо только всё более-менее
автоматизировать. Для этого остановим виртуальную машину:

[root@ics1 ~]# xm shutdown internet


Периодически смотрим xm list.Когда домен отключится, приступаем к
настройке heartbeat. Создадим мегасекретный ключ:

[root@ics2 ha.d]# cat /etc/ha.d/authkeys
auth 1
1 sha1 6723jsp[;.;,m,er23r54235665v90jnsdcmsc%$jnsdc8*(sdcnk


Далее файл конфигурации:

[root@ics2 ha.d]# cat /etc/ha.d/ha.cf
keepalive 2
deadtime 30
warntime 10
initdead 30

debugfile /var/log/heartbeat/debug.log
logfile /var/log/heartbeat/logfile.log
logfacility local0

bcast eth1
auto_failback on

# APC STONITH (думаю, некоторым необходимо будет это законнентить по неимению APC SmartUPS 1000 RM)
stonith_host ics1.xen apcsmart ics2.xen /dev/ttyS0
stonith_host ics2.xen apcsmart ics1.xen /dev/ttyS0

node ics1.xen
node ics2.xen

respawn hacluster /usr/lib64/heartbeat/ipfail
compression bz2
compression_threshold 2


Файл ресурсов:

[root@ics2 ha.d]# cat /etc/ha.d/haresources
ics1.xen xendomains.ics1
ics2.xen xendomains.ics2


копипастим три этих конфига на соседа. Создаём xendomains.ics1 и
xendomains.ics2. Для этого:

[root@ics2 ha.d]# cp /etc/init.d/xendomains /etc/ha.d/resource.d/xendomains.ics1
[root@ics2 ha.d]# cp /etc/init.d/xendomains /etc/ha.d/resource.d/xendomains.ics2


Немного изменяем первый:

LOCKFILE=/var/lock/subsys/xendomains.ics1
XENDOM_CONFIG=/etc/ha.d/xen/ics1


И второй:

LOCKFILE=/var/lock/subsys/xendomains.ics2
XENDOM_CONFIG=/etc/ha.d/xen/ics2


Не много поправим две функции в обоих скриптах:

rdnames()
{
NAMES=
if ! contains_something "$XENDOMAINS_AUTO"
then
return
fi
for dom in $XENDOMAINS_AUTO/*; do
rdname $dom
if test -z $NAMES; then
NAMES=$NM;
else
NAMES="$NAMES $NM"
fi
done
}


И ещё одна

stop()
{
# Collect list of domains to shut down
if test "$XENDOMAINS_AUTO_ONLY" = "true"; then
rdnames
fi
echo -n "Shutting down Xen domains:"
while read LN; do
parseln "$LN"
if test $id = 0; then continue; fi
echo -n " $name"
if test "$XENDOMAINS_AUTO_ONLY" = "true"; then
for i in ${NAMES[@]}
do
if test $found = "0"; then
if test $i = $name; then
found=1
fi
fi
done
if test $found = "0"; then
echo -n "(skip)"
continue
fi
fi
# XENDOMAINS_SYSRQ chould be something like just "s"
# or "s e i u" or even "s e s i u o"
# for the latter, you should set XENDOMAINS_USLEEP to 1200000 or so


Всё это выполняется на обеих нодах. Или на одной, после чего копипастим
на вторую. Создадим на обоих нодах каталоги: /etc/ha.d/xen
/etc/ha.d/xen/auto.ics1 /etc/ha.d/xen/auto.ics2 Также на обеих нодах
создадим симлинки на конфигурационные файлы виртуальных машин, на
которых они должны быть запущены. Конфиги же xendomain'ов будут
отличаться:

[root@ics2 xen]# cat /etc/ha.d/xen/ics1
XENDOMAINS_SYSRQ=""
XENDOMAINS_USLEEP=100000
XENDOMAINS_CREATE_USLEEP=5000000
XENDOMAINS_MIGRATE="ics1.xen --live"
XENDOMAINS_SAVE=
XENDOMAINS_SHUTDOWN="--halt --wait"
XENDOMAINS_SHUTDOWN_ALL=
XENDOMAINS_RESTORE=false
XENDOMAINS_AUTO=/etc/ha.d/xen/auto.ics1
XENDOMAINS_AUTO_ONLY=true
XENDOMAINS_STOP_MAXWAIT=300

[root@ics2 xen]# cat /etc/ha.d/xen/ics2
XENDOMAINS_SYSRQ=""
XENDOMAINS_USLEEP=100000
XENDOMAINS_CREATE_USLEEP=5000000
XENDOMAINS_MIGRATE="ics1.xen --live"
XENDOMAINS_SAVE=
XENDOMAINS_SHUTDOWN="--halt --wait"
XENDOMAINS_SHUTDOWN_ALL=
XENDOMAINS_RESTORE=false
XENDOMAINS_AUTO=/etc/ha.d/xen/auto.ics2
XENDOMAINS_AUTO_ONLY=true
XENDOMAINS_STOP_MAXWAIT=300


У соседа

[root@ics1 xen]# cat /etc/ha.d/xen/ics1
XENDOMAINS_SYSRQ=""
XENDOMAINS_USLEEP=100000
XENDOMAINS_CREATE_USLEEP=5000000
XENDOMAINS_MIGRATE="ics2.xen --live"
XENDOMAINS_SAVE=
XENDOMAINS_SHUTDOWN="--halt --wait"
XENDOMAINS_SHUTDOWN_ALL=
XENDOMAINS_RESTORE=false
XENDOMAINS_AUTO=/etc/ha.d/xen/auto.ics1
XENDOMAINS_AUTO_ONLY=true
XENDOMAINS_STOP_MAXWAIT=300

[root@ics1 xen]# cat /etc/ha.d/xen/ics2
XENDOMAINS_SYSRQ=""
XENDOMAINS_USLEEP=100000
XENDOMAINS_CREATE_USLEEP=5000000
XENDOMAINS_MIGRATE="ics2.xen --live"
XENDOMAINS_SAVE=
XENDOMAINS_SHUTDOWN="--halt --wait"
XENDOMAINS_SHUTDOWN_ALL=
XENDOMAINS_RESTORE=false
XENDOMAINS_AUTO=/etc/ha.d/xen/auto.ics2
XENDOMAINS_AUTO_ONLY=true
XENDOMAINS_STOP_MAXWAIT=300


Убираем через ntsysv или chkconfig xendomains из автозагрузки,
проверяем чтобы присутствовали xen, heartbeat, drbd и network :) Вуаля!
Всё готово!

При внезапной остановке одной из нод её виртуальные машины в течении
двух минут поднимутся у соседа, а при возврате ноды к жизни они
мигрируют в запущенном состоянии обратно на своё место. При
проделывании манипуляций активно использовалась эта статья,
google.com и http://wiki.centos.org.
934 Прочтений •  [Создание кластера высокой доступности для XEN с Live миграцией в CentOS 5.3 с использованием VLAN и DRBD (xen cluster virtual centos)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Создание кластера высокой доступнос... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка