Для обеих машин в моем случае используется общее хранилище данных SAN, но возможно также использование синхронизации данных посредством DRBD или crsync. Обе машины с RedHat на борту, так что с конфигами (точнее с конфигом) проблем не должно быть.
eth1 - ваш сетефой интерфейс для синхронизации (желательно соединить ноды кроссовером) на обоих нодах
eth0 - внешний интерфейс (на обоих нодах)
Предположим что на первой и второй ноде на внешних интерфейсах присвоены адреса 10.0.0.10 и 10.0.0.20 соответственно.
dns1 - имя первичной ноды
dns2 - имя вторичной ноды
10.0.0.1 - это "внешний плавающий" IP нашего DNS-сервера на котором наш bind будет слушать. Этот IP будет переезжать вместе с bind'ом с сервера на сервер.
обязательно вписываем все ip и имена хостов в /etc/hosts
Итак поехали!
Ставим бинд на обе ноды:
Код: Выделить всё
#yum install bind bind-chroot
Код: Выделить всё
#mv /var/named/chroot /srv/data/named
#rm -rf /var/named
# ln -s /srv/data/named /var/named
правим файл /etc/sysconfig/named (на обоих нодах), в который дописываем строчку
Код: Выделить всё
ROOTDIR="/srv/data/named"
Код: Выделить всё
# mv /etc/named.conf /srv/data/named/etc
# mv /etc/named.iscdlv.key /srv/data/named/etc
# mv /etc/named.localhost /srv/data/named/etc
# mv /etc/named.loopback /srv/data/named/etc
# mv /etc/named.rfc1912.zones /srv/data/named/etc
# mv /etc/named.root.key /srv/data/named/etc
# ln -sf /srv/data/named/etc/named.conf /etc/named.conf
Код: Выделить всё
options {
listen-on-v6 { none; };
listen-on { 10.0.0.1; };
allow-transfer {
<ip вторичного сервера>;
};
allow-query {any;};
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "/var/log/named.log";
severity dynamic;
};
};
zone "." IN {
type hint;
file "/var/named/named.ca";
};
include "/etc/named.rfc1912.zones";
include "/var/named/zones.conf";
Код: Выделить всё
# cat > /srv/data/named/var/named/zones.conf
// Пример файла в котором будем прописывать зоны DNS. Я не буду расписывать что и как делать - этого в интернете валом.
zone "google.com" {
type forward;
forward only;
forwarders {
206.124.64.1;
85.115.208.29;
};
};
Код: Выделить всё
/srv/data/named/var/log/named.log {
compress
daily
rotate 5
missingok
#create 0644 named named
postrotate
/sbin/service named reload 2> /dev/null > /dev/null || true
endscript
}
Код: Выделить всё
# service named start
Ставим heatrbeat (также на обе ноды) - пора подумать об отказоустойчивости.
Код: Выделить всё
#yum install heartbeat
Код: Выделить всё
# touch /etc/ha.d/authkeys && vi /etc/ha.d/authkeys
Код: Выделить всё
auth 1
1 md5 supersecret
Меняем права на файл /etc/ha.d/authkeys:
Код: Выделить всё
# chmod 0600 /etc/ha.d/authkeys
Код: Выделить всё
# touch /etc/ha.d/ha.cf && vi /etc/ha.d/ha.cf
Код: Выделить всё
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
baud 19200
bcast eth1
auto_failback on
autojoin none
node dns1
node dns2
Код: Выделить всё
# touch /etc/ha.d/haresources && vi /etc/ha.d/haresources
Код: Выделить всё
dns1 IPaddr2::10.0.0.1/32/eth0 named
Инициируем автозапуск сервисов
Код: Выделить всё
# chkconfig heartbeat on
Запускаемся
Код: Выделить всё
# service heartbeat start
Теперь то же самое нужно проделать на второй ноде.
Изначально named будет жить на сервере dns1, но стоит выключить эту машину или просто выдернуть кабель из eth1 - через пару минут named переедет на dns2 и прихватит с собой IP-адрес.