Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Prima di procedere con questo articolo, acquisire familiarità con il modello applicativo di Service Fabric e modello di hosting di Service Fabric. Questo articolo offre una panoramica su come definire un probe di attività e idoneità usando i file manifesto.
Probe di attività
A partire dalla versione 7.1, Azure Service Fabric supporta un meccanismo di probe di attività per le applicazioni in contenitori e non in contenitori. Un probe di attività consente di segnalare lo stato di attività di un pacchetto di codice, che verrà riavviato se non risponde rapidamente.
Probe di idoneità
A partire dalla versione 8.2, è supportato anche il probe di idoneità. Un probe di idoneità viene usato per decidere se un pacchetto di codice è pronto per accettare traffico. Ad esempio, se il contenitore richiede molto tempo per elaborare la richiesta o se la coda delle richieste è piena, il pacchetto di codice non può più accettare traffico e quindi gli endpoint per raggiungere il pacchetto di codice verranno rimossi.
Il comportamento del probe di idoneità è il seguente:
- Viene avviata l'istanza del contenitore/pacchetto di codice
- Gli endpoint vengono pubblicati immediatamente
- Il probe di idoneità avvia l'esecuzione
- Il probe di conformità raggiunge infine la soglia di errore e l'endpoint viene rimosso, rendendolo non disponibile
- L'istanza alla fine diventa pronta
- Il probe di idoneità nota che l'istanza è pronta e pubblica di nuovo l'endpoint
- Le richieste vengono inoltrate di nuovo e hanno esito positivo perché è pronta per gestire le richieste
Note
Per il probe di idoneità, il pacchetto di codice non viene riavviato; gli endpoint rimangono non pubblicati in modo che il set di repliche o partizioni non subisca alcun impatto.
Semantica
È possibile specificare un solo probe di idoneità e un sono probe di attività per ogni pacchetto di codice e controllarne il comportamento usando questi campi:
type: usato per specificare se il tipo di probe è Liveness o Readiness. I valori supportati sono Liveness o ReadinessinitialDelaySeconds: ritardo iniziale in secondi prima di avviare l'esecuzione del probe dopo l'avvio del contenitore. Il valore supportato è int. Il valore predefinito è 0 e il valore minimo è 0.timeoutSeconds: periodo in secondi trascorso il quale si considera il probe come non riuscito, se non è stato completato correttamente. Il valore supportato è int. Il valore predefinito è 1 e il valore minimo è 1.periodSeconds: periodo in secondi per specificare la frequenza del probe. Il valore supportato è int. Il valore predefinito è 10 e il valore minimo è 1.failureThreshold: quando si raggiunge questo valore, il contenitore verrà riavviato. Il valore supportato è int. Il valore predefinito è 3 e il valore minimo è 1.successThreshold: in caso di errore, affinché il probe venga considerato riuscito, deve essere eseguito correttamente per questo valore. Il valore supportato è int. Il valore predefinito è 1 e il valore minimo è 1.
Può essere presente al massimo un probe per ogni contenitore in qualsiasi momento. Se il probe non termina nel tempo impostato in timeoutSeconds, attendere e calcolare il tempo fino a failureThreshold.
Service Fabric genererà anche i report di integrità del probe seguenti in DeployedServicePackage:
OK: il probe ha esito positivo per il valore impostato in successThreshold.Error: failureCount == failureThreshold del probe prima del riavvio del contenitore.Warning:- Il probe ha esito negativo e failureCount<failureThreshold. Questo report sull'integrità rimane finché failureCount non raggiunge il valore impostato in failureThreshold o successThreshold.
- In caso di esito positivo dopo l'esito negativo, l'avviso rimane ma con indicazioni aggiornate dei successi consecutivi.
Specificare un probe
È possibile specificare un probe nel file ApplicationManifest.xml in ServiceManifestImport.
Il probe può essere per uno dei seguenti:
- HTTP
- TCP
- Exec
Probe HTTP
Per un probe HTTP, Service Fabric invierà una richiesta HTTP alla porta e al percorso specificati. Un codice restituito maggiore o uguale a 200 e minore di 400 indica l'esito positivo.
Di seguito un esempio di come specificare un probe di attività 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>
Il probe HTTP include proprietà aggiuntive che è possibile impostare:
path: percorso da usare nella richiesta HTTP.port: porta da usare per i probe. Questa proprietà è obbligatoria. L'intervallo è compreso tra 1 e 65535.scheme: schema da usare per la connessione al pacchetto di codice. Se questa proprietà è impostata su HTTPS, la verifica del certificato viene ignorata. L'impostazione predefinita è HTTP.httpHeader: intestazioni da impostare nella richiesta. È possibile specificare più intestazioni.host: indirizzo IP host a cui connettersi.
Note
La porta non è supportata per le applicazioni non in contenitori. Per questo scenario, usare l'attributo EndpointRef="EndpointName". Sostituire 'EndpointName' con il nome dell'endpoint definito in ServiceManifest.xml.
Se si usa EndpointRef con un endpoint HTTP, l'attributo scheme è facoltativo perché HTTP è l'impostazione predefinita. Se si usa EndpointRef con un endpoint HTTPS, è necessario impostare in modo esplicito l'attributo scheme su "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>
Note
Le sonde HTTPS di Service Fabric non supportano l'autenticazione tramite certificato client durante l'handshake TLS. Per informazioni dettagliate sul processo di handshake, vedere il protocollo handshake TLS.
Probe TCP
Per un probe TCP, Service Fabric proverà ad aprire un socket nel contenitore usando la porta specificata. Se è in grado di stabilire una connessione, il probe viene considerato riuscito. Ecco un esempio di come specificare un probe che usa un socket 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>
Probe Exec
Questo probe eseguirà un comando exec nel contenitore e attenderà il completamento del comando.
Note
Il comando Exec accetta una stringa delimitata da virgole. Il comando nell'esempio seguente funzionerà per un contenitore Linux. Se si sta provando a eseguire il probe per un contenitore Windows, usare 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>
Passaggi successivi
Per informazioni correlate, vedere l'articolo seguente: