Кластеры на Linux (Поделитесь опытом)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Vorb
Сообщения: 166
Статус: Ярый антифорточник
ОС: Gentoo Linux

Кластеры на Linux

Сообщение Vorb »

Я собрался поднять кластер на Linux. Хотел бы, чтоб поделились опытом те, кто уже это делал: софт, синхронизация баз данных, распределение ресурсов, оборудование и т. д.
И на обломках Microsoft напишут наши имена!
Спасибо сказали:
Аватара пользователя
Virtualik
Сообщения: 69
ОС: Slackware 12.0

Re: Кластеры на Linux

Сообщение Virtualik »

кластеры бывают разные.

в частности я собирал вычислительный, используя библиотеку LAM/MPI.
Спасибо сказали:
Аватара пользователя
Warderer
Модератор
Сообщения: 1056
Статус: киберпИнгвин на гусеничном ходу
ОС: Debian unstable

Re: Кластеры на Linux

Сообщение Warderer »

А у меня HA-cluster на основе drdb и heartbeat.
Читаю вслух с выражением маны - $50/ч + стоимость звонка. Настраиваю сервисы за Вас - $100/ч + стоимость выезда и проживания.
И восемь строк матом...(бесплатно)
Спасибо сказали:
vadiml
Сообщения: 446
ОС: fc12.x86_64

Re: Кластеры на Linux

Сообщение vadiml »

софт, синхронизация баз данных, распределение ресурсов

если тебе нужна база данных, то вот пусть она этим и занимается

MySQL - 1 сервер с полным доступом, остальные - на чтение,
Oracle - все с полным доступом
DB2 - говорят тоже, но я ее ни разу не видел/не щупал

и еще - в новом ядре - claster fs от Oracle, интересная вещь - фактически с 1 дисковым массивом работает несколько компьютеров, я с ней сталкивался в документации по Oracle, сам не пользовал
phenom x4 905e, asus m4a79 deluxe, 4 gb, ati x550, ati 4350, 2 x 17" LCD
Спасибо сказали:
Аватара пользователя
Vorb
Сообщения: 166
Статус: Ярый антифорточник
ОС: Gentoo Linux

Re: Кластеры на Linux

Сообщение Vorb »

Вообще предназначается сервер для потоковой видеотрансляции. Одно из самых главных условий - непрерывная железная работа кластера.
Вот мои мысли:
LinuxHA (чтобы, если какая-то единица сдохнет, клиенты об этом и не подозревали).
LVS (для балансировки ресурсов)
Базы данных синхронизировать согласно этому (ОЧЕНЬ интересному) документу: http://www.oreillynet.com/pub/a/databases/...ter.html?page=1
Mod_backhand - мод на апач (тут описано: http://www.opennet.ru/docs/RUS/webcluster/index.html )
И на обломках Microsoft напишут наши имена!
Спасибо сказали:
Аватара пользователя
susik
Сообщения: 81

Re: Кластеры на Linux

Сообщение susik »

Vorb писал(а):
23.03.2006 22:11
Вообще предназначается сервер для потоковой видеотрансляции. Одно из самых главных условий - непрерывная железная работа кластера.
Вот мои мысли:
LinuxHA (чтобы, если какая-то единица сдохнет, клиенты об этом и не подозревали).
LVS (для балансировки ресурсов)
Базы данных синхронизировать согласно этому (ОЧЕНЬ интересному) документу: http://www.oreillynet.com/pub/a/databases/...ter.html?page=1
Mod_backhand - мод на апач (тут описано: http://www.opennet.ru/docs/RUS/webcluster/index.html )

При сдыхание 1 зла кластера ели это standby то клиенты могут заметить если ваше приложение может работать параллельно, то можно сделать парраллельный кластер в этом случае клиенты могут не заметить, но построить правильный кластер не всегда легко и возможно необходимо что бы ваше ПО было кластеризуемым.

susik писал(а):
24.03.2006 09:27
Vorb писал(а):
23.03.2006 22:11

Вообще предназначается сервер для потоковой видеотрансляции. Одно из самых главных условий - непрерывная железная работа кластера.
Вот мои мысли:
LinuxHA (чтобы, если какая-то единица сдохнет, клиенты об этом и не подозревали).
LVS (для балансировки ресурсов)
Базы данных синхронизировать согласно этому (ОЧЕНЬ интересному) документу: http://www.oreillynet.com/pub/a/databases/...ter.html?page=1
Mod_backhand - мод на апач (тут описано: http://www.opennet.ru/docs/RUS/webcluster/index.html )

При сдыхание 1 зла кластера ели это standby то клиенты могут заметить если ваше приложение может работать параллельно, то можно сделать парраллельный кластер в этом случае клиенты могут не заметить, но построить правильный кластер не всегда легко и возможно необходимо что бы ваше ПО было кластеризуемым.


У нас стоит кластер для Оракла stand by на HP-UX если есть вопросы, задавай те может смогу ответить
Они не были Боги, откуда им знать про добро и зло?
Спасибо сказали:
Аватара пользователя
Vorb
Сообщения: 166
Статус: Ярый антифорточник
ОС: Gentoo Linux

Re: Кластеры на Linux

Сообщение Vorb »

Вот первая проблема - не работает mod_backhand. Он должен выдавать статистику при переходе в localhost/backhand, но апач говорит, что нету такого каталога и говорит, что смотрел в каталог и файлами, а не обрабатывал событие. Вот кусочек конфига, связанный с модулем:

Код: Выделить всё

<IfModule !mod_backhand.c>
               LoadModule backhand_module modules/mod_backhand.so
</IfModule>

<IfModule mod_backhand.c>
                # This directory must be readable and writable by euid of apache
                # The mod_backhand-Arriba and the AF_UNIX domain files are stored in here.
                UnixSocketDir /var/lib/backhand

                # This would be the way to do ethernet broadcast of backhand statistics.
                MulticastStats 192.168.0.255:4445

                # We want to accept resource information originating from any IP on our
                # network.
                AcceptStats 192.168.0.0/24

        <Location "/backhand/">
                   SetHandler backhand-handler
        </Location>

</IfModule>

Компиляция апача прошла нормально, модуль есть. Пару раз даже выдавал статистику.. Я не перезапуская сервер попробовал через 5 минут - не работает backhand и в логах написано, что апачу ктото послал SIGTERM :(
Нифига не пойму :blink:
И на обломках Microsoft напишут наши имена!
Спасибо сказали:
Atheist
Сообщения: 63

Re: Кластеры на Linux

Сообщение Atheist »

Ситуация: есть две ноды, на каждой eth0 во внешний мир, eth1 к другой ноде.
Поставлены DRBD и Heartbeat. DRBD работает через eth1 - замечаний нет.
Если primary ноду просто выключить (как через shutdown так и выдергиванием питания), все благополучно запускается на secondary.
Я хочу, чтобы secondary нода запускалась при обрыве сети на primary. Вроде как это это должно работать с ipfail, но :( ... на деле в отсутствие сети на primary, процессы вертятся на primary, а очень хочется видеть их на secondary.

вот кусок конфига (/etc/ha.d/ha.cf), относящийся к этим настройкам:

Код: Выделить всё

auto_failback on
ping 10.123.100.1
respawn hacluster /usr/lib/heartbeat/ipfail

система - CentOS5
Спасибо сказали:
sjm_m
Сообщения: 1
ОС: gentoo

Re: Кластеры на Linux

Сообщение sjm_m »

Vorb писал(а):
19.03.2006 22:09
Я собрался поднять кластер на Linux. Хотел бы, чтоб поделились опытом те, кто уже это делал: софт, синхронизация баз данных, распределение ресурсов, оборудование и т. д.

Кластер на основе Xen и DRBD Heartbeat Gentoo

Замысел был такой, сделать кластер High-Availability, на PC с минимальными затратами.
Это однозначно связка DRBD Heartbeat. Есть много статей как это делается притом для каждого сервиса своя.

Если пойти путем поднятия каждого сервиса отдельно, настраивать, проверять, где должны находится файлы, доступ к ним, можно запутаться сделать ошибку.
Мне показалось это не очень удобно.
Не проще ли запустить виртуальную машину и её прикрутить к High-Availability. И пусть она уже "прыгает" с нода на нод, со всеми своими сервисами.

Повозившись с виртуальными машинами, я выбрал Xen (не буду перчислять почему выбрал )

Машины для нодов:

Желательно три диска SATA или IDE , на один для система Node два других для виртуальных машин, но можно обойтись и двумя и одним, немного подумать над тем как распределить партиции,
Желательно две сетевые карты, и чтобы хоть одна из них была гигабитная, тогда синхронизация DRBD, будет веселой, и не будет мешать работе виртуальных машин. Но можно обойтись и одной. Я, буду рассказывать на том железе которое у меня под рукой Один SATA /dev/sda, две сетевые одна гигабитная (eth0) вторая 100 (eth1)

Этапы установки, последовательность необходимо соблюдать!!

1. Если используешь один жестокий диск надо сразу предусмотреть разметку

/dev/XdX1* 83 Linux /boot (32м) “NodeX или по правилам Xen domain0”
/dev/XdX2 82 Linux swap / Solaris (ОЗУ*2) “NodeX или по правилам Xen domain0”
/dev/XdX3 83 Linux (приб 4 Гб этого достаточно) “NodeX или по правилам Xen domain0”
/dev/XdX4 f W95 Ext'd (LBA)
/dev/XdX5 82 Linux swap / Solaris “XenU первой виртуальной машины «
/dev/XdX6 82 Linux swap / Solaris “XenU второй виртуальной машины «
/dev/XdX7 83 Linux “/” можно по свому усмотрению разбить “XenU первой виртуальной машины «
/dev/XdaX 83 Linux “/” можно по свому усмотрению разбить “XenU второй виртуальной машины «

2. Установить gentoo по инструкции Настольная книга Gentoo Linux x86 используя первых три раздела

Мой make.conf для примера

Код: Выделить всё

# These settings were set by the catalyst build script that automatically built this stage
# Please consult /etc/make.conf.example for a more detailed example
CFLAGS="-O2 -mcpu=pentium4  -pipe -mno-tls-direct-seg-refs"
USE="-X -kde -gnome userlocales -xorg -alsa -cups -berkdb sdl –unicode  pae  "
CHOST="i686-pc-linux-gnu"
#CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
FEATURES="sandbox ccache distcc distlocks autoaddcvs"
CCACHE_DIR="/root/.ccache"
CCACHE_SIZE="1.5G"
LINGUAS="ru en"
MAKEOPTS="-j2"
GENTOO_MIRRORS=" ftp://gentoo.mirrors.tds.net/gentoo"


Сразу установим locale

Код: Выделить всё

xen_node1 etc # cat locale.gen
# /etc/locale.gen: list all of the locales you want to have on your system
#
# The format of each line:
# <locale> <charmap>
#
# Where <locale> is a locale located in /usr/share/i18n/locales/ and
# where <charmap> is a charmap located in /usr/share/i18n/charmaps/.
#
# All blank lines and lines starting with # are ignored.
#
# For the default list of supported combinations, see the file:
# /usr/share/i18n/SUPPORTED
#
# Whenever glibc is emerged, the locales listed here will be automatically
# rebuilt for you.  After updating this file, you can simply run `locale-gen`
# yourself instead of re-emerging glibc.
C
POSTIX
en_US.UTF-8 UTF-8
en_US ISO-8859-1
ru_RU.KOI8-R KOI8-R
ru_RU.UTF-8 UTF-8
ru_RU ISO-8859-5


3. Собрать все пакет

Код: Выделить всё

emerge –system && emerge -evat world


4. установить дополнительно пакты

net-misc/openssh
sys-apps/hwdata-gentoo можно не ставить
app-admin/eselect можно не ставить
sys-apps/hwsetup можно не ставить
app-portage/gentoolkit можно не ставить

sys-apps/xinetd
dev-util/ccache можно не ставить
sys-boot/grub
app-admin/syslog-ng
sys-fs/reiserfsprogs

5. сделаем strag4 с помощью скрипта http://forums.gentoo.org/viewtopic.php?p=1751698#1751698
В директории /mnt/backups/stage4 создастся
Rescue-stage4-16.05~7-minimal.tar.bz2
6. Установить Xen по инструкции http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo

Код: Выделить всё

cat /etc/portage/package.keywords
app-emulation/xen
app-emulation/xen-tools
sys-kernel/xen-sources


Код: Выделить всё

emerge -av app-emulation/xen app-emulation/xen-tools


Код: Выделить всё

cd /usr/srv/linux
make menuconfig


Код: Выделить всё

Linux Kernel Configuration: Xen kernel config (Domain 0) Processor type and features --->
 [*] Enable Xen compatible kernel
High Memory Support (64GB) ---> этим отличается от статьи
XEN --->
 [*] Privileged Guest (domain 0)
 < > PCI device backend driver
 <*> Block-device backend driver
 < >   Block Tap support for backend driver (DANGEROUS)
 <*> Network-device backend driver
 [ ]   Pipelined transmitter (DANGEROUS)
 <*>   Network-device loopback driver
 < > TPM-device backend driver
 < > Block-device frontend driver
 < > Network-device frontend driver
 < > Block device tap driver
 < > TPM-device frontend driver
 [*] Scrub memory before freeing it to Xen
 [ ] Disable serial port drivers
 <*> Export Xen attributes in sysfs
Networking --->
 Networking options --->
   [*] IP: tunneling
   [*] 802.1d Ethernet Bridging
Device Drivers --->
 Block devices  --->
   <*> Loopback device support


7. правим /etc/conf.d/net

Код: Выделить всё

xen_node1 / # cat /etc/conf.d/net
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).
config_eth0=(  "10.0.0.1/24" )
routes_eth0=(
            "10.0.0.0 via 10.0.0.1")            # интерфейс для DRBD

config_eth1=(
    "10.7.40.67/24" )
routes_eth1=(
            "default via 10.7.40.254")


Незбываем исправить /etc/conf.d/rc

Код: Выделить всё

RC_PLUG_SERVICES="!net.*"


Исправляем /etc/init.d/xend

Код: Выделить всё

need net #Было
  need net.eth1 #Стало (привязываем к eth1)


Код: Выделить всё

xen_node1 # rc-update add xend default
xen_node1 # rc-update add xinetd default


Устанавливает Grub
перезагружаемся с поддержкой Xen.
Необходимо убедится, чтоб поднялся Dom0.

Код: Выделить всё

xen_node1 / # xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0    98     2     r-----    768.5

8. Устанавливаем DRBD

Код: Выделить всё

xen_node1 ~ # emerge -av drbd


Код: Выделить всё

xen_node1 ~ # cat /etc/drbd.conf |grep -v ^#
resource drbd0 {
    protocol C;
disk {
   on-io-error   pass_on;
     }
syncer {
       rate 500M;
       group 0;
       al-extents 997;
       }
on xen_node1 {
   device    /dev/drbd0;
   disk      /dev/sda7;
   address   10.0.0.1:7788;# здесь изменён порт
   meta-disk  internal;
   }
on xen_node2 {
   device    /dev/drbd0;
   disk      /dev/sda7;
   address   10.0.0.2:7788;# здесь изменён порт
   meta-disk  internal;
   }
}
resource drbd1 {
    protocol C;
disk {
   on-io-error   pass_on;
     }
syncer {
       rate 500M;
       group 1;
       al-extents 997;
       }
on xen_node1 {
   device    /dev/drbd1;
   disk      /dev/sda8;
   address   10.0.0.1:7789;
   meta-disk  internal;
   }
on xen_node2 {
   device    /dev/drbd1;
   disk      /dev/sda8;
   address   10.0.0.2:7789;
   meta-disk  internal;
   }
}


Примечание : Если вы пересобрали ядро Dom0 необходимо или пересобрать drbd или скопировать модуль drbd.ko и для того чтобы зарегистрировать модуль запускаем или заранее делаем бинарник

Код: Выделить всё

quickpkg drbd

потом быстро ставим.
Делаем исправления в /etc/init.d/drbd

Код: Выделить всё

need  net      #Было
need  net.eth0 #Стало (пивязываем к гигабитной карте)


Код: Выделить всё

xen_node1 resource.d # /etc/init.d/drbd start


Проверка

Код: Выделить всё

xen_node1 / # cat /proc/drbd

version: 0.7.23 (api:79/proto:74) SVN Revision: 2686 build by root@xen_node1, 2007-05-21 13:20:53
0: cs:WFConnection st:Secondary/Unknown ld:Consistent
   ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
1: cs:WFConnection st:Secondary/Unknown ld:Consistent
   ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0

второй часть он у нас не видит ее нет пока !!
Если все прошо успешно

Код: Выделить всё

xen_node1 # rc-update add drbd default


9. Устанавливаем Heartbeat

Код: Выделить всё

emerge -av heartbeat


Создаем деректорию в /etc/ha.d/

Код: Выделить всё

xen-1 ~ # mkdir /etc/ha.d/ha.xen


в это директории будут хранится конфиги для xenU гостевых машин. у меня они следующие.
Имя файла не имеет значения например virt-srw1 для первой машины и virt-srw2 для второй
Для первой машины надо исправить в параметры name disk и по аналогии в virt-srw2

Код: Выделить всё

 xen_node1 ~ # cat /etc/ha.d/ha.xen/virt-srw1 |grep -v ^#

kernel = "/usr/lib/xen/boot/vmlinuz-2.6-xen"
memory = 256
name = "gentoo1" #Имя DomU по нему происходит управление Heartbeat
vif = []
disk = [ 'phy:drbd0,hda3,w', # root DomU gentoo1
       'phy:sda5,hda2,w']   # Swop DomU повниметельней с назначением что-бы не пересеклись  разделы
root = "/dev/hda3 ro"
extra = "4"
vnc=1
vncviewer=0


10. Настройка Heartbeat Добавляем скрипит управления xendomains в директорию

Код: Выделить всё

xen_node2 ~ # cat /etc/ha.d/resource.d/xendomains

#!/bin/bash
XM="/usr/sbin/xm"
CONFPATH="/etc/ha.d/ha.xen"
CONFHA="/etc/ha.d/haresources"
Haresource_drbd="/etc/ha.d/resource.d/drbddisk"
#PATHLOG="/var/log/ha-log"
#ems-fs-dom0
RES="$1"
CMD="$2"
CONFIGXM=`grep -Rl $RES $CONFPATH`
RESDRBD=`grep $RES $CONFHA |awk 'BEGIN {FS = ":[ \t]*|[ \t]+"} {print $4}'`

isrunning=false

case "$CMD" in
    start)
            STAT_QUORUM=`drbdadm state $RESDRBD |awk 'BEGIN { FS = "[/]"} {print $1}'`
            n=0
            until [[ ($STAT_QUORUM == "Primary" ||  $n -ge 2) ]]
            do
            sleep 5
            STAT_QUORUM=`drbdadm state $RESDRBD |awk 'BEGIN { FS = "[/]"} {print $1}'`
            echo "$STAT_QUORUM"
            n=`expr $n + 1`
            echo "Resource $RESDRBD ""Secondary"". Test to change the status number $n "
            done
            if [ $STAT_QUORUM == "Secondary" ]
            then
            ha_log "ERROR: Problem DRBD QUORUM status ""Secondary"" busy $1 NO STARTING "
            exit 1
            fi

            $XM create --quiet $CONFIGXM

;;
    stop)
      #exec $XM shutdown -w $RES
         $XM shutdown -w $RES
         $Haresource_drbd $RESDRBD stop
;;
    status)
        $XM list | awk '{print $1}'  | grep $RES > /dev/null
        if [ $? -eq 0 ]
        then
                echo running
        else
                echo stopped
        fi
;;
    *)
        echo "Usage: xendomain [NameDomainU] {start|stop|status}"
        exit 1
;;
esac
exit 0


Код: Выделить всё

xen_node1 # chmod 755 /etc/ha.d/resource.d/xendomains


Копируем из папки /usr/share/doc/heartbeat-2.0.7 в /etc/ha.d/ файлы authkeys ha.cf haresources В файле authkeys правим auth 3 - убираем комментарии меняем на 3
#1 crc
#2 sha1 HI!
3 md5 Hello! - убираем комментарии вместо «Hello!» можно взять любой фаил сделать md5sum и это цифры сюда записать chmod 600 authkeys

Код: Выделить всё

xen_node1 resource.d # cat /etc/ha.d/authkeys |grep -v ^#
auth 3
3 md5 bcd94935594371abdd012e328ceab708 # ваш пароль


Правим ha.cf

Код: Выделить всё

xen_node1 resource.d # cat /etc/ha.d/ha.cf |grep -v ^#
debugfile /var/log/ha-debug logfile /var/log/ha-log
logfacility local0
ucast eth0 10.0.0.1
ucast eth0 10.0.0.2
auto_failback off
node xen_node1
node xen_node2


Правим haresources имя xen_node1(xen_node2)можно узнать uname –n
drbd0 (drbd1) должны совпадать с тем что прописано /etc/ha.d/ha.xen/vrt-srw1(vrt-srw2)

Код: Выделить всё

xen_node1 resource.d # cat /etc/ha.d/haresources |grep -v ^#

xen_node1 drbddisk::drbd0 xendomains::gentoo1
xen_node2 drbddisk::drbd1 xendomains::gentoo2


все эти файлы абсолютно идентичны на обоих нода поэтому в конфигурацию заноситься информация для обоих

11. Сделаем доступные разделы на drbd

Код: Выделить всё

xen_node1 / # drbdadm primary all


проверим

Код: Выделить всё

xen_node1 / # cat /proc/drbd
version: 0.7.23 (api:79/proto:74) SVN Revision: 2686 build by root@xen_node1, 2007-05-21 13:20:53
0: cs:WFConnection st:Primary/Unknown ld:Consistent
   ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
1: cs:WFConnection st:Primary/Unknown ld:Consistent
   ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0

Все нормально теперь они доступны для записи

12. Отформатировать разделы

Код: Выделить всё

xen_node1 / # mkreiserfs /dev/drbd0
xen_node1 / # mkreiserfs /dev/drbd1
xen_node1 / # mkswap /dev/sda5
xen_node1 / # mkswap /dev/sda6


13. Создаем временные папки

Код: Выделить всё

mkdir /mnt/gentoo1 /mnt/gentoo2

монтируем

Код: Выделить всё

xen_node1 / # mount /dev/drbd0 /mnt/gentoo1
xen_node1 / # mount /dev/drbd1 /mnt/gentoo2


14. Разворачиваем из stage4 gentoo Для первой машины

Код: Выделить всё

xen_node1 / # tar -xjpfv  /mnt/backups/stage4/Rescue-stage4-16.05.2007-minimal.tar.bz2  -C /mnt/gentoo1

Для второй

Код: Выделить всё

xen_node1 / # tar -xjpfv  /mnt/backups/stage4/Rescue-stage4-16.05.2007-minimal.tar.bz2  -C /mnt/gentoo2


Для каждой машины правим файлы конфигурации

Код: Выделить всё

xen_node1 / # cat /mnt/gentoo1/etc/fstab

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
# /dev/BOOT    /boot          ext2              noauto,noatime              1 2
/dev/hda3        /                 reiserfs               noatime              0 1
/dev/hda2       none              swap                      sw              0 0
#/dev/cdrom       /mnt/cdrom       audo            noauto,ro       0 0
#/dev/fd0          /mnt/floppy       auto            noauto       0 0


Закомментируем boot. fstab одинаковый для обоих виртуальных машинах
Этими файлами персонализируем, как они будут ведить пользователи эти DomU.
правим /etc/conf.d/net правим /etc/conf.d/hostname

15. Собираем ядро для DomU

Код: Выделить всё

xen_node2 ~ # cd /usr/src/linux

make menuconfig


Linux Kernel Configuration: Xen kernel config (Domain U) Processor type and features --->
[*] Enable Xen compatible kernel
High Memory Support (64GB) ---> # этим отличается от статьи http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo XEN --->
[ ] Privileged Guest (domain 0)
< > Backend driver support <*> Block-device frontend driver <*> Network-device frontend driver < > Framebuffer-device frontend driver [*] Scrub memory before freeing it to Xen [ ] Disable serial port drivers <*> Export Xen attributes in sysfs Xen version compatibility (3.0.2 and later) --->
+CONFIG_HIGHMEM64G=y # этим отличается от статьи http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo
+CONFIG_X86_PAE=y # этим отличается от статьи http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo

Код: Выделить всё

xen_node1 / # make
xen_node1 / # make modules
xen_node1 / # make install


Перенести ядро DomU в /usr/lib/xen/boot/ и проверить переменную "kernel" в /etc/ha.d/ha.xen/virt-srw1 /etc/ha.d/ha.xen/virt-srw2
Инсталлируем модули для domU

Код: Выделить всё

xen_node1 / # export INSTALL_MOD_PATH="/mnt/gentoo1"
xen_node1 / # make modules_install
xen_node1 / # export INSTALL_MOD_PATH="/mnt/gentoo2"
xen_node1 / # make modules_install


размонтируем drbd

Код: Выделить всё

xen_node1 / # umount /dev/drbd0
xen_node1 / # umount /dev/drbd1


16. Проверяем domainU

Код: Выделить всё

xen_node1 / # xm create -C /etc/ha.d/ha.xen/virt-srw1


Выход в консоль Dom0 Ctrl + ]

Код: Выделить всё

xen_node1 / # xm create  -C /etc/ha.d/ha.xen/virt-srw2


Если в консоли виртуальной машины появилась такая запись

Код: Выделить всё

Warning: unable to open an initial console.
-----------------------------------------------------
Your system seems to be missing critical device files
in /dev !  Although you may be running udev or devfs,
the root partition is missing these required files !
To rectify this situation, please do the following:
mkdir /mnt/fixit
mount --bind / /mnt/fixit
cp -a /dev/* /mnt/fixit/dev/
umount /mnt/fixit
rmdir /mnt/fixit
You may refer to these instructions at /etc/issue.
If you previously had an issue file, it has been
backed up at /etc/issue.devfix.  Once you've fixed
your system, you will have to restore your old issue
file in order to get rid of this warning.


Выполните следующие

Код: Выделить всё

gentoo1 / # mkdir /mnt/fixit
gentoo1 / # mount --bind / /mnt/fixit
gentoo1 / # cd /mnt/fixit/dev
gentoo1 / # mknod -m 600 console c 5 1 && chown root:tty console
gentoo1 / # mknod -m 600 initctl p
gentoo1 / # mknod -m 666 null c 1 3
gentoo1 / # mv -f /etc/issue.devfix /etc/issue
gentoo1 / # cd ~
gentoo1 / # umount /mnt/fixit
gentoo1 / # rmdir /mnt/fixit


Если, какие ни будь устройства есть, их надо удалить и создать новые.

17. Если все работает как надо переходим к следующему Останавливаем все domU

Код: Выделить всё

xen_node1 / # xm shutdown –wa


запускает heartbeat

Код: Выделить всё

xen_node1 / # /etc/init.d/heartbeat start


проверяем Xen

Код: Выделить всё

xen_node1 / # xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0    98     2     r-----    745.8
gentoo1                                      6   256     1     -b----    199.2
gentoo2                                      6   256     1     -b----    36.2


проверяем DRBD

Код: Выделить всё

xen_node1 / # cat /proc/drbd
version: 0.7.23 (api:79/proto:74) SVN Revision: 2686 build by root@xen_node1, 2007-05-21 13:20:53
0: cs:Connected st:Primary/Unknown ld:Consistent
   ns:3908 nr:3476 dw:7384 dr:32820 al:0 bm:2133 lo:0 pe:0 ua:0 ap:0
1: cs:Connected st:Primary/Unknown ld:Consistent
   ns:4096 nr:4544 dw:8816 dr:32604 al:0 bm:2948 lo:0 pe:0 ua:0 ap:0


Если на виртуальных машинах IP адрес раздается через DHCP
для дистрибутива gentoo в /etc/conf.d/net виртуальных машин (что-бы не менялся MAC адрес) прописать mac_eth0="00:16:3E:XX:XX:XX" вместо XX:XX: свои значения
Добавляем

Код: Выделить всё

rc-update add heartbeat default


Затем обновляем зависимости запуска

Код: Выделить всё

xen_node1 # /etc/init.d/depscan.sh -u


Не в коем случаи на ставить в runlevels default net.eth0 net.eth1 должно быть

Код: Выделить всё

xen_node1 / # rc-status
Runlevel: default
drbd                                                               [ started  ]
heartbeat                                                          [ started  ]
local                                                              [ started  ]
xend                                                               [ started  ]
xinetd                                                             [ started  ]


15. Поднимаем другой нод,xen_node2

Разделы на дисках должны полностью быть идентичны с теми которые мы настроил для первого нода, особенно для DRBD разделов.
Копируем любым методом каким угодно я использовал mkstage4.sh только то что относится к нодам Это разделы /dev/sda1, /dev/sda2 /dev/sda3
Поправить ядро если машины разные.
после установки ядра

Код: Выделить всё

emerge -K drbd


и запустите

Код: Выделить всё

depmod –a


Не забываем загрузчик

правим /etc/conf.d/net правим /etc/conf.d/hostname

Перезапускам нод и скорее всего полезут ошибки это связано с тем что сетевые карты стали иметь другие название (вместо eth0 будет eth2 ) идем в /etc/udev/rules.d/70-persistent-net.rules и исправляем на те значения которые соответствуют нашим настройкам.
Будут ошибки при запуске heartbeat
Удалить файлы /var/lib/heartbeat/hb_generation
Удалить файлы /var/lib/heartbeat/hb_uuid

Они генерируются снова ждём когда DRBD синхронизирует разделы.

Код: Выделить всё

xen_node2 / # watch "cat /proc/drbd "

Every 2.0s: cat /proc/drbd Wed Nov 14 17:56:25 2007
version: 0.7.24 (api:79/proto:74) SVN Revision: 2875 build by root@xen_node1, 2007-11-14 11:59:09
0: cs:Connected st:Primary/Secondary ld:Consistent
   ns:11740 nr:2503648 dw:2515408 dr:47144 al:0 bm:935 lo:0 pe:0 ua:0 ap:0
1: cs:Connected st:Primary/Secondary ld:Consistent
   ns:8168040 nr:4084144 dw:4085956 dr:8179912 al:1 bm:1674 lo:0 pe:0 ua:0 ap:0


«Разгоняем» виртуальные машины по своим нодам, на консоли нода где работают 2-е xm машины доём команду

Код: Выделить всё

xen_node1 / # /usr/lib/heartbeat/hb_standby foreign
2007/11/14_17:59:37 Going standby [foreign].


Проверка drbd на xen_node1 ноде 1

Код: Выделить всё

xen_node1 / # cat /proc/drbd
Every 2.0s: cat /proc/drbd Wed Nov 14 18:00:31 2007
version: 0.7.24 (api:79/proto:74) SVN Revision: 2875 build by root@xen_node1, 2007-11-14 11:59:09
0: cs:Connected st:Primary/Secondary ld:Consistent
   ns:11780 nr:2503648 dw:2515448 dr:47144 al:0 bm:935 lo:0 pe:0 ua:0 ap:0
1: cs:Connected st:Secondary/Primary ld:Consistent
   ns:8168656 nr:4084560 dw:4086988 dr:8180012 al:1 bm:2226 lo:0 pe:0 ua:0 ap:0


Проверяем виртуальные машины xen_node1 ноде 1

Код: Выделить всё

xen_node1 / # xm list

Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0    98     2     r-----    473.3
gentoo1                                      1   256     1     -b----     25.8


Проверка drbd на xen_node2 ноде 2

Код: Выделить всё

xen_node2 ~ # cat /proc/drbd
version: 0.7.24 (api:79/proto:74) SVN Revision: 2875 build by root@xen_node1, 2007-10-19 15:47:05
0: cs:Connected st:Secondary/Primary ld:Consistent
   ns:0 nr:564 dw:564 dr:0 al:0 bm:4 lo:0 pe:0 ua:0 ap:0
1: cs:Connected st:Primary/Secondary ld:Consistent
   ns:416 nr:4084328 dw:4084744 dr:6060 al:0 bm:1371 lo:0 pe:0 ua:0 ap:0


Проверяем виртуальные машины xen_node2 ноде 2

Код: Выделить всё

xen_node2 ~ # xm list

Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0    98     2     r-----    473.3
gentoo2                                      1   256     1     -b----     25.8


Кажется нечего не забыл
А уже в виртуалках поднимайте что Вам угодно!

По этой схеме я думаю будет работать и веда у меня железа нет что-бы проверить
Спасибо сказали:
Аватара пользователя
Vorb
Сообщения: 166
Статус: Ярый антифорточник
ОС: Gentoo Linux

Re: Кластеры на Linux

Сообщение Vorb »

Очень интересно.. когда я с этим парился - xen особо не рулил.. Спасибо!
И на обломках Microsoft напишут наши имена!
Спасибо сказали: