The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Кластер Samba с использованием CTDB
Введение

Данная статья описывает механизм развертывания файлового сервера на
предварительно поднятом кластере высокой готовности (High-Aviability).
Предполагается, что все кластерные службы, а так же службы обеспечения высокой
готовности настроены и запущены. В моем случае, кластер состоит из 2-х узлов.

Собственно ПО

Поясню выбор ПО и, собственно, для чего это все делается.

1. Чтобы поднять кластер из соединенных между собой каналами связи серверов,
необходимо установить некоторые службы для централизованного управления
ресурсами, а также использовать кластерную ФС для организации общего хранилища.
В случае, если используется ОС от RedHat, сюда входят:

- CMAN - или cluster manager - служба управления кластером. демон, который
соединяет и отсоединяет узлы от кластера. Выполняется на каждой ноде;

- CCSD - это демон, который обеспечивает доступ к файлу
конфигурации(cluster.conf) другим кластерным приложениям. Выполняется на каждом узле;

- fencing - часть кластерной системы конфигурации. Этот демон блокирует доступ
узлу, с которым отсутствует связь, к общим ресурсам кластера.

- GFS2 в качестве кластерной ФС.

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

- DRBD. По сути, сетевой RAID1. Используется для репликации данных. Таким
образом данные всегда доступны при отказе одного из узлов. Начиная с версии 8,
DRBD позволяет организовать работу всех устройств в режиме "primary", в отличае
от предыдущих версий, где primary устройство было единственное.

- HeartBeat. Механизизм "сердцебиения". Эта служба "наблюдает" за узлами, и, в
случае, отказа одного из них, передает задачу другому, рабочему узлу. Таким
образом, достигается доступность сервисов.

3. Чтобы поднять файловый сервер на данном кластере и использовать его для
Windows-клиентов, необходимо использовать Samba'у. Текущая версия Samba не
поддерживает развертывание её на кластере из-за свеобразного механизма работы.

Поясню: Samba использует легковесную базу данных (TDB) для приведения
соответствия Windows SID к Unix UID/GID (таблицы ID-мэппинга), хранения данных
об открытых сессиях (session.tdb), таблицу блокировок файловой системы
(locking.tdb), а также ряд других параметров.

Если использовать классическую конфигурацию на кластере "как есть", получим
следующее: На каждом узле работает свой демон smbd и каждый узел имеет свою
копию TDB, причем эти TDB никак не связаны между собой и не имеют механизма
взаимодействия. Это и является проблемой. Необходимо, чтобы все узлы кластера
"знали" в каждый момент времени некоторые значения из всех TDB. Ключевым здесь
является - locking.tdb и session.tdb. Для этих целей и используется CTDB.

CTDB преобразует стандартный механизм работы Samba с TDB: все локальные
locking.tdb и session.tdb - преобразуются в распределенную базу данных, таблицы
ID-мэппинга остаются под управлением локальных демонов smbd. CTDB также
осуществляет управление демонами smbd и производит передачу управления демоном
smbd в случае отказа узла.

Подведем некоторые итоги

Имеем следующее:

-кластерную систему, которая используется как файловый сервер. Для этого
используем службу Samba, запущенную одновременно на всех узлах

- за её работу отвечает CTDB. Данные хранятся на локальных дисках,
реплицируются с помощью DRBD, доступ к ним может осуществляться одновременно
обоими узлами кластера(для этого и нужна кластерная ФС - GFS2).

Таким образом, потеря данных исключена, доступность сервисов обеспечена.

Служба HeartBeat в данном случае не используется, так как CTDB выполняет эти
функции для Samba-сервера.

В результате, получим: высокопроизводительный файловый сервер, обеспечивающий
100%-ю целостность данных и непрырывность предоставляемых сервисов.

Установка, настройка и запуск

То, что описано ниже, делаем на всех узлах кластера.

Для начала собираем CTDB из исходных текстов

       cd ctdb
       ./autogen.sh
       ./configure
       make
       make install


После этого необходимо создать и отредактировать основные конфигурационные
файлы, служащие для запуска и работы CTDB.

1. Создать файл /etc/sysconfig/ctdb.sysconfig:

       CTDB_RECOVERY_LOCK="/synchronized/lock"
       CTDB_PUBLIC_INTERFACE=eth0
       CTDB_PUBLIC_ADDRESSES=/usr/local/etc/ctdb/public_addresses
       CTDB_MANAGES_SAMBA=yes
       CTDB_INIT_STYLE=redhat
       CTDB_NODES=/usr/local/etc/ctdb/nodes
       CTDB_LOGFILE=/var/log/log.ctdb

В данном случае, этот файл не использует все возможные параметры, а лишь те,
которые необходимы в данном случае:

CTDB_RECOVERY_LOCK="/synchronized/lock" - этот параметр описывает
месторасположение файла, в котором хранится записи о том, какой из узлов
является мастером восстановления. Файл lock должен располагаться на общем
хранилище и быть доступным всем нодам,использующим CTDB.

CTDB_PUBLIC_INTERFACE=eth0 - этот параметр описывает сетевой интерфейс, на
котором в данный момент времени поднято сетевое соединение.

CTDB_PUBLIC_ADDRESSES=/usr/local/etc/ctdb/public_addresses - этот параметр
определяет файл, содержащий список IP-адресов, по которым клиенты, использующие
Samba для доступа к файловым ресурсам, посылают запросы на соединение.
Распределением этих адресов по нодам занимается CTDB.

CTDB_MANAGES_SAMBA=yes - этот параметр определяет, будет ли CTDB управлять
запуском  Samba-сервера вместо стандартных сценариев управления, которые
реализует операционная система.

CTDB_INIT_STYLE=redhat - этот параметр описывает сценарии запуска служб для
различных операционных систем.

CTDB_NODES=/usr/local/etc/ctdb/nodes - этот параметр определяет файл, в котором
хранится информация об узлах кластера.

CTDB_LOGFILE=/var/log/log.ctdb - этот параметр определяет лог-    файл,
использующийся службой CTDB.

2.  Создать файл /usr/local/etc/ctdb/nodes:

       192.168.1.1
       192.168.1.2

Здесь IP-адрес 192.168.1.1 принадлежит первой ноде, IP-адрес 192.168.1.2 - второй.

3. Создать файл /usr/local/etc/ctdb/public_addresses:

       192.168.0.200/24 eth0

Это IP-адрес, за которым в DNS сервере закреплено доменное имя Samba-сервера.


Далее собираем самбу

       cd samba-3.3.8/source
       ./autogen.sh
       ./configure --with-ctdb=/usr/src/ctdb --with-cluster-support \
          --enable-pie=no --with-shared-modules=idmap_tdb2
       make
       make install

/usr/src/ctdb - каталог с исходными текстами CTDB, установленными ранее.

Правим smb.conf

Эти два параметра обязательно надо добавить в global. Остальное, по Вашим запросам.

       clustering = Yes
       idmap backend = tdb

Запуск Samba

Сначала запускаем CTDB на всех узлах кластера.

       /usr/local/sbin/ctdbd

Проверяем, запустилось ли.

       ctdb status

Если все конфигурационные файлы корректны,будет такое:

       Number of nodes:2
       pnn:0 192.168.1.1      OK (THIS NODE)
       pnn:1 192.168.1.2      OK
       Generation:1087563258
       Size:2
       hash:0 lmaster:0
       hash:1 lmaster:1
       Recovery mode:NORMAL (0)
       Recovery master:0

Проверяем для начала параметры smb.conf

       /usr/local/samba/bin/testparm

       Load smb config files from /usr/local/samba/etc/smb.conf
       Processing section "[public]"
       Loaded services file OK.
       Server role: ROLE_STANDALONE

Запускаем самбу:

       /usr/local/samba/sbin/smbd -D
       /usr/local/samba/sbin/smbd -D

Далее, все как обычно, только не забывайте, что это не кластер, и все действия
должны быть выполнены на всех узлах.

Тестирование

Для сравнения производительности Samba-сервера с использованием CTDB и без
использования CTDB, а также возможностей файловой системы (общего хранилища)
используется ряд тестовых модулей.

Скорость чтения данных

Чтение(MB/sec)
Клиент
1
2
3
4
Samba без CTDB
2,15
2,16
2,13
2,09
Samba + CTDB
24,73
23,42
23,26
23,15

Сервер был доступен по кналу 1 Гб/с, поэтому суммарно использовано около 75%
пропускной способности.

Скорость записи идентична, не намного уступает, определяется скорее возможностями файловой системы.
Замечу, что с ростом узлов (до 8) скорость доступа к данным (скорость
чтения/записи) стремительно растет.


Заключение

Предложенный вариант кластеризации Samba позволяет достичь некоторых результатов:
1. Высокая надежность и отказоустойчивость (читайте про CTDB). Потеря данных исключена.
2. Показатели производительности по сравнению с 1-серверными системами отличные.

Конфигурация годится для организации бюджетного кластерного файлового сервера,
и при грамотной организации каналов связи (между узлами, клиент- сервер)
обеспечит отличный уровень производительности.

Список источников

* http://ctdb.samba.org
* http://wiki.samba.org/index.php/Clustered_Samba
 
11.02.2010 , Автор: Панков Петр
Ключи: samba, cluster, CTDB / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Кластерные технологии

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Аноним, 22:44, 12/02/2010 [ответить] [смотреть все]
  • +/
    на freebsd я так понимаю оно никак не работает
     
  • 1.2, dimanoname, 23:16, 12/02/2010 [ответить] [смотреть все]
  • +/
    Предлагаю "High-Aviability" заменить более грамотным "High-Availability", а его перевод не "высокой готовности",а "высокой доступности" или "отказоустойчивости".
     
  • 1.3, ALex_hha, 23:59, 12/02/2010 [ответить] [смотреть все]
  • +/
    А что, автор man rpmbuild не асилил?
     
     
  • 2.5, pavlinux, 00:28, 13/02/2010 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    Ну теперь поясняй те, как ваша логика связала HA, Samba, CTDB и RPM, а тем более... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.6, sHaggY_caT, 11:19, 13/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Неприятно удивил способ установки ПО В комментариях даже был более острый пост,... весь текст скрыт [показать]
     
     
  • 4.7, pavlinux, 13:33, 13/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Очень чудно обновляется cvs up 124 124 svn up 124 124 git pull 1... весь текст скрыт [показать]
     
     
  • 5.11, sHaggY_caT, 17:42, 13/02/2010 [^] [ответить] [смотреть все]  
  • +/
    А кто будет следить за _версиями_ не коммитов, а ПО , за необходимостью обновле... весь текст скрыт [показать]
     
     
  • 6.17, pavlinux, 01:32, 14/02/2010 [^] [ответить] [смотреть все]  
  • +/
    А зачем Работает - нетрож, глючит проверяй Вон блин, в Дебиане, grub самообнов... весь текст скрыт [показать]
     
     
  • 7.20, Andrey Mitrofanov, 17:49, 14/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Записываем за версиями будет следить друхх павлина Глючит-Проверяй 124 - Пр... весь текст скрыт [показать]
     
     
  • 8.21, pavlinux, 19:46, 14/02/2010 [^] [ответить] [смотреть все]  
  • +/
    где-то туда, иногда надо переносить не бинарники, а строку для кофигуре Вот у ... весь текст скрыт [показать]
     
     
  • 9.22, Andrey Mitrofanov, 21:41, 14/02/2010 [^] [ответить] [смотреть все]  
  • +/
    И Истина открылась непросвещённым И возрадовались они И поверили в Путь Бээсдэ... весь текст скрыт [показать]
     
  • 9.23, sHaggY_caT, 00:47, 15/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Ну, я тоже те спеки, что правила, в Subversion храню И все-таки Вы не правы ... весь текст скрыт [показать]
     
     
  • 10.24, pavlinux, 03:03, 15/02/2010 [^] [ответить] [смотреть все]  
  • +/
    gt оверквотинг удален zypper up Загрузка данных о репозиториях Чтение уст... весь текст скрыт [показать]
     
  • 3.16, ALex_hha, 00:49, 14/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Вместо этого выполняем cd tmp wget http samba org samba ftp stable samba-... весь текст скрыт [показать]
     
     
  • 4.19, pavlinux, 01:51, 14/02/2010 [^] [ответить] [смотреть все]  
  • +/
    gt оверквотинг удален sh makerpms sh No such file or directory ... весь текст скрыт [показать]
     
     ....нить скрыта, показать (12)

  • 1.4, pavlinux, 00:09, 13/02/2010 [ответить] [смотреть все]  
  • +/
    >Чтение(MB/sec)
    >Клиент
    >1
    >2
    >3
    >4

    8 * 4 = 32 Мбит - это скорость в хреновой сети на хабах, с сетевухами Realtek 8139

    >Samba без CTDB
    >2,15
    >2,16
    >2,13
    >2,09

    см. выше
    >Samba + CTDB
    >24,73
    >23,42
    >23,26
    >23,15
    > Сервер был доступен по кналу 1 Гб/с,
    >поэтому суммарно использовано около 75% пропускной способности.

    А по-моему 19.2% пропускной способности.
    24,73 * 8 бит = 192 Mbit в сек.

    Господа, у Вас проблемы с сетью.

    > Скорость записи идентична, не намного уступает, определяется
    > скорее возможностями файловой системы.

    Ага... но только после 400 Mb/sec, и для FC SAS II

     
  • 1.8, E34, 15:15, 13/02/2010 [ответить] [смотреть все]  
  • +/
    2pavlinux:
    Вы не так поняли таблицу результатов:
    >Клиент
    >1
    >2
    >3
    >4

    - это просто номера клиентов, которые одновременно используют сервер.
    >24,73
    >23,42
    >23,26
    >23,15

    суммарно получаем скорость ~92 мега байта/с
    канал дает 1 гига бит/с , т.е. 128 мегабайт/с.
    отсюда получаем 92/128 = 71 - 72% использования пропускной способности канала.

     
     
  • 2.9, Аноним, 17:19, 13/02/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    это линейное чтение результаты dbench в студию желательно показать зависимость... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.10, Аноним, 17:21, 13/02/2010 [^] [ответить] [смотреть все]  
  • +/
    забыл сказать - виндовые клиенты обычно и так больше 15-25МБ на нос не дают - ... весь текст скрыт [показать]
     
     
  • 4.13, Hety, 20:05, 13/02/2010 [^] [ответить] [смотреть все]  
  • +/
    70 мб сек на гигабите делает как винда так и бубунта подрубленные к виндовой шар... весь текст скрыт [показать]
     
     
  • 5.14, Аноним, 20:39, 13/02/2010 [^] [ответить] [смотреть все]  
  • +/
    не у всех еще 2008 и 7-ка

     
     
  • 6.26, минона, 10:26, 15/02/2010 [^] [ответить] [смотреть все]  
  • +/
    не верно.
    правильно так - не у всех ещё бубунта и бубунта.
     
  • 2.18, pavlinux, 01:36, 14/02/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    А , так что ля code Чтение MB sec -----------------------... весь текст скрыт [показать] [показать ветку]
     
  • 1.15, McLeod095, 00:01, 14/02/2010 [ответить] [смотреть все]  
  • +/
    Ну я решил внести и свои пять копеек, правда они автору ох как не понравятся Во... весь текст скрыт [показать]
     
     
  • 2.25, минона, 10:21, 15/02/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    http ctdb samba org особенно это - CTDB is the core component that provides ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.27, man, 11:50, 15/02/2010 [^] [ответить] [смотреть все]  
  • +/
           Предполагается, что все кластерные службы, а так же службы обеспечения высокой готовности настроены и запущены. В моем случае, кластер состоит из 2-х узлов.

           ++ Собственно ПО

           В данном случае использован следующий набор ПО для High-Aviability:
           Операционная система - CentOS 5.4
           Кластерное ПО - все от RedHat (группы пакетов "Cluster" и "Cluster Storage")
           Файловая система для общего хранилища - GFS2.
           Репликация дисков DRBD8 (замечу, все узлы в режиме "primary")
           Механизм "сердцебиения" - опционально(далее поясню, почему) - HeartBeat.

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

    пока же совершенно очевидно, что вы увидели в man smb.conf опции про clustering и решили об этом всем рассказать

     
     
  • 4.29, E34, 13:52, 15/02/2010 [^] [ответить] [смотреть все]  
  • +/
    Весь софт я описал. Больше ничего не использовал.
     
  • 4.30, минона, 15:28, 15/02/2010 [^] [ответить] [смотреть все]  
  • +/
    я не автор. а автор итак уже поделился своей историей_успеха.
    собственно я предположил, что от него требовать что-то ещё, с разжёвыванием, на мой взгляд глупо (и нагло). спросить/уточнить/добавить - наверное приветствуется. я не прав?
    всё ПО перечислено. а для остального используется гугль и википедиа.
    >а то из вашего текста выходит - что заведется это на любом дистре, стоит только там поставить самбу и ctdb.

    заведётся. и не обязательно с именно таким ПО. и в таком количестве.
    просто он описал именно свою конфигурацию.
    зы:
    надеюсь у автора местные аналитеги не отбили желание писать дальше.

     
  • 4.36, мурзилка, 09:54, 16/06/2010 [^] [ответить] [смотреть все]  
  • +/
    а самому подрочиться очень тяжело, в качестве обзора статья хороша , только очень много всяких приложений проще на HA и drbd виртуализацию накрутить, а в случае в rhel + drbd + GFS2 ha-кластер средствами RHEL  собрать , ни к чему так усложнять все.
     
  • 1.28, E34, 13:36, 15/02/2010 [ответить] [смотреть все]  
  • +/
    Подправил статью.
    Результаты представил как есть, зависимость от колличества нод посмотрите у IBM-вской системы SoFS.
     
  • 1.31, Samm, 15:57, 15/02/2010 [ответить] [смотреть все]  
  • +2 +/
    Спасибо за статью - не знал про CTDB и обходился классической схемой с "бекапной" нодой. Все вполне понятно описано, а про rpmbuild и подобное - не слушайте эту ерунду, proof of concept тут есть, а уж статей по репозиториям для RHEL/CENTOS/Debian etc., и так хватает, кому надо красиво - сделает spec файлы.
     
  • 1.32, ALex_hha, 00:32, 22/02/2010 [ответить] [смотреть все]  
  • +/
    > кому надо красиво - сделает spec файлы

    а ниче что spec файл уже есть в исходниках, видать разработчики самбы для прикола его туда положили :)

    > А зачем? Работает - нетрож, глючит проверяй.

    ЖЖЕШЬ!!!

    > с чего вообще взяли, что он должен объяснять, что такое CTDB?

    а какой тогда глубокий смысл в статье?

    > Samba использует легковесную базу данных (TDB) для приведения соответствия Windows SID к Unix UID/GID

    а про ldap ты ничего не слышал?

     
     
  • 2.34, E34, 10:46, 25/02/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > Samba использует легковесную базу данных (TDB) для приведения соответствия Windows SID к Unix UID/GID
    > а про ldap ты ничего не слышал?

    ldap используется для хранения базы данных паролей пользователей, но никак не блокировок файловой системы и данных об открытых сессиях.
    TDB и ldap используются для абсолютно разных целей, ваш вопрос неактуален.

     
  • 1.33, McLeod095, 12:10, 24/02/2010 [ответить] [смотреть все]  
  • +/
    Отлично Теперь уже более менее понятно, мне хоть это и не надо настраивать, но ... весь текст скрыт [показать]
     
     
  • 2.35, E34, 10:48, 25/02/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >[оверквотинг удален]
    >те нюансы которые надо осветить, потому что сейчас статья находится просто
    >в непонятном состоянии. Она сейчас ни для новичка ни для уже
    >подготовленного специалиста.
    >Было бы неплохо описать как хранятся данные, опять же по каким причинам
    >используется GFS2 и DRBD? Почему сначала нужен heartbeat потом не нужен?
    >Мне как уже не новичку и так все понятно, и даже
    >что не понятно я или прочту или додумаю сам, а вот
    >новичку (кому в принципе довольно часто бывают интересны такие вещи и
    >у них есть время на эксперименты такого рода) может быть очень
    >сложно понять логику статьи и тем более сделать аналогичное.

    Хорошая критика еще никому не навредила :)
    Доработаю статью.

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor