![]() |
Добавить Архитектура Запросы сейчас Цифры и факты FAQ Кнопка поиска Сделать стартовой |
![]() |
Центральный диспетчер Dispatcher Server dispatcherd vs/1.0
Статус этого документа.
Этот документ описывает принципы работы, процедуру установки и настройки центрального диспетчера Dispatcher Server (DS) Агентов Накопления Crawler Agents (CA) поисковой системы Turtle. Документ предназначен для служебного использования. Документ подразумевает предварительное знакомство с протоколом обмена компонент поисковой системы Search System Transfer Protocol и должен рассматриваться в совокупности с ним.Copyright Notice
Copyright © Stack Technologies Ltd. (2001). All Rights Reserved.
Содержание.
1. Назначение. Основным назначением центрального диспетчера Dispatcher Server (DS) является поддержание очередей сканирования для различных агентов накопления Crawler Agents (CA). Центральный диспетчер также отвечает за выделение уникальных идентификаторов ID сканируемых документов. На стороне DS поддерживаются вспомогательные базы ссылок (для вычисления PageRank и поисковых запросов типа: "кто ссылается на меня"). Эти данные используются программой поддержки перекрестных ссылок refererd. Центральный диспетчер поддерживает в актуальном состоянии результаты сканирования каждого отдельного ресурса и каждого HTTP-сервера в целом. Он отвечает за идентификацию документа согласно вычисленной характеристике MD5. Вспомогательной функцией центрального диспетчера является поддержка конфигурации различных компонент поискового комплекса. 2. Принципы работы. Программно центральный диспетчер реализован в виде двух компонент. Программа-демон dispatcherd обслуживает сетевые запросы CA по SSTP и сохраняет результаты такого сканирования в очереди для обработки. Программа turtle_loader осуществляет обработку таких очередей и помещает изменения в базы данных, которыми пользуется сам диспетчер. Демон может быть настроен так, что бы быть в состоянии самостоятельно производить такую обработку результатов запроса, однако в целях повышения скорости работы не следует использовать эту возможность без крайней на то необходимости. Компоненты диспетчера поддерживают SSTP-запросы с кодами в интервале 1-37 и все запросы с кодами больше 100, см. SSTP/1.0.
- 1. Назначение.
- 2. Принципы работы.
- 3. Установка.
- 4. Настройка и запуск.
- 5. Список параметров конфигурации.
- 6. Пример конфигурационного файла.
В своей работе центральный диспетчер оперирует со следующими базами данных:
- urls.db
- прямой индекс объектов сканирования,
- srv.db
- интегральная база HTTP серверов, которые подвергаются сканированию,
- md5.db
- база соответствия ID документа и его MD5 характеристики для определения уникальности документа,
- ref.db
- база ссылок документов друг на друга (IDn ссылается на IDm),
- user.db
- условное название нескольких баз, аналогичных url.db для поддержки очередей внешних CA,
- pool.db
- база свободных идентификаторов системы ID документов.
Эти базы данных реализованы на основе пакета BerkeleyDB версии 3.3.11. Строение баз следующее:
urls.db
Имеет BTREE структуру с дубликацией ключей DBDUP (см. описание BerkeleyDB). В качестве ключа используется каноническое интернет-имя сервера, на котором находится сканируемый элемент. Каждая запись из набора дубликатов содержит информацию о конкретном URI с данного сервера и имеет поля:
- u_int32_t id
- уникальный идентификатор ресурса,
- u_int32_t len
- длина документа в байтах,
- u_int32_t status
- статус данного документа,
- u_int32_t flags
- номер петли сканирования,
- time_t time
- время создания документа,
- time_t сheck
- время последней проверки ресурса,
- char hash[16]
- MD5 документа,
- char *uri
- имя URI ресурса.
md5.db
BTREE база, ключом является вычисленная характеристика MD5 документа в виде 16 байт. Значением является совокупность полей типа u_int32_t, характеризующих номера ID документов, для которых данное MD5 значение вычислено.srv.db
База данных серверов сканирования. Ключом RECNO базы является уникальный u_int32_t идентификатор сервера. Значением являются поля:
- u_int32_t ndocs
- количество документов сервера,
- u_int32_t flags
- номер петли сканирования,
- u_int32_t bps
- скорость последнего отклика сервера в байтах в секунду,
- u_int32_t time
- время последнего сканирования robots.txt для данного сервера,
- char *soft
- программное обеспечение сервера,
- char *name
- каноническое имя сервера, включая порт TCP.
ref.db
BTREE база с дупликацией ключей. Ключом u_int32_t является ID документа, который ссылается на другой документ. Значением является u_int32_t ID документа, на который ссылается документ.user.db
Условное название множества баз очередей, для внешних агентов накопления CA, имеют аналогичное url.db строение. Имена баз данных определяются в конфигурационном файле авторизации компонент поисковой системы conf/turtle.passwd. (Описание авторизации и строение файла turtle.passwd смотри ниже).pool.db
База данных свободных идентификаторов системы. Ключом BTREE базы является свободный u_int32_t идентификатор. Значение - пусто. Выделение идентификаторов производится в момент обнаружения ссылки, не содержащейся в базе url.db. При проверке ресурса сканированием, может оказаться, что данного документа не существует. Если документ не имел истории, то его номер освобождается и помещается в базу пула свободных идентификаторов. Прежде чем выделить новый идентификатор, компонента внесения новых объектов сканирования запрашивает у подсистемы pool.db номер свободного идентификатора. Если такой идентификатор существует, то он выделяется новому ресурсу и немедленно удаляется из базы данных pool.db. Если же эта база не содержит свободных ID, то в специальной записи с номером 0 извлекается номер последнего свободно выделенного ID и увеличивается на единицу, сохраняя новое значение в этой служебной записи.Стратегия работы диспетчера такова, что при ответе на любой запрос CA, относящийся к объектам сканирования, диспетчер сохраняет переданные ему данные в очередь обработки queue.db и извлекает из базы данных url.db новый объект для сканирования и увеличивая на единицу номер петли сканирования данного объекта. Очередь будет считаться полностью обработанной тогда, когда номера петли сканирования всех ресурсов будут соответствовать номерам петли сканирования каждого сервера. Данные в очереди пополняются с помощью внешней программы обработки ответов CA.
Центральный диспетчер имеет поддержку HTTP запросов типа:
3. Установка. Исходные тексты сервера dispatcherd, программы загрузки полученных данных turtle_loader и программы поддержки пользователей поисковой системы turtle_user находятся в дистрибутиве системы и собираются вместе с другими компонентами в работающие программы путем выполнения команды make в корне исходных текстов дистрибутивов. Для сборки отдельно только сервера DS и указанных программ необходимо сначала собрать библиотеку libturtle.a и затем в директории dispatcherd собрать программы с помощью:
- http://dispatcher.site:dispatcher_port/
- Выводит текущую статистику работы диспетчера и агентов накопления CA. Требует SSTP идентификации. Если параметрами идентификации будут указаны user/password одного из CA, то будут выданы статистические результаты работы именно этого CA. При введении данных привилегированной авторизации будут выданы данные по всем CA.
- http://dispatcher.site:dispatcher_port/reload
- Производит перезагрузку новых параметров конфигурации поисковой системы.
- http://dispatcher.site:dispatcher_port/getallow
- Позволяет редактировать конфигурацию разрешенных для соединения IP адресов или их интернет-имен. Составляющая часть системы безопасности Turtle. Требует исключительно привилегированной авторизации SSTP и HTTP.
- http://dispatcher.site:dispatcher_port/getmime
- Позволяет редактировать таблицу известных системе типов MIME и подключаемых внешних фильтров. Требует привилегированной SSTP и HTTP авторизации.
- http://dispatcher.site:dispatcher_port/getarchivers
- Позволяет модифицировать конфигурацию и сферу ответственности архивных серверов AS. Требует привилегированной SSTP и HTTP авторизации.
- http://dispatcher.site:dispatcher_port/getscaners
- Позволяет модифицировать список активных CA системы. Требует привилегированной SSTP и HTTP авторизации.
- http://dispatcher.site:dispatcher_port/getsearchers
- Позволяет редактировать конфигурацию базового кластера поиска поисковых процессоров SP. Требует привилегированной SSTP и HTTP авторизации.
- http://dispatcher.site:dispatcher_port/getusers
- Позволяет на низком уровне редактировать файл пользователей и их паролей (аналогично /etc/passwd в OS). Не рекомендуется использовать эту возможность, если вы до конца не понимаете, что делаете. Для создания и изменения идентификационной информации в комплект дистрибутива входит специальная программа turtle_user.
cd /where_is_dist_home/src/lib make cd ../dispatcher makeТ.к. при сборке данных программ используется библиотека BerkeleyDB, она должна быть предустановлена в системе и пути к ней указаны в Makefile.turtle. 4. Настройка и запуск. Сервер запускается посредством команд:
cd /dispatcher_home_dir /where_is_dispatcher_prog/dispatcherd /where_is_loader_program/turtle_loaderЭту последовательность можно включить в файл начальной загрузки компьютера (например, /etc/rc.local), чтобы при перезагрузке компьютера сервер автоматически запускался на данной машине. Программа может быть запущена с ключом:
-c other_config_fileпри этом конфигурация запуска зачитывается из указанного файла. Если программа запускается без ключей, то конфигурационные параметры будут зачитываться из файла turtle.cf в текущей директории. Этот файл следует подготовить с помощью редактора текстов до запуска серверной программы.
Правила оформления конфигурационного файла следующие:
- Любая строка, начинающаяся с символа '#', считается комментарием.
- Комментарии также могут быть определены в той строке, в которой определен параметр, началом комментария считается символ '#'.
- Каждая строка файла определяет один параметр.
- Имя параметра отделяется от его значения с помощью символа '=' и произвольного количества space пробелов или символов табуляции.
- Имя параметра не зависит от регистра символов, значение параметров всегда регистрозависимое.
- Любой параметр может быть опущен в конфигурационном файле, при этом будет использовано значение по умолчанию.
- Порядок следования конфигурационных параметров не имеет значения.
Программа воспринимает следующие внешние сигналы:
- SIGHUP
- производится ротация logfile.
- SIGTERM
- выполнение программы немедленно прекращается.
- SIGUSR1
- сервер производит ротацию данных очереди для обработки turtle_loader и создает новый файл очереди полученных данных. Файл с расширением queue.db.XXXXXX становится доступен загрузчику для обработки и пополнения новых объектов сканирования.
- SIGUSR2
- производится закрытие всех баз данных и перечитывание конфигурационных параметров. Полезно для изменения конфигурации компонент поисковой системы "на лету", без остановки программы dispatcherd.
Кроме того, при получении сигналов ошибки SIGBUS, SIGILL, SIGSEGV, SIGQUIT программа оставляет в домашней директории core-файл и шлет сообщение администратору системы об ошибке в программе по SMTP на адрес, указанный в конфигурации. Посылка таких сообщений может быть запрещена в отладочных целях с помощью конфигурационного параметра sendmessages=0 (см. ниже). 5. Список параметров конфигурации. Ниже приведен список используемых конфигурационных параметров сервера DS и краткое их описание:
6. Пример конфигурационного файла.
- rootdir = /some/directory
- Корневая директория сервера DS, относительно которой могут быть определены все остальные директории или имена файлов. Если имя файла начинается с символа '/', то считается, что в конфигурации указывается абсолютный путь к файлу, иначе имя файла будет определено относительно rootdir. Значение по умолчанию: /usr/local/turtle.
- dispatchername = dispatcher-001.turtle.ru
- Каноническое интернет-имя или IP-адрес сервера Dispatcher Server (DS), необходимо для зачитывания общих для поисковой системы конфигурационных параметров (например, списка разрешенных для соединения машин и пр.). Если общие конфигурационные параметры по каким-либо причинам не могут быть получены от DS (например, он просто не запущен), то будет произведена попытка зачитать их из локальных файлов конфигурации, определенных ниже. По указанному имени (или адресу) программа будет "слушать" TCP соединения. Значение по умолчанию: dispatcher-001.turtle.ru.
- port = 3320
- Номер порта, по которому может быть произведено соединение с центральным диспетчером. Значение по умолчанию: 3320.
- progname = dispatcherd
- Префикс для занесения учетных записей в журнал работы программы (logfile). Если различными компонентами системы используется общий журнал, то данный префикс позволит отличить записи данного сервера от других. Программное обеспечение также может быть откомпилировано с ключом компиляции -DUSE_SYSLOG. При этом записи будут производиться как в указанный logfile, так и с использованием syslog. При сборке пакета с ключом компиляции -DLOG_DAYTIME в журнал работы вместе с каждой записью будет занесено текущее время. По умолчанию, данная функция отключена. Значение по умолчанию: берется из имени запускаемой программы argv[0].
- logfile = logs/dispatcher.log
- Имя файла журнала работы программы. Значение по умолчанию: logs/turtled.log.
- pidfile = logs/dispatcher.pid
- Имя файла, в котором будет помещен идентификатор процесса - его номер в таблице процессов системы. Полезен администратору для написания скриптов посылки сигналов программе (например, SIGHUP). Значение по умолчанию: logs/turtled.pid.
- allowdb = conf/hosts.allow
- Имя файла локально разрешенных для обслуживания запросов внешних машин. Если при старте программе не удалось получить список шаблонов разрешенных для обслуживания машин от центрального диспетчера, то будет произведена попытка зачитать такие шаблоны из указанного в данном поле файла. Файл устроен так, что каждая строка содержит один шаблон, который оформляется так, как это используется в shell (например: 192.168.3.* или *.turtle.ru). Значение по умолчанию: conf/hosts.allow.
- pwfile = conf/turtle.passwd
- Файл описания известных системе пользователей и их идентификационной информации при использовании базовой SSTP идентификации. Файл создается и редактируется с помощью программы turtle_passwd с различными ключами. Значение по умолчанию: conf/turtle.passwd.
- version = 1.1
- Текущая версия программного обеспечения. Поле носит информативный характер. В дальнейшем значение этого поля планируется использовать для обеспечения программной совместимости компонент поисковой системы.
- maintainer = admin@e-mail.address
- Почтовый e-mail адрес администратора системы для посылки критических сообщений о работе программы.
- user = turtle
group = turtle- Имя и группа пользователя, от имени которого будет выполняться программа. Если программа запускается от имени суперпользователя, то ее привилегии будут изменены на указанные в этих полях привилегии из соображения безопасности для самой операционной системы. С использованием этих значений можно допускать автоматический запуск программы при рестарте компьютера, на котором установлен сервер VS. Значения по умолчанию: turtle/turtle.
- maxclients = 512
- Максимальное количество одновременно обслуживаемых системой запросов. Это значение не должно превышать максимального значения файловых дескрипторов, разрешенных операционной системой для данного пользователя. Если значение превышает максимально разрешенное, то оно будет уменьшено до правильного значения. Чрезмерное увеличение этого параметра без надобности может приводить к небольшой потере производительности. Уменьшение ниже требуемой величины приведет к отказу в обслуживании некоторых запросов. Рекомендованное значение: 512. Значение по умолчанию: 8192.
- timeout = 300
- Интервал времени в секундах, спустя который будет производиться проверка таймеров на предмет их переупорядочения. Значение по умолчанию: 300.
- readtimeout = 60
sendtimeout = 60- Таймауты системы для приема запросов и пересылки ответов от DS к клиентам (обычно CA). Если по истечении указанного периода в секундах запрос не удалось принять или ответ не удалось послать, то данное соединение закрывается.
- chroot = 0
- При запуске системы в целях безопасности программа может выполнить функцию chroot(). При этом все содержимое каталогов, расположенных выше по дереву, станет для программы недоступным. Текущей директорией и корнем станет директория, которая указана в параметре rootdir. Работоспособность данного параметра не проверялась, но особых препятствий не видно. Указанные действия осуществляются, если в данном поле определено значение, отличное от 0. Значение по умолчанию: 0.
- sendmessages = 1
- Данный параметр определяет, посылать или нет сообщения по электронной почте администратору системы в случае критических ошибок.
- scanuser = user_name
scanpass = user_password- Имя пользователя и пароль, используемые для базовой SSTP идентификации при обращении к центральному диспетчеру. Подробнее см. SSTP/1.0. Значения данных полей будут посланы сервером VS центральному диспетчеру DS при запуске программы для получения общих конфигурационных параметров. Если со стороны диспетчера идентификация не будет произведена, то DS ответит кодом 403 FORBIDDEN. При этом VS попытается прочесть конфигурационные параметры из локальных файлов (см. выше).
- debuglevel = 40
- Уровень занесения информации в журнал работы (см src/include/turtle_defs.h). Самый низкий уровень D_CRIT (10) - в журнал будут записаны только сообщения о критических ошибках, самый высокий - D_PROTOCOL, при этом в журнал будет занесено очень много отладочной информации, включая протокол сетевого обмена. Рекомендуемое значение:40-50.
- urldb = base/urls.db
- Имя файла базы данных, содержащих объекты сканирования. Если имя не содержит лидирующего '/', то будет интерпретироваться как имя относительно rootdir. Временные файлы BerkeleyDB типа __db.001 и log.001 будут создаваться в rootdir.
- srvdb = base/srv.db
- Имя файла базы данных серверов сканирования.
- md5db = base/md5.db
- Имя файла базы данных идентификаторов MD5 документов сканирования.
- pooldb = base/pool.db
- Имя файла базы данных свободных идентификаторов (ID) объектов сканирования.
- refdb = base/ref.db
- Имя файла базы данных перекрестных ссылок.
- qdb = base/queue.db
- Имя файла, в который будут записаны запросы CA для их дальнейшей обработки программой загрузки. Ротируется при получении сигнала USR1. Сигнал посылается диспетчеру самой программой turtle_loader в тот момент, когда загрузчик видит, что очередь на обработку становится достаточной по размеру (указывается в отдельном параметре).
- excldb = conf/exclude.conf
- Имя файла описания разрешенных для сканирования фильтров.
- mimedb = conf/mime.types
- Имя файла описания известных типов MIME и внешних фильтров для них.
- servicedb = conf/services.conf
- Имя файла разрешенных сервисов для сканирования.
- starturlfile = conf/start.urls
- При первом запуске системы диспетчер не имеет информации об объектах сканирования вообще. В указанном в данном параметре файле содержатся URL ресурсов, которые следует занести в базу данных перед началом работы. Новые URL для сканирования могут также быть добавлены в систему с помощью внешней программы turtle_addurl.
# # turtle dispatcher daemon configuration file # rootdir = /turtle # work home tmpdir = tmp # temporary files directory dispatchername = dispatcher-001.turtle.ru # my hostname progname = turtled # programm name to log # urldb = base/url.db # main URLs base file srvdb = base/srv.db # servers base file md5db = base/md5.db # MD5 documents identifiers base pooldb = base/pool.db # free IDs pool base refdb = base/refs.db # references for pagerank base qdb = base/queue.db # scanners answers queue # excldb = conf/exclude.conf # main exclude scanners config mimedb = conf/mime.types # allowed mime types servicedb = conf/services.allow # valid network services allowdb = conf/hosts.allow # hosts allow to connect starturlfile = conf/start.urls # begin of the scanners pwfile = conf/turtle.passwd # scanners passwd base logfile = logs/turtled.log # where to save logs pidfile = logs/turtled.pid # proccess PID file # version = 1.1 # current version number maintainer = turtle-admin@dispatcher-001.turtle.ru # user = turtle # owner of the started proccess group = turtle # group of the owner autoload = 1 # add URLs from queue or not debuglevel = 80 # how meny debug info to write port = 3320 # dispatcher port maxclients = 512 # max connection at a time timeout = 300 # timeout to check connections readtimeout = 60 # timeout to read from a socket sendtimeout = 60 # timeout to write to a socket connectimeout = 30 # timeout to connect to HTTP server chroot = 0 # do chrot() or not worktime = 0 # how many time to work (0 - unlimited) sendmessage = 0 # send critical alerts to maintainer? # scanuser = dispatcher-001 # username to send archiver scanpass = dispatch001end # and pa
![]() |
![]() |
![]() | |
![]() |
![]() |
![]() |
![]() |
Черепаший Ранк. Реклама на Turtle Логотипы Правовая информация Конфиденциальность Контакты |
![]() |
![]() |
![]() ![]() ![]() |