Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
n При восстановлении отказавшего датацентра происходит обратная замена файла с записями зоны.
Для тестирования я написал небольшой скрипт на
языке Perl и воспользовался пакетом nagios-plugins, в который входит множество
утилит по проверке доступности служб. Сайт пакета находится по адресу
tar -xzvf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure –prefix=/usr/local/nagios-plugins
make
make install
Пример скрипта:
#!/usr/bin/perl
# Путь к файлам зон сервера имен
my $bind_cfg='/usr/local/geobind/etc';
# Команда для перечитывания файлов зон сервером BIND9
my $bind_restart = '/usr/local/geobind/sbin/rndc reload';
# Описание наших кэширующих датацентров:
my $datacenters = [
{id=>'us', name=>'us.example.com'},
{id=>'ru', name=>'ru.example.com'},
{id=>'jp', name=>'jp.example.com'},
];
# Примечание: имена типа jp.example.com были раньше
# прописаны в DNS и служат для обнаружения факта
# восстановления отказавших региональных датацентров
foreach my $dc (@$datacenters)
{
# Вычисление контрольных сумм зон для дальнейшего сравнения
my $md1= (split(/s+/, `md5sum $bind_cfg/$dc->{id}.db`))[0];
my $md2= (split(/s+/, `md5sum $bind_cfg/central.db`))[0];
# Если контрольные суммы совпадают, то это означает,
# что уже было переключение с отказавшего датацентра на центральный
if($md1 eq $md2)
{
# Проверяем состояние датацентра и, если был факт восстановления,
# то переключаем пользователей обратно на региональный датацентр
if(!system("/usr/local/nagios-plugins/libexec/check_http -H $dc->{name}"))
{
print "$dc->{id} has been recovered ";
system("cp $bind_cfg/$dc->{id}-original.db $bind_cfg/$dc->{id}.db");
restart_dns("$bind_cfg/$dc->{id}.db",2);
}
}
# Если переключения не было (разные контрольные суммы),
# то тестируем доступность датацентра и переключаем
# пользователей на центральный в случае проблем
else
{