Общие сведения о параметре ImageStoreConnectionString

В некоторой документации мы упоминаем о существовании параметра ImageStoreConnectionString, не описывая его значение. И после прочтения такой статьи, как Развертывание и удаление приложений с помощью PowerShell, создается обманчивое впечатление, что все, что нужно сделать, — скопировать и вставить значение, отображающееся в манифесте целевого кластера. Этот параметр должен настраиваться для каждого кластера, но при создании кластера с помощью портала Azure вы не можете его настроить, и он всегда имеет значение fabric:ImageStore. Для чего тогда нужен этот параметр?

Манифест кластера

Изначально решение Service Fabric было разработано как платформа для внутреннего использования множеством различных групп, работающих в корпорации Майкрософт, поэтому некоторые ее аспекты имеют широкие возможности настройки. Одним из них является хранилище образов. По сути хранилище образов — это подключаемый репозиторий для хранения пакетов приложений. При развертывании приложения на узле в кластере этот узел скачивает содержимое пакета приложения из хранилища образов. ImageStoreConnectionString — это параметр, который содержит все необходимые сведения для клиентов и узлов, позволяющие найти правильное хранилище образов для заданного кластера.

В настоящее время существуют поставщики хранилища образов трех типов. Ниже приведены их строки подключения.

  1. Служба хранилища образов: fabric:ImageStore

  2. Файловая система: file:[путь_к_файловой_системе]

  3. Служба хранилища Azure: "xstore:DefaultEndpointsProtocol=https;AccountName=[...];AccountKey=[...];Container=[...]"

В рабочей среде используется поставщик службы хранилища образов. Это сохраненная системная служба с отслеживанием состояния, которую можно просмотреть в Service Fabric Explorer.

Служба хранилища образов

Размещение хранилища образов в системной службе внутри кластера избавляет от внешних зависимостей для репозитория пакетов и усиливает контроль над расположением хранилища. Будущие усовершенствования хранилища образов, скорее всего, в первую очередь затронут поставщик хранилища образов (возможно, и только его). Строка подключения для поставщика службы хранилища образов не содержит все уникальные сведения, так как клиент уже подключен к целевому кластеру. Клиент только должен знать, что следует использовать протоколы, нацеленные на системную службу.

Поставщик файловой системы используется вместо службы хранилища образов для локализированных кластеров, размещенных на локальных компьютерах, в период разработки, чтобы немного ускорить их начальную загрузку. Разница обычно невелика, но это полезная оптимизация для большинства разработчиков. Это позволяет также развернуть локализированный кластер на локальном компьютере, используя поставщики хранилища других типов, но обычно для этого нет причин, так как рабочий процесс разработки и тестирования не зависит от поставщика. Поставщик "служба хранилища Azure" существует только для поддержки старых кластеров, развернутых до появления поставщика "служба Secure Store".

Кроме того, ни поставщик "файловая система", ни поставщик "служба хранилища Azure" нельзя применять для совместного использования несколькими кластерами хранилища образов. Это приведет к повреждению данных конфигурации кластера, так как каждый кластер может записывать конфликтующие данные в хранилище образов. Для совместного использования подготовленных пакетов приложения несколькими кластерами используйте файлы sfpkg, которые можно отправить в любое внешнее хранилище с помощью URI загрузки.

Поэтому несмотря на возможность настройки параметра ImageStoreConnectionString, обычно используется значение по умолчанию. При публикации в Azure с помощью Visual Studio этот параметр автоматически настраивается соответствующим образом. При программном развертывании в кластеры, размещенные в Azure, всегда используется строка подключения fabric:ImageStore. Но если вы сомневаетесь, ее значение всегда можно проверить, получив манифест кластера с помощью PowerShell, .NET или REST. Локальные тестовый кластер и рабочий кластер всегда должны использовать поставщик службы хранилища образов.

Дальнейшие действия

Развертывание и удаление приложений с помощью PowerShell