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

Azure DevOps Server | Azure DevOps Server 2022

В этой статье показано, как установить, настроить и удалить безопасную поисковую систему для Azure DevOps Server, которая работает на собственном оборудовании. Дополнительные сведения см. в следующих статьях:

Необходимые условия

Категория Требования
Разрешения Член группы администраторов коллекции проектов для организации. Пользователи, не являющиеся администраторами, также могут запросить добавление расширения в pcA.
Setup Дополнительные сведения см. в статьях Установка и настройка Azure DevOps Server и Требования и совместимость.

Рекомендации по оборудованию

Поиск работает на любом физическом сервере или виртуальной машине под управлением Azure DevOps Server. Поиск можно настроить на одном сервере или другом сервере. Если вы используете тот же сервер, рассмотрите использование ЦП.

Совет

Настройте поиск на отдельном сервере для рабочих сред.

Для приемлемой производительности в сценариях с несколькими пользователями рассмотрите следующие рекомендации:

  • Менее 250 пользователей с поиском, размещённым на сервере (обычно используется для демонстрации и пробных целей):
    • Четырехядерный процессор, 16 ГБ (минимум) ОЗУ
    • Коэффициент использования ЦП менее 50%
    • Быстрый жесткий диск, поддерживаемый хранилищем SSD
  • Менее 500 пользователей, поисковая система которых расположена на отдельном сервере :
    • Процессор с двумя ядрами, 8 ГБ (минимум) ОЗУ
    • Быстрый жесткий диск, поддерживаемый хранилищем SSD
  • Менее 1000 пользователей используют Поиск, расположенный на отдельном сервере ,:
    • Четырехядерный процессор, 16 ГБ (минимум) ОЗУ
    • Быстрый жесткий диск, поддерживаемый хранилищем SSD
  • Более 1000 пользователей с поиском , расположенным на отдельном сервере:
    • Четырехядерный процессор, 16 ГБ (минимум) ОЗУ
    • Быстрый жесткий диск, поддерживаемый твердотельным диском (SSD) или хранилищем зоны хранения (SAN)
  • Azure DevOps Server с несколькими уровнями приложений (ATS):
    • Установка поиска на отдельном сервере
  • Загрузка ЦП Azure DevOps Server превышает 50% перед установкой поиска:
    • Установка поиска на отдельном сервере

Требования к дисковому пространству:

Объем дискового пространства, используемого поиском, зависит главным образом от типа и размера индексированных файлов. Для поиска кода много раз репозитории могут быть большими и иметь различные файлы кода в элементе управления версиями. Требование места на диске может быть значительным. Выделите до 150% от общего размера всех репозиториев для индексации. Вы можете исключить папки из репозиториев для индексирования, чтобы оптимизировать дисковое пространство, потребляемое поиском.

Зависимости программного обеспечения

Поиск имеет следующие зависимости, которые процесс конфигурации устанавливает автоматически:

Заметка

Заметки по установке Java

  • Если мастер настройки поиска не обнаруживает рабочую установку среды выполнения Java (JRE), он предоставляет возможность скачать и установить последнюю поддерживаемую версию. Для скачивания требуется подключение к Интернету. Если целевой сервер не имеет подключения к Интернету, необходимо скачать и установить JRE вручную, прежде чем пытаться установить поиск.

  • Azure DevOps Server использует Elasticsearch версии 7.17.0, которая содержит пакетную версию OpenJDK.

  • Во время установки мастер задает переменную среды JAVA_HOME, чтобы указать папку установки JRE. Мастер конфигурации может не обнаружить существующую установку JRE, если она не была правильно настроена, или если JAVA_HOME указывает на более раннюю версию, чем требуется для поиска.

    Заметка

    Избегайте установки Elasticsearch на компьютере, где ресурсы совместно используются, особенно в крупной корпоративной среде с несколькими уровнями приложений. Настройте Elasticsearch на отдельном выделенном компьютере, чтобы среда Java не использовалась для других задач.

  • Если существует версия JRE более ранняя, чем минимально необходимая для работы Search, и переменная JAVA_HOME указана на эту версию, установите Search на отдельном сервере.

  • Если существует версия JRE сервера, равной или более поздней , чем минимальная, необходимая для поиска, и мастер конфигурации не распознает ее, убедитесь, что переменная JAVA_HOME не задана. Затем повторно запустите мастер настройки (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager) и выберите версию, задав путь для виртуальной машины Java.

  • Если вы не можете установить версию Java, необходимую для поиска из-за других зависимостей, можно выполнить следующие задачи:

    • Установите Azure DevOps Server с расширением поиска на сервере, на котором не установлен Java. Этот параметр не рекомендуется использовать для более чем 250 пользователей или ресурсов ЦП, превышающих 50% или нескольких AT.
    • Установите Поиск и JRE на отдельном сервере от Azure DevOps Server.

Доступность компонентов

  • Рабочий элемент и поиск по Wiki являются встроенными расширениями, которые по умолчанию устанавливаются процессом конфигурации.
  • Поиск кода — это функция, которую можно включить по желанию. Позже вы можете установить Поиск кода из локальной галереи. Перейдите к местной галерее (http://{server}/_gallery), войдите в систему как администратор. Пользователи, не являющиеся администраторами, также могут запросить расширение для Azure DevOps Server. Дополнительные сведения см. в разделе Установка расширения.

Настройте службу поиска с помощью выделенных страниц в мастере настройки сервера при установке Azure DevOps Server. Кроме того, можно отменить настройку поиска , выполнив мастер настройки сервера или запустив мастер настройки поиска.

Рекомендации по настройке

При настройке поиска учитывайте следующие сведения:

  • Рабочий элемент и поиск вики-сайта включены по умолчанию при настройке поиска. При необходимости эти расширения можно удалить на странице "Управление расширениями " azure DevOps Server.
  • Необходимо установить расширение поиска кода для каждой коллекции Azure DevOps Server, в которой вы хотите его использовать. При первоначальной настройке поиска вы можете установить флажок Автоматически устанавливать расширение Code Search для существующих и новых коллекций проектов, чтобы автоматизировать этот процесс.
  • Если вы не установите флажок для установки расширения Code Search для всех ваших коллекций проектов, ваш PCA может установить его из локальной галереи. Убедитесь, что вы перейдете в Локальную Галерею (http://{Server}/_gallery) на портале Azure DevOps Server. Дополнительные сведения см. в разделе Установка расширения.
  • Обычно для индексирования коллекции требуется менее одного часа. Но это может занять до 12 часов на основе размера и количества файлов кода, рабочих элементов или вики-страниц. Если вы не получаете результатов по истечении этого периода, проверьте состояние индексирования.

Использование второго жесткого диска и удаленного сервера

  • Для максимальной производительности папка индекса поиска должна находиться на отдельном жестком диске и поддерживается быстрым хранилищем, например твердотельным диском (SSD) или сетью хранения (SAN). выделить до 150% от размера всех репозиториев, подлежащих индексированию, в самом худшем случае. Фактическое потребляемое пространство зависит от объема и типа файлов кода, а также количества рабочих элементов и вики-страниц в этой коллекции.
    • Если не указано, служба индексирования и подсистема Elasticsearch используют учетную запись сетевой службы во время установки для создания и доступа к файлам индекса. Если вы выбрали другую учетную запись, она должна иметь разрешение на вход в систему в качестве службы.
    • Ограничьте разрешения для диска индекса и папки, чтобы защитить индекс от случайного или вредоносного изменения или удаления. Настройте соответствующие параметры безопасности для службы.
  • При настройке поиска для сервера с несколькими AT-ами установите его на отдельный сервер. После установки поиска на удаленном сервере используйте мастер настройки на любом из серверов AT, чтобы связать удаленный экземпляр поиска с экземпляром Azure DevOps Server. При ненастройке поиска необходимо использовать мастер настройки на том же сервере AT, где изначально была выполнена конфигурация.

Обновление сервера

  • Если вы выполняете предварительное обновление на сервере, где поиск уже настроен, необходимо полностью перенастроить поиск, чтобы избежать повреждения рабочего экземпляра. Нет возможности настроить поиск в рамках предварительного обновления. Вместо этого настройте его после завершения предварительного обновления. Вы можете снять флажок Автоматически устанавливать и конфигурировать Поиск Кода для всех существующих и новых коллекций во время настройки. Вместо этого установите расширение поиска только для одной или двух коллекций после завершения настройки.
  • Если вы выполняете обновление рабочей среды на сервере, где настроен поиск, и вы хотите сохранить его, установите флажок рядом с Установить и настроить поиск. Мастер обнаруживает существующий экземпляр поиска и автоматически выбирает использовать существующий экземпляр поиска и предварительно заполняет текущий URL-адрес службы поиска. Используйте параметр Установить новый экземпляр поиска только в том случае, если вы хотите настроить новый экземпляр поиска на том же сервере. При настройке нового экземпляра весь ваш код, рабочие элементы и вики индексируются снова, что (в зависимости от размера коллекций) может занять некоторое время. Во время индексирования пользователи могут видеть частичные результаты поиска.
  • Если вы обновляете сервер на новое оборудование, у вас есть следующие два варианта. Выберите из этих параметров в зависимости от того, как ранее был настроен поиск:
    • Если поиск находится на отдельном сервере azure DevOps Server, необходимо выбрать команду "Установить и настроить поиск " в мастере настройки сервера, а затем выбрать существующий экземпляр поиска и указать URL-адрес существующего экземпляра поиска, чтобы завершить настройку поиска.
    • Если поиск настроен вместе с экземпляром Azure DevOps Server на старом сервере, необходимо выбрать Установить и настроить поиск в мастере настройки сервера. Затем выберите Установите новый экземпляр поиска еще раз на новом сервере, если вы хотите продолжить совместное размещение поиска и сервера Azure DevOps. Все индексы поиска для всех коллекций создаются повторно, в зависимости от размера каждой коллекции, может занять некоторое время.
  • Если вы отсоединяете коллекцию от одного экземпляра Azure DevOps Server, чтобы подключить его к другому экземпляру, выполните следующие действия.
    1. Отсоедините коллекцию от исходного экземпляра Azure DevOps Server.
    2. Настройте поиск в целевом экземпляре Сервера Azure DevOps (если еще не выполнено).
    3. Подключите коллекцию к целевому серверу Azure DevOps Server.
    4. Удалите расширения поиска, такие как Code, Work item или Wiki, для коллекции из локальной галереи в Azure DevOps Server.
    5. Установите расширение поиска для коллекции из локальной галереи, просмотрев её из целевого экземпляра Azure DevOps Server.

Установка или обновление поиска на отдельном сервере

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

  1. При установке Azure DevOps Server на основном сервере установите флажок Установить и настроить Поиск. На странице Поиск мастера настройки сервера.
  2. Выберите опцию Использовать существующую службу поиска.
  3. Используйте ссылку на пакет службы Поиска, указанную в мастере, для доступа к набору файлов установщика поиска на локальном компьютере. Затем скопируйте эти файлы на удаленный сервер.
  4. Следуйте инструкциям в файле Readme.txt, расположенном в наборе файлов установщика, чтобы установить или обновить службу поиска на удаленном сервере.
  5. После завершения установки скопируйте URL-адрес полученного сервера поиска в поле URL-адрес поиска мастера конфигурации, запускаемого на экземпляре сервера Azure DevOps.
  6. По завершении обеих установок настройте соответствующие параметры безопасности для обоих серверов.

Служба поиска использует измененную версию Elasticsearch. Для остальной части этого раздела термины "Поиск" и "Elasticsearch" используются взаимозаменяемо. Администраторы должны предоставить учетные данные о том, находится ли служба поиска на том же компьютере, что и Сервер Azure DevOps Server, или на отдельном компьютере. Это действие является частью настройки функции поиска с помощью сервера или мастера настройки поиска. Эти учетные данные являются новыми и не связаны с предварительной учетной записью или учетными данными сервера. Используйте эти учетные данные для настройки и подключения к службе поиска. Эти новые наборы учетных данных обеспечивают базовую проверку подлинности в службе поиска.

Снимок экрана: учетные данные поиска.

Если служба поиска находится на том же компьютере, что и Azure DevOps Server, администраторы могут предоставить новый набор учетных данных в мастере конфигурации, чтобы настроить службу поиска при необходимости. Однако если служба поиска находится на удаленном компьютере, администраторы должны сначала предоставить новые учетные данные скрипту установки службы поиска.

Заметка

  • Значения учетных данных должны находиться в диапазоне от 8 до 64 символов.
  • Учетные данные поиска проходят проверку подлинности только пользователей и гарантируют, что пользователи, не прошедшие проверку подлинности, не могут получить доступ к конечной точке Elasticsearch. Однако Elasticsearch не поддерживает ПРОТОКОЛ HTTPS и поэтому эти учетные данные отправляются по сети в виде строк в кодировке Base64. Если есть возможность промежуточного доступа к запросу, настройте соответствующие параметры безопасности на основе требований корпоративной безопасности и соответствия требованиям.
  • Цель ограничить доступ к поиску и индексации определенным пользователям или группам пользователей с помощью шифрования через IPSec, как описано ниже.

Рассмотрим следующие методы использования IPSec для защиты Elasticsearch на сервере Windows:

  • Настройка безопасности только с аутентификацией:

    • Гарантирует, что только авторизованные пользователи могут получить доступ к порту Elasticsearch. Для этого требуются только правила на стороне службы (правила брандмауэра только на сервере, на котором запущен Elasticsearch)
    • Предварительные требования. Сервер Azure DevOps должен быть настроен с учетной записью домена
    • Выполните действия, описанные в статье Создание правил брандмауэра, которые позволяют сетевой трафик, защищенный IPsec.
  • настройка безопасности с помощью проверки подлинности, защиты целостности и шифрования:

    • Обеспечивает применение шифрования и защиты целостности вместе с проверкой подлинности. Для этого требуются как клиентские, так и служебные правила (правила брандмауэра на сервере, на котором выполняется Elasticsearch, и все серверы уровня приложений Azure DevOps Server)
    • Предварительные требования. Сервер Azure DevOps должен быть настроен с учетной записью домена
    • Выполните действия, описанные в для изоляции сервера, требуя шифрования и членства в группе

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

Могут возникнуть случаи, когда вы больше не хотите использовать поиск или хотите выполнить новую и чистую установку. Для этой операции требуется несколько шагов в зависимости от того, настроен ли поиск на одном сервере с Azure DevOps Server или на отдельном сервере .

Ненастройка поиска на компьютере, настроенном в качестве сервера Azure DevOps

  1. Удалите расширение поиска для каждой коллекции. Перейдите на страницу управления расширениями каждой коллекции в экземпляре Azure DevOps Server:

    Снимок экрана: проверка установки расширения.

  2. Удалите функцию поиска:

    1. Откройте консоль администрирования сервера Azure DevOps.
    2. Выберите имя сервера.
    3. Выберите Удалить функцию.
    4. Выберите службу поиска, а затем выберите Удалить.
  3. Удалите службу Elasticsearch:

    1. Откройте командную строку от имени администратора.
    2. Измените каталог, cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-5.4.1\bin".
    3. Удалите службу, "elasticsearch-service.bat remove".
  4. Удаление данных поиска:

    • Удалите содержимое местоположения, указанного переменной среды, SEARCH_ES_INDEX_PATH.
  5. Удалите переменную среды, "SEARCH_ES_INDEX_PATH".

Ненастройка поиска на отдельном сервере

Выполните следующие действия, чтобы отменить настройку поиска, например для кода, рабочего элемента или вики-сайта для каждой коллекции.

  1. Перейдите на страницу управления расширениями для каждой коллекции в экземпляре Azure DevOps Server.

    Снимок экрана: проверка установки расширения.

  2. Удалите функцию поиска:

    1. В консоли администрирования откройте диалоговое окно "Удаление функции".
    2. В левой области выберите имя Сервера Azure DevOps.
    3. В правой области выберите Удалить функцию.
    4. В диалоговом окне "Удалить функцию" выберите службу поиска, а затем нажмите Удалить.
  3. Удалите службу Elasticsearch и данные.

    1. Откройте PowerShell от имени администратора.
    2. Откройте папку Настройка Search.ps1 вместе с остальными файлами, необходимыми для удаленной установки поиска.
    3. Снова запустите скрипт с параметром удаления: "ConfigureTFSSearch.ps1 -remove".

Поиск Azure DevOps Server имеет следующие ограничения:

  • Если вы выполняете операцию аварийного восстановления и возвращаете сервер к более раннему моментальному снимку базы данных SQL, необходимо переиндексировать все ваши коллекции.
  • Поиск не является расширяемым, но вы можете отправить новый запрос на добавление функции в сообществе разработчиков .