Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Прежде чем продолжить работу с этой статьей, рекомендуется ознакомиться с моделью приложения Service Fabric и моделью размещения Service Fabric. В этой статье приведены общие сведения о том, как определить проверку работоспособности и готовности с помощью файлов манифеста.
Проверка готовности
Начиная с версии 7.1, Azure Service Fabric поддерживает механизм проб активности для контейнерных и не-контейнерных приложений. Проба активности помогает проверять активность пакета кода и перезапускать его, если он не может быстро ответить.
Проба готовности
Начиная с версии 8.2 поддерживается также проба готовности. Проба готовности используется для проверки готовности пакета кода к приему трафика. Например, если контейнер занимает много времени для обработки запроса или если очередь запроса заполнена, пакет кода больше не может принимать трафик, поэтому конечные точки для доступа к пакету кода будут удалены.
Особенности работы пробы готовности заключаются в следующем.
- Запускается экземпляр контейнера или пакета кода.
- Немедленно публикуются конечные точки.
- Запускается работа пробы готовности.
- Рано или поздно проба готовности достигает порога сбоя и удаляет конечную точку, сочтя ее недоступной.
- Через некоторое время экземпляр будет готов.
- Зонд готовности замечает, что экземпляр готов, и снова публикует конечную точку.
- Запросы снова корректно маршрутизируются и успешно выполняются, поскольку система теперь готова их обрабатывать.
Примечание.
Для пробы готовности пакет кода не перезапускается — просто конечные точки не публикуются, в результате на набор реплики/раздел это не влияет.
семантика
Вы можете указать только одну пробу активности и одну пробу готовности на пакет кода и управлять их поведением с помощью следующих полей.
type. Используется для указания типа пробы: Liveness (активность) или Readiness (Готовность). Поддерживаемые значения: Liveness илиReadiness.initialDelaySeconds: начальная задержка в секундах, с которой начинается выполнение пробы после запуска контейнера. Поддерживаемое значение — int. Значение по умолчанию равно 0, а минимальное значение — 0.timeoutSeconds: период в секундах, по истечении которого проба считается неудачной, если не была успешно завершена. Поддерживаемое значение — int. Значение по умолчанию равно 1, а минимальное значение — 1.periodSeconds: период в секундах, указывающий частоту пробы. Поддерживаемое значение — int. Значение по умолчанию равно 10, а минимальное значение — 1.failureThreshold: при достижении этого значения контейнер будет перезапущен. Поддерживаемое значение — int. Значение по умолчанию равно 3, а минимальное значение — 1.successThreshold: в случае сбоя, чтобы проба считалась успешной, она должна успешно выполняться для этого значения. Поддерживаемое значение — int. Значение по умолчанию равно 1, а минимальное значение — 1.
В любой момент времени на один контейнер может быть не больше одной пробы. Если проба не закончится в течение времени, заданного в timeoutSeconds, подождите и подсчитайте время до failureThreshold.
Кроме того, Service Fabric будет создавать следующие отчеты о состоянии в DeployedServicePackage.
OK: Проверка успешно проходит для значения, заданного в successThreshold.Error: Счетчик failureCount == должен достичь порога failureThreshold перед перезапуском контейнера.Warning:- Проба терпит неудачу, если failureCount превышает <. Этот отчет о состоянии системы остается до тех пор, пока failureCount не достигнет значения, установленного в failureThreshold или successThreshold.
- При успешном выполнении после сбоя предупреждение остается, но при этом обновляются последовательные успехи.
Задание параметров для зонда
Пробу можно указать в файле ApplicationManifest.xml в разделе ServiceManifestImport.
Проба может быть для любого из следующих элементов.
- HTTP
- Протокол tcp
- Исполнитель
Проба HTTP
Для пробы HTTP Service Fabric отправляет HTTP-запрос на указанный порт и по указанному пути. Возвращаемый код, превышающий или равный 200, и меньше 400, указывает на успешность.
Ниже приведен пример указания пробы liveness HTTP:
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Stateless1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<CodePackagePolicy CodePackageRef="Code">
<Probes>
<Probe Type="Liveness" FailureThreshold="5" SuccessThreshold="2" InitialDelaySeconds="10" PeriodSeconds="30" TimeoutSeconds="20">
<HttpGet Path="/" Port="8081" Scheme="http">
<HttpHeader Name="Foo" Value="Val"/>
<HttpHeader Name="Bar" Value="val1"/>
</HttpGet>
</Probe>
</Probes>
</CodePackagePolicy>
</Policies>
</ServiceManifestImport>
Проба HTTP имеет дополнительные свойства, которые можно задать.
path: путь, используемый в HTTP-запросе.port: порт, используемый для проб. Это свойство является обязательным. Допустимый диапазон: от 1 до 65 535.scheme: схема, используемая для подключения к пакету кода. Если это свойство имеет значение HTTPS, проверка сертификата пропускается. Значение по умолчанию — HTTP.httpHeader: заголовки, заданные в запросе. Можно указать несколько заголовков.host: IP-адрес узла для подключения.
Примечание.
Порт не поддерживается для неконтейнерных приложений. Для этого сценария используйте атрибут EndpointRef="EndpointName". Замените "EndpointName" именем конечной точки, определенной в ServiceManifest.xml.
Если вы используете EndpointRef с HTTP конечной точкой, атрибут scheme является необязательным, так как HTTP является значением по умолчанию. Если вы используете конечную точку HTTPS с EndpointRef, необходимо явно задать атрибуту scheme значение "https".
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Stateless1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<CodePackagePolicy CodePackageRef="Code">
<Probes>
<Probe Type="Readiness" FailureThreshold="10" SuccessThreshold="2" InitialDelaySeconds="600" PeriodSeconds="60" TimeoutSeconds="20">
<HttpGet Path="/" EndpointRef="ServiceEndpoint" Scheme="https">
</HttpGet>
</Probe>
</Probes>
</CodePackagePolicy>
</Policies>
</ServiceManifestImport>
Примечание.
Проверки HTTPS в Service Fabric не поддерживают аутентификацию клиентских сертификатов во время рукопожатия TLS. Дополнительные сведения о процессе подтверждения см. в протоколе подтверждения TLS.
Проба TCP
Для пробы TCP Service Fabric попытается открыть сокет в контейнере с помощью указанного порта. Если он может установить соединение, проба считается успешной. Ниже приведен пример указания пробы, использующей TCP-сокет:
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Stateless1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<CodePackagePolicy CodePackageRef="Code">
<Probes>
<Probe Type="Liveness" FailureThreshold="5" SuccessThreshold="2" InitialDelaySeconds="10" PeriodSeconds="30" TimeoutSeconds="20">
<TcpSocket Port="8081"/>
</Probe>
</Probes>
</CodePackagePolicy>
</Policies>
</ServiceManifestImport>
Проба исполнения
Эта проба выполнит команду exec в контейнере и будет ждать завершения команды.
Примечание.
Команда exec принимает строку с разделителями-запятыми. Команда в следующем примере будет работать для контейнера Linux. При попытке проверки контейнера Windows используйте cmd.
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Stateless1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<CodePackagePolicy CodePackageRef="Code">
<Probes>
<Probe Type="Liveness" FailureThreshold="5" SuccessThreshold="2" InitialDelaySeconds="10" PeriodSeconds="30" TimeoutSeconds="20">
<Exec>
<Command>ping,-c,2,localhost</Command>
</Exec>
</Probe>
</Probes>
</CodePackagePolicy>
</Policies>
</ServiceManifestImport>
Следующие шаги
Дополнительные сведения приведены в статье ниже.