Поделиться через


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

Azure DevOps Server 2022 — Azure DevOps Server 2019

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

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

разрешения : член группы администраторов коллекции проектов для организации. Пользователи, не являющиеся администраторами, также могут запросить добавление расширения в pcA. Дополнительные сведения см. в статьях Установка и настройка 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% от общего размера всех репозиториев для индексации. В TFS 2018 с обновлением 3 и более поздних версий пользователи могут исключить папки из репозиториев для индексирования для оптимизации места на диске, потребляемого поиском.

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

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

  • Elasticsearch от Elastic.
    • Поиск использует измененную версию Elasticsearch. Он работает только с этой измененной версией.
    • Новая версия Elasticsearch поставляется с TFS 2018, начиная с обновления 2, и с Azure DevOps Server. Все содержимое переиндексируется после установки при обновлении с более старой версии результатов поиска. В зависимости от объема содержимого (файлы кода, рабочие элементы и вики-страницы) переиндексирование может занять некоторое время.
  • клиент Elasticsearch NEST.
  • Microsoft Build openJDK версии 11.
    • Microsoft Build of OpenJDK не устанавливает обновления автоматически.
  • Markdowndeep от Topten Software.
  • платформа компилятора Roslyn.
  • синтаксический анализатор для распознавания языков ANTLR.

Заметка

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

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

  • Версии поиска до Azure DevOps Server использовали Java Runtime Environment Oracle Server. 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.

    Заметка

    Если вы используете Oracle Server JRE 8, который был по умолчанию для поиска в TFS (Azure DevOps Server не использует Oracle Server JRE 8), обратите внимание на следующие сведения:

    • Поиск не использует или не поддерживает какие-либо коммерческие функции сервера JRE 8. Поэтому во время настройки поиска коммерческие функции JRE сервера не активируются и не разблокируются.
    • Если вы решили продолжить работу с Oracle JRE, обратитесь к Oracle за подпиской Java SE, чтобы вы могли продолжать получать обновления JRE.

Миграция на Microsoft Build of OpenJDK с Oracle Server JRE

Поиск в Azure DevOps Server поддерживает как Microsoft Build of OpenJDK, так и Oracle JRE, что позволяет выбирать между ними в зависимости от ваших потребностей.

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

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

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

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

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

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

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

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

  • Для максимальной производительности папка индекса поиска должна находиться на отдельном жестком диске и поддерживается быстрым хранилищем, например твердотельным диском (SSD) или сетью хранения (SAN). выделить до 150% от размера всех репозиториев, подлежащих индексированию, в самом худшем случае. Фактическое потребляемое пространство зависит от объема и типа файлов кода, а также количества рабочих элементов и вики-страниц в этой коллекции.
    • Если не указано, служба индексирования и подсистема Elasticsearch используют учетную запись сетевой службы во время установки для создания и доступа к файлам индекса. Если вы выбрали другую учетную запись, она должна иметь войти в систему в качестве службы разрешения.
    • Ограничьте разрешения для диска индекса и папки, чтобы защитить индекс от случайного или вредоносного изменения или удаления. Настройте соответствующие параметры безопасности для службы.
  • При настройке поисковой функции для сервера с несколькимиATs, установите на сервер отдельно. После установки поиска на удаленном сервере используйте мастер настройки на любом из серверов 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
    4. Удалите расширения поиска, такие как Code, Work item или Wiki для коллекции из локальной галереи на сервере Azure DevOps.
    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, или на отдельном компьютере. Это действие является частью настройки функции поиска с помощью сервера или мастера настройки поиска. Эти учетные данные являются новыми и не связаны с предварительной учетной записью или учетными данными сервера. Они используются для настройки и подключения к службе поиска. Эти новые наборы учетных данных обеспечивают базовую проверку подлинности в службе поиска.

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

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

Заметка

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

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

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

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

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

    • Если служба поиска была настроена во время обновления RTM 2018 года и была предварительно настроена в системе TFS, ее компоненты обновляются автоматически.
    • Если поиск был настроен на удалённом сервере, ознакомьтесь с инструкциями по установке или обновлению поиска на отдельном сервере для его обновления.

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

  • TFS 2018 Update 1.1 и TFS 2018 Update 3: включает базовую проверку подлинности для связи между TFS и службой поиска, чтобы сделать её более безопасной. Любые установки или обновления до TFS 2018 с обновлением 1.1 или TFS 2018 с обновлением 3 должны предоставлять учетные данные в рамках настройки функции поиска с помощью сервера или мастера настройки поиска.

  • TFS 2018 с обновлением 2 (или более поздней) версии Azure DevOps Server 2019 с обновлением 1: при настройке поиска на отдельном сервере требуется повторная установка поиска. Следуя инструкциям по обновлению, на этапе 4 вместо выполнения обновления Configure-TFSSearch.ps1 – Operation updateвыполните следующую команду, чтобы переустановить поиск.

Configure-TFSSearch.ps1 -Operation remove
Configure-TFSSearch.ps1 -Operation install -TFSSearchInstallPath <install location> -TFSSearchIndexPath $env:SEARCH_ES_INDEX_PATH

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

Могут возникнуть случаи, когда вы больше не хотите использовать поиск или хотите выполнить новую и чистую установку. Для этой операции требуется несколько шагов в зависимости от того, настроен ли поиск на одном сервере с 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 имеет следующее ограничение:

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