The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Кластер Samba с использованием CTDB"
Отправлено auto_tips, 12-Фев-10 22:44 
++ Введение

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

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

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

Для файлсервера: Samba 3.3 и CTDB 1.0.82


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

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

Для начала собираем 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


URL:
Обсуждается: http://www.opennet.ru/tips/info/2297.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру