Доброе ...! Помогите, направте в правильное русло. У меня есть 2 разных компа, надо сделать Отказоустойчивые сервера. Т.е. они должны заменять друг друга если один из них упал по какой либо причине. Роль их сводится к следующему: это доступ к интернету (gateway, squid, dns) ещё есть MySQL. Кроме того есть VPN (MPD)
Дайте хотя бы ссылку на то как эта отказоустойчивость реализуется.
поиск рулит:
http://www.opennet.me/search.shtml?words=Отказоустойчивый+&config=htdig_forum&restrict=
http://www.opennet.me/search.shtml?words=Отказоустойчивый&config=htdig_forum&restrict=forumищи еще по слову 'heartbeat'
>ищи еще по слову 'heartbeat'
е надо связываться с этим>отказоустойчивость реализуется.
путем:
а - зеркалка дисков
б - замена сервера в ручную :))
Как-то приходилось делать что-то подобное....Firewall-1 через который все выходят в интернет. ( IP 111.111.111.66 )
Firewall-2 через rsync зеркалится с Firewall-1 . ( IP 111.111.111.67 )
если Firewall-1 неотвечает на ping от Firewall-2 ( что значит Firewall-1 умер ), то он перенимает сетевые настройки от Firewall-1.
Note: необязательно ping можно к примеру SSH Port проверять.....
На Firewall-2 создал небольшой скрипт:
file:/usr/local/bin/fwcontrol============================================================
#!/bin/bash
cd /usr/local/bin
START="1"
HOST="111.111.111.66"
MAILTO="admin@domain.ru"
if [ -f flag ]
then
while [ -f flag ]
do
echo
echo "......NEW Firewall is OK!"
echo
sleep 2
done
else
while [ $START = "1" ]
do
ping -c 4 $HOST > _tmp
if [ "Unreachable" = "`cat _tmp | grep Unreachable |awk -F " " '{print $6}' | head -n 1`" ]
then
echo " ERROR! Host $HOST is not found..........."
echo
ifconfig eth0 111.111.111.66 netmask 255.255.255.192 up #
ifconfig eth1 222.222.222.222 netmask 255.255.255.0 up #
ifconfig eth2 123.123.123.123 netmask 255.255.255.0 up #
route add default gw 111.111.111.65 #
touch flag
echo "
Firewall-1 is down!Firewall-2 is up.
`ifconfig`
`route -n`" | mailx -s "Firewall-1 is down" $MAILTO
/etc/init.d/fwcontrold stop
exit 0
else
echo
echo " .......Firewall is OK!"
fi
done
sleep 2
exit 0
fi
=====================================================================
который запускается как demon fwcontrold:
file:/etc/inin.d/fwcontrold
=====================================================================
#! /bin/sh
FW_BIN_DIR=/usr/local/bin
FW_BIN_PID=/var/run/fw.pid
FW_BIN=$FW_BIN_DIR/fwcontrol
. /etc/rc.status
rc_reset
case "$1" in
start)
if [ -f $FW_BIN_PID ]
then
echo -n "Daemon FW-CONTROL is running"
else
echo -n "Starting Daemon FW-CONTROL..........."
echo ""
cd $FW_BIN_DIR$FW_BIN > /dev/null 2>&1 &
echo $! > $FW_BIN_PID
echo " started_fw. PID:$!"
fi
rc_status -v
;;
stop)
if [ ! -f $FW_BIN_PID ]
then
echo -n "Daemon FW-CONTROL is down"
if [ -f $FW_BIN_DIR/flag ]
then
rm $FW_BIN_DIR/flag
fi
else
echo -n "Shutting down FW-CONTROL "
echo ""
kill -9 `cat $FW_BIN_PID`
rm $FW_BIN_PID
if [ -f $FW_BIN_DIR/flag ]
then
rm $FW_BIN_DIR/flag
fi
echo "FW-CONTROL STOP request issued."
fi
rc_status -v
;;
restart)$0 stop
sleep 5
$0 startrc_status
;;
status)
echo -n "Checking for service FW-CONTROL "
checkproc $FW_BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
rc_exit
====================================================================
/etc/inin.d/fwcontrold start|stop|status|restart
Eсли Firewall-1 умер, то админ получает е-майл, быстренько надёргивает штанишки и бегом решать проблему. :))))
Скрипты написаны для SuSE, но при небольшой доработке можно приспособить других...
>Как-то приходилось делать что-то подобное....
>
>Firewall-1 через который все выходят в интернет. ( IP 111.111.111.66 )
>
>
>Firewall-2 через rsync зеркалится с Firewall-1 . ( IP 111.111.111.67 )
>
>если Firewall-1 неотвечает на ping от Firewall-2 ( что значит Firewall-1 умер
>), то он перенимает сетевые настройки от Firewall-1.Ну и велосипед. Ключевые слова: CARP, VRRP, pfsync (синхронизация firewall и nat-таблиц).
>Ну и велосипед. Ключевые слова: CARP, VRRP, pfsync (синхронизация firewall и nat-таблиц).
>Неплохо....
Но.. хмм... и пара скриптов, написаннх на коленке, справятся с вышеописаной проблемой.
Кластер на основе 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/reiserfsprogs5. сделаем 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") # интерфейс для DRBDconfig_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.58. Устанавливаем 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/drbdversion: 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/hostname15. Собираем ядро для DomU
Код
xen_node2 ~ # cd /usr/src/linuxmake 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 listName 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 listName ID Mem VCPUs State Time(s)
Domain-0 0 98 2 r----- 473.3
gentoo2 1 256 1 -b---- 25.8
Кажется нечего не забыл
А уже в виртуалках поднимайте что Вам угодно!По этой схеме я думаю будет работать и венда у меня железа нет что-бы проверить
> Доброе ...! Помогите, направте в правильное русло. У меня есть 2 разных
> компа, надо сделать Отказоустойчивые сервера. Т.е. они должны заменять друг друга
> если один из них упал по какой либо причине. Роль их
> сводится к следующему: это доступ к интернету (gateway, squid, dns) ещё
> есть MySQL. Кроме того есть VPN (MPD)
> Дайте хотя бы ссылку на то как эта отказоустойчивость реализуется.Самый простой вариант - это настроить зеркалирование данных между серверами и путем ДНС перенаправлять запросы на рабочий сервер при падении одного.
Вот пару ссылок, как можно реализовать отказоустойчивость сервера или сайта:http://blog.miranor.ru/2011/06/blog-post.html
http://forum.itrm.ru/index.php?t=thread&frm_id=19