Turtle

 
 
 
   РАСШИРЕННЫЙ ПОИСК
   ПОИСК ПО ФРАГМЕНТУ
   ПОМОЩЬ
   ПРОСТАЯ ФОРМА
 
 СИНОНИМЫ   ВСЕ ФОРМЫ СЛОВ
 Добавить   Архитектура   Запросы сейчас   Цифры и факты   FAQ   Кнопка поиска   Сделать стартовой 

Архивный Сервер Archive Server -- archiverd vs/1.0

Статус этого документа.

Этот документ описывает принципы работы, процедуру установки и настройки Сервера Архивов Archive Server AS поисковой системы системы Turtle. Документ предназначен для служебного использования. Документ подразумевает предварительное знакомство с протоколом обмена компонент поисковой системы Search System Transfer Protocol и должен рассматриваться в совокупности с ним.

Copyright Notice

Copyright © Stack Technologies Ltd. (2001). All Rights Reserved.

Содержание.

1. Назначение.
2. Принципы работы.
3. Установка.
4. Настройка и запуск.
5. Список параметров конфигурации.
6. Пример конфигурационного файла.

1. Назначение.

Основным назначением Сервера Архивов Archive Server (AS) является прием и сохранение данных об объектах сканирования, полученных от Агентов Накопления Crawler Agents (CA)i посредством SSTP протокола. Данные, полученные от CA, в дальнейшем используются программой выдачи информации об объектах viewerd (VS) и программой определения степени "похожести" документов Similarity Server smld (SS).

2. Принципы работы.

Сервер реализован как демон, "слушающий" TCP порт и принимающий соответствующие SSTP запросы. Программа AS устанавливается физически на том же компьютере, что и VS. При этом, сферой ответственности AS является сохранение полученных данных от сканирования (включая ретроспективное сохранение самих документов) как в базе данных, для быстрого извлечения по ключу - идентификатору документа (ID), так и в виде компрессированного содержания самих документов. Сферой ответственности VS является отображение этих накопленных данных по запросу клиента (QP).

Данные на сервере хранятся в 2-х видах:

База данных построена на основе пакета BerkeleyDB vs/3.3.11. Тип базы данных - BTREE с использованием возможности дупликации ключей DB_DUP (см. описание BerkeleyDB). Записи хранятся сортированными по возрастанию ID (беззнаковое 32-х разрядное число). Нескольким документам, расположенным на разных внешних HTTP серверах может соответствовать один и тот же ID тогда и только тогда, когда их содержание абсолютно идентично. Строение записи базы данных имеет следующий вид:

Key:

ID
уникальный идентификатор документа (u_int32_t).

Data:

Srv_ID
уникальный идентификатор сервера (u_int32_t).

Doc_Len
длина оригинального документа в байтах (u_int32_t).

Doc_Status
комплексное беззнаковое 32-х разрядное число, характеризующее протокол получения документа (http, ftp и пр.) - биты 0-3, кодировку документа согласно конфигурационной таблице - биты 4-7, язык документа согласно конфигурационной таблице - биты 8-15, номер сканера, от которого получен документ, может характеризовать тему документа согласно конфигурационной таблице - биты 16-31.

Doc_Flags
номер последнего сканирования или иными словами, сколько раз сканировался документ. Если это поле содержит значение 0xffffffff, то считается, что документ логически удален из системы. Очевидно, что на этапе последнего сканирования, сервер не обнаружил этого документа. В базе данных AS сами документы не удаляются никогда.

Bps
последняя зарегистрированная скорость отклика внешнего сервера при запросе данного документа в байтах в секунду (u_int32_t).

Time
дата и время создания документа в секундах. Если внешний сервер не сообщил этой информации, то датой полагается дата сканирования документа (time_t).

Check_time
дата и время последнего сканирования документа (time_t).

Url
каноническое имя URL ресурса, отделяется от последующих текстовых полей символом '|'.

Title
заголовок документа из HTML тэга <TITLE> если он присутствует. Отделяется от последующей части символом '|'/

Essence
первые 512 (или сколько указано в конфигурации) байт документа. Отделены от последующего поля символом '|'/

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

Сами документы хранятся в компрессированном виде в файловой системе вида: /spool_home/mln_num/thousand_num/id_num.trt - непосредственно сам документ и /spool_home/mln_num/thousand_num/id_num.dsc - описание параметров, которые помещаются в базу данных (см. выше). Таким образом, полный путь к файлу содержит информацию об уникальном идентификаторе документа ID. Файловая система организована на массиве RAID-5, что обеспечивает высокую надежность и восстанавливаемость данных при авариях, имея при этом приемлемую скорость чтения (40MB/sec) данных. Таким образом, при повреждении целостности файла индекса базы данных по данным файлов можно всегда восстановить утерянный индекс.

Просмотр текстов сохраненных документов можно осуществлять с помощью программы turtle_cat, поставляемой в составе дистрибутива в директории src/archiver.

Кроме того, AS сохраняет версии каждого сканированного объекта в виде пары файлов: id_num.dsc.DDMMYYYY и id_num.trt.DDMMYYYY. Эти файлы могут быть использованы внешними программами для отображения ретроспективы ресурса. Подразумевается, что в целях экономии дискового пространства на компьютере сервера будет запускаться какая-то программа, определяющая, какие из версий ретроспективных файлов следует удалить вследствие незначительного изменения от оригинала. Механизм создания ретроспективных файлов описывается схематично следующей последовательностью действий для документа с номером ID:

Т.к. используется файловый линк, то при удалении файла (шаг1) всегда копия в виде file.DDMMYY остается на диске.

Каждому объекту id.trt соответствует файл id.dsc, содержащего в неизменном виде заголовки описания объекта (фрагмент SSTP сообщения) так, как их принял AS от CA. Имея в наличии сами файлы документов и соответствующие описатели объектов можно в любой момент восстановить любую утерянную компоненту (или индекс) поисковой системы. Для этих целей написана программа turtle_recover, входящая в состав дистрибутива и находящаяся в директории src/dispatcher.

В настоящий момент AS обслуживает 3 типа SSTP запросов:

  1. REQ_PUT_URLFOLLOW
  2. REQ_PUT_NOT_FOUND
  3. REQ_PUT_NOT_ACCEPTABLE

Первый запрос вызывает проверку корректности принятых компрессированных данных и их сохранение в соответствующие файлы архивов и базу данных идентификаторов документов.

Второй тип запроса вызывает логическое удаление объекта из системы. Обычно реально объекты из системы не удаляются никогда. Для логически удаленного объекта в служебном поле flags ставится значение 0xffffffff, являющееся признаком того, что объект логически удален из базы. Такое логическое удаление по логике поисковой системы происходит в момент, когда внешний HTTP сервер при запросе системы сообщает, что более не имеет данного документа на своей стороне. Система turtle однако позволит визуализовать такой удаленный документ, используя локальную копию. При получении подобного запроса AS переименовывает соответствующие файды id.dsc и id.trt в id.dsc.del и id.trt.del соответственно. В базе данных ID документов (id.db) сервер ставит поле flags в указанное значение 0xffffffff.

Третий тип запроса служит для идентификации того, что документ должен быть физически удален с диска. При этом ретроспективные файлы id.trt.DDMMYYYY и id.dsc.DDMMYYYY остаются без изменения (удаляются только id.trt и id.dsc). В настоящий момент не используется.

Данные об объекте принимаются AS в виде совокупности параметров

HEADER_URI_ID
HEADER_SERVER_ID
HEADER_SERVER_PROTOCOL
HEADER_SERVER_NAME
HEADER_SERVER_PORT
HEADER_SERVER_BPS
HEADER_URI
HEADER_URI_TIME
HEADER_ URL_CHECKTIME
HEADER_URI_LEN
HEADER_URI_FLAGS
HEADER_URI_STATUS
HEADER_CHARSET
HEADER_BASELANG
HEADER_LANGUAGES
HEADER_TITLE
HEADER_ESSENCE

Авторизация источника информации производится на основании содержания полей:

HEADER_USER
HEADER_PASSWORD

И их сравнения с эталонной базой данных зарегистрированных CA в системе.

В настоящий момент AS реализован так, что сами объекты могут быть сохранены как в компрессированном виде, так и в обычном. По умолчанию компрессия включена.

3. Установка.

Исходные тексты сервера находятся в дистрибутиве системы и собираются вместе с другими компонентами в работающую программу путем выполнения команды make в корне исходных текстов дистрибутивов. Для сборки отдельно только сервера AS необходимо сначала собрать библиотеку libturtle.a, а затем сам сервер с помощью команд:

cd /where_is_dist_home/src/lib
make
cd ../archiver
make archiverd

4. Настройка и запуск.

Сервер запускается посредством команд:

cd /archiver_home_dir
/where_is_archiver_prog/archiverd

Эту последовательность можно включить в файл начальной загрузки компьютера (например, /etc/rc.local), чтобы при перезагрузке компьютера сервер автоматически запускался на данной машине. Программа может быть запущена с ключом:

-c other_config_file

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

Правила оформления конфигурационного файла следующие:

Программа воспринимает следующие внешние сигналы:

SIGHUP
производится ротация logfile и перезачитывается конфигурация. Полезно при изменении конфигурации сервера на лету.

SIGTERM
выполнение программы немедленно прекращается.

SIGUSR1
сервер пытается отработать все полученные запросы и останавливает свою работу.

SIGTERM
сервер немедленно прекращает свою работу.

SIGUSR2
сервер рождает новый процесс призванный занести новые данные в базу данных similarity. Передацу этого сигнала следует осуществлять периодически (например посредством вызова из crontab) для обновления базы данных similarity.

Кроме того, при получении сигналов ошибки программы SIGBUS, SIGILL, SIGSEGV, SIGQUIT программа оставляет в домашней директории core файл и шлет сообщение администратору системы об ошибке в программе по SMTP на адрес, указанный в конфигурации. Посылка таких сообщений может быть запрещена в отладочных целях с помощью конфигурационного параметра sendmessages=0 (см. ниже).

5. Список параметров конфигурации.

Ниже приведен список используемых конфигурационных параметров сервера AS и краткое их описание:

rootdir = /some/directory
Корневая директория сервера AS, относительно которой могут быть определены все остальные директории или имена файлов. Если имя файла начинается с символа '/', то считается, что в конфигурации указывается абсолютный путь к файлу, иначе считается, что имя файла будет определено относительно rootdir. Значение по умолчанию: /usr/local/turtle

spooldir = /spool
Директория, являющаяся началом дерева хранения самих документов, как это описано в принципах работы.

dispatchername = dispatcher-001.turtle.ru
Каноническое Интернет имя или IP адрес сервера Dispatcher Server (DS), необходимо для зачитывания общих для поисковой системы конфигурационных параметров (например, списка разрешенных для соединения машин и пр.) Если общие конфигурационные параметры по каким-либо причинам не могут быть получены от DS (например, он просто не запущен), то будет произведена попытка зачитать их из локальных файлов конфигурации, определенных ниже. Значение по умолчанию: dispatcher-001.turtle.ru

port = 3320
Номер порта, по которому может быть произведено соединение с центральным диспетчером. Значение по умолчанию: 3320.

archname = archiver-001.turtle.ru
Каноническое имя или IP адрес сервера, на котором запускается данная программа. Если компьютер имеет несколько имен и/или адресов, то принимать запросы он будет только при обращении к указанному в этом поле имени. Значение по умолчанию: archiver-001.turtle.ru.

archport = 3321
Номер порта, по которому данный сервер будет принимать SSTP запросы, и посылать ответы на них. Необходимо конфигурировать так это значение, чтобы оно не вступало в конфликт с другими компонентами поисковой системы или иными серверными программами, запущенными в пределах данного компьютера. Значение по умолчанию: 3321.

progname = archiverd
Префикс для занесения учетных записей в журнал работы программы (logfile). Если различными компонентами системы используется общий журнал, то данный префикс позволит отличить записи данного сервера от других. Программное обеспечение также может быть откомпилировано с ключом компиляции -DUSE_SYSLOG. При этом записи будут производиться как в указанный logfile, так и используя syslog. При сборке пакета с ключом компиляции -DLOG_DAYTIME в журнал работы вместе с каждой записью будет занесено текущее время. По умолчанию, данная функция отключена. Значение по умолчанию: берется из имени запускаемой программы argv[0].

logfile = logs/archiver.log
Имя файла журнала работы программы. Значение по умолчанию: logs/turtled.log

pidfile = logs/archiver.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 с различными ключами. В настоящий момент базовая SSTP идентификация в рамках взаимодействия QP и VS не производится, и данные этого файла используются только для идентификации при запросе статистики сервера по HTTP. Подразумевается, что VS находится за брандмауэром локальной сети и доступ к нему может быть осуществлен только QP по локальной сети. Содержание файла используется сервером, в случае если данные идентификации не могут быть получены от центрального диспетчера DS. Значение по умолчанию: conf/turtle.passwd.

iddb = base/id.db
Имя базы данных BerkeleyDB, содержащей объекты документов, как это описано в принципах работы AS.

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
Таймауты системы для приема запросов и пересылки ответов от VS к QP. Если по истечению указанного периода в секундах запрос не удалось принять или ответ не удалось послать, то данное соединение закрывается.

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.

сompressdata = 1
Параметр указывает на тип хранения самих документов. 1- в компрессированном виде, 0- нет.

smlname = similarity-001.turtle.ru
Каноническое имя или IP адрес сервера, на котором запускается данная программа. Если компьютер имеет несколько имен и/или адресов, то принимать запросы он будет только при обращении к указанному в этом поле имени. Значение по умолчанию: similarity-001.turtle.ru.

smlport = 3324
Номер порта, по которому данный сервер будет принимать SSTP запросы, и посылать ответы на них. Необходимо конфигурировать так это значение, чтобы оно не вступало в конфликт с другими компонентами поисковой системы или иными серверными программами, запущенными в пределах данного компьютера. Значение по умолчанию: 3324.

smldir = /home/turtle/base/sml
Директория, в которой библиотека хранит вспомогательные файлы и файл базы данных fingerprints. Согласно документации libsml.a имя директории должно являться полным путем.

6. Пример конфигурационного файла.

#
# turtle archiver daemon configuration file
#
rootdir         =       /home/turtle
tmpdir          =       tmp
spooldir        =       /spool
dispatchername  =       dispatcher-001.turtle.ru
archname        =       archiver-001.turtle.ru
progname        =       archived
logfile         =       logs/archiver.log
pidfile         =       logs/archiver.pid
pwfile          =       conf/turtle.passwd
iddb            =       base/id.db
smldir          =       /home/turtle/base/sml
#
user            =       turtle
group           =       turtle
scanuser        =       archiver-001
scanpass        =       archiv001end
compressdata    =       1
port            =       3320
archport        =       3321
debuglevel      =       70
maxclients      =       16000
timeout         =       60
readtimeout     =       60
sendtimeout     =       60
connectimeout   =       20
chroot          =       0
worktime        =       0
compressdata    =       1
Наверх Назад Turtle
 Черепаший Ранк.   Реклама на Turtle   Логотипы   Правовая информация   Конфиденциальность   Контакты 
    ©ЗАО "Группа компаний Стек". 2003-2007