Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Голосование

Дилемма Уорнока. http://ru.wikipedia.org/wiki/%C4%E8%EB%E5%EC%EC%E0_%D3%EE%F0%ED%EE%EA%E0

Публикация верна, хорошо изложенная информация в дальнейших комментариях не нуждается. Сказать нечего, кроме как: «Да, он прав.»
Публикация полностью бессмысленна, и никто не хочет даже тратить время, энергию и трафик на указание этого.
Никто по какой-то причине не читал публикацию.
Никто не понял публикацию, но по какой-то причине не попросит разъяснить
По какой-то причине никого не волнует публикация.

Автор Тема: SMB кластер на Ubuntu server 12.04 LTS  (Прочитано 3247 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн PbI6A

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1096
  • просто я так выгляжу!
    • Просмотр профиля
    • Жизнь, как она есть.
SMB кластер на Ubuntu server 12.04 LTS
« : 29 Мая 2012, 11:55:06 »
SMB кластер на Ubuntu server 12.04 LTS.

Взялся поставить SMB кластер на Ubuntu server 12.04 LTS.

Один сервер уже был поставлен раньше, ещё во время Alpha1 и показал себя очень и очень хорошо. Установил второй сервер с аналогичной или весьма близкой конфигурацией, создал аналогичный SMB -конфиг, просинхронизировал с помощью rsync. На сервере есть директория /shares, в которой хранятся периодически архивируемые директории пользователей /shares/user/… и некоторые другие директории /shares/… например, системная /shares/lost+found, которую нам синхронизировать будет ни к чему.

Из чего и как будет сделан кластер?

1. Ноды кластера будут иметь разные ip адреса и тот кластер, который будет становиться основным, будет поднимать на сетевом интерфейсе алиас с “рабочим” ip кластера, на который будут подключаться люди.

2. Информация будет синхронизироваться с помощью rsync, так что при не слишком больших изменениях хранимой информации и регулярных обновлениях, обновляться будет реально не много.

3. Исчезновение сети на кластере будет проверяться по пропадению “маршрутизатора по умолчанию”.

4. Подъём кластера будет производиться по пропадению его основного ip в зоне видимости остальных нодов при наличии “маршрутизатора по умолчанию”.

5. Описанная модель кластера предполагает реализацию, скорее, “наиболее дешёвого в реализации кластера, дающего удовлетворительные параметры по доступности и сохранности информации”, чем “гарантирующий сохранность информации при относительной доступности и высокой цене кластер”.

1. Конфигурация rsync.

/etc/default/rsync:
====фрагмент====
RSYNC_ENABLE=true
====фрагмент====

sudo touch /etc/rsyncd.conf
sudo nano /etc/rsyncd.conf
В файле настройки rsync пишем:

====начало====
[shares]
comment = All files
path = /shares
use chroot = false
uid = backup
gid = backup
log file = /var/log/rsyncd/shares.log
read only = true
write only = false
hosts allow = здесь пишем адрес нашей подсети с маской (или подсети нашего кластера – более параноидальный вариант)
hosts deny = *
transfer logging = false
====конец====

sudo touch /etc/rsync_password
sudo nano /etc/rsync_password

В файле пароля rsync_password пишем:

====начало====
123456 (или что там у вас будет в качестве пароля?)
====конец====

Просто так, одной строкой и больше ничего!

sudo chmod 600 /etc/rsync_password
sudo mkdir /var/log/rsyncd

sudo touch /etc/logrotate.d/rsyncd
sudo nano /etc/logrotate.d/rsyncd

В файле настройки ротации логов rsync пишем:

====начало====
/var/log/rsyncd/shares.log {
rotate 6
weekly
compress
missingok
notifempty
}
====конец====

sudo service rsync start

В принципе, сервис настроен и должен запуститься с сообщением [OK], убедиться в его работе можно командой:
rsync rsync://localhost

Должен быть показан ресурс с комментарием:
shares                    All files

2. Настройка кластера.

Для основных кластерных служб мы создадим директорию в общем серверном доступе (в которой, разумеется, не будет пароля, см. п.1):

sudo mkdir /shares/user/backup
sudo chown root:root /shares/user/backup
sudo touch /shares/user/backup/cluster.pl
sudo nano /shares/user/backup/cluster.pl
sudo chmod +x /shares/user/backup/cluster.pl

На данный момент (2012-05-29) программа управления кластером у меня такая:

====начало====
#!/usr/bin/perl
#
# basic config
#
$cluster_ip=”основной ip адрес кластера“;
$cluster_ip_mask=”маска ip адреса кластера“;
$defaultrouter_ip=”ip адрес маршрутизатора по умолчанию“;
$iface=”имя сетевого интерфейса“;
$timeout=7;# этот параметр (в секундах) нужен чтобы кластер не глючил на время переходных процессов в сетевых интерфейсах. В отдельных “тяжёлых” (cisco detected!) случаях может потребоваться величина 60 или даже 80. Чем величина меньше, тем переключение “шустрее”, но небезопаснее.
$logfile=”/var/log/cluster.log”;
#
# ping
#
use Net::Ping;
$p=Net::Ping->new();
#
# force not master if rebooted
#
`ifconfig $iface\:0 down 2>/dev/null`;
`service rsync stop`;
#
# logging
#
$date=`date`;
chop ($date);
`echo $date Cluster started as node>>$logfile`;
`echo rsync daemon stopped>>$logfile`;
`ifconfig $iface>>$logfile`;
#
$master=0;
$lan=0;
$count=0;
#
while (TRUE){
#
# ping testing
#
if ($p->ping($defaultrouter_ip,3) gt 0){$lan=1;$count++;}else{$lan=0;$count=0;}
#
# testing if need to move master->node
#
if ($lan eq 0 && $master eq 1){
$master=0;
$count=0;
`ifconfig $iface\:0 down 2>/dev/null`;
`service rsync stop`;
$date=`date`;
chop ($date);
`echo $date Cluster state: master-\>node>>$logfile`;
`echo rsync daemon stopped>>$logfile`;
`ifconfig $iface>>$logfile`;
}
#
# testing if need to move node->master
#
if ($lan eq 1 && $p->ping($cluster_ip,3) lt 1 && $master eq 0 && $count gt $timeout){
$master++;
`ifconfig $iface\:0 inet $cluster_ip/$cluster_ip_mask `;
`killall -INT rsync`;
`service rsync start`;
$date=`date`;
chop ($date);
`echo $date Cluster state: node-\>master>>$logfile`;
`echo rsync daemon started>>$logfile`;
`ifconfig $iface>>$logfile`;
}
#
#print “lan=$lan count=$count master=$master\n”;
#
# timeout
#
$c=`ps ax|grep rsync|grep avz|grep -v grep`;
chop ($c);
if ($c eq “” && $master eq 0){ `/shares/user/backup/sync.sh`;}
`sleep 1`;
}
====конец====

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

3. Синхронизация.

Как это не чудовищно, но нам придётся синхронизировать все ноды с активным кластерным элементом. Постоянно, 24/7. Делать это будет простенький скрипт.

sudo touch /shares/user/backup/sync.sh
sudo chmod +x /shares/user/backup/sync.sh
sudo nano /shares/user/backup/sync.sh

Вот что будет внутри:

====начало====
#!/bin/sh
rsync –password-file=/etc/rsync_password -avz –delete –exclude lost+found –exclude user/backup –exclude user/bk rsync://username@cluster_ip:/shares/ /shares>/dev/null 2>/dev/null
====конец====

Именно для этого username мы и сохраняли пароль в п.1. Разумеется, username и пароль должны быть одинаковыми для всех нодов нашего кластера. Директория user/bk, упомянутая в этом файле – хранилище резервных копий документов, которые у меня делаются средствами нода, и потому в синхронизации не участвует.

4. Автостарт.

Запускаться всё это безобразие будет из стартовых скриптов.

sudo touch /etc/init.d/cl-daemon
sudo chmod +x /etc/init.d/cl-daemon
sudo nano /etc/init.d/cl-daemon

Вот что будет внутри:

====начало====
#!/bin/sh
#/shares/user/backup/bk.pl&
/shares/user/backup/cluster.pl&
====конец====

sudo ln -s /etc/init.d/cl-daemon /etc/rc2.d/S99cl-daemon

Аналогично настраиваем второй (другие) нод кластера. Устанавливаем в серверный шкаф…
« Последнее редактирование: 30 Мая 2012, 07:28:19 от PbI6A »
LINUX means: Linux Is Not a UniX
Ubuntu осталась на компе, нетбуке, сервере.
Да здравствует Debian! Debian - наше всё!

Оффлайн PbI6A

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1096
  • просто я так выгляжу!
    • Просмотр профиля
    • Жизнь, как она есть.
Re: SMB кластер на Ubuntu server 12.04 LTS
« Ответ #1 : 13 Июля 2012, 11:23:08 »
В последнее время стали наблюдаться сильные тормоза кластера. Отключение rsync, бэкапа и кластерных скриптов ни коим образом не влияет на улучшение ситуации. У кого-нибудь был подобный эффект на высоконагруженном SMB-сервере?
Пока сервер был 12.04 alpha1, всё вообще летало. После релиза и обновления началось :(
LINUX means: Linux Is Not a UniX
Ubuntu осталась на компе, нетбуке, сервере.
Да здравствует Debian! Debian - наше всё!

 

Страница сгенерирована за 0.058 секунд. Запросов: 28.