Ridimensionare le applicazioni Dapr con scaler KEDA
App Azure Container ridimensiona automaticamente il traffico HTTP a zero. Tuttavia, per ridimensionare il traffico non HTTP (ad esempio dapr pub/sub e associazioni), è possibile usare i scaler KEDA per ridimensionare l'applicazione e il relativo sidecar Dapr, in base al numero di eventi e messaggi in ingresso in sospeso.
Questa guida illustra come configurare le regole di scalabilità di un'applicazione pub/sub Dapr con un scaler di messaggistica KEDA. Per il contesto, fare riferimento alle applicazioni pub/sub di esempio corrispondenti:
- Comunicazione di microservizi tramite pub/sub in C#
- Comunicazione di microservizi tramite pub/sub in JavaScript
- Comunicazione di microservizi tramite pub/sub in Python
Negli esempi precedenti l'applicazione usa gli elementi seguenti:
- Il
checkout
server di pubblicazione è un'applicazione che deve essere eseguita in modo illimitato e non ridurre mai fino a zero, nonostante non riceva mai traffico HTTP in ingresso. - Componente dapr bus di servizio di Azure pub/sub.
- Un'app
order-processor
contenitore sottoscrittore preleva i messaggi ricevuti tramite l'argomentoorders
ed elaborati man mano che arrivano. - Regola di scalabilità per bus di servizio di Azure, responsabile della scalabilità verticale del
order-processor
servizio e del relativo sidecar Dapr quando i messaggi iniziano ad arrivare all'argomentoorders
.
Di seguito viene illustrato come applicare le regole di ridimensionamento in un'applicazione Dapr.
App contenitore del server di pubblicazione
Il checkout
server di pubblicazione è un servizio headless che viene eseguito per un periodo illimitato e non viene mai ridotto a zero.
Per impostazione predefinita, il runtime di App contenitore assegna una regola di scalabilità basata su HTTP alle applicazioni, che determina il ridimensionamento in base al numero di richieste HTTP in ingresso. Nell'esempio seguente viene minReplicas
impostato su 1
. Questa configurazione garantisce che l'app contenitore non segua il comportamento predefinito del ridimensionamento a zero senza traffico HTTP in ingresso.
resource checkout 'Microsoft.App/containerApps@2022-03-01' = {
name: 'ca-checkout-${resourceToken}'
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
//...
template: {
//...
// Scale the minReplicas to 1
scale: {
minReplicas: 1
maxReplicas: 1
}
}
}
}
App contenitore sottoscrittore
L'app sottoscrittore seguente order-processor
include una regola di scalabilità personalizzata che monitora una risorsa di tipo azure-servicebus
. Con questa regola, l'app (e il relativo sidecar) aumenta e riduce le prestazioni in base al numero di messaggi in sospeso nel bus.
resource orders 'Microsoft.App/containerApps@2022-03-01' = {
name: 'ca-orders-${resourceToken}'
location: location
tags: union(tags, {
'azd-service-name': 'orders'
})
identity: {
type: 'SystemAssigned'
}
properties: {
managedEnvironmentId: containerAppsEnvironment.id
configuration: {
//...
// Enable Dapr on the container app
dapr: {
enabled: true
appId: 'orders'
appProtocol: 'http'
appPort: 5001
}
//...
}
template: {
//...
// Set the scale property on the order-processor resource
scale: {
minReplicas: 0
maxReplicas: 10
rules: [
{
name: 'topic-based-scaling'
custom: {
type: 'azure-servicebus'
metadata: {
topicName: 'orders'
subscriptionName: 'membership-orders'
messageCount: '30'
}
auth: [
{
secretRef: 'sb-root-connectionstring'
triggerParameter: 'connection'
}
]
}
}
]
}
}
}
}
Funzionamento del scaler
Si noti la proprietà nella messageCount
configurazione del ridimensionatore nell'app sottoscrittore:
{
//...
properties: {
//...
template: {
//...
scale: {
//...
rules: [
//...
custom: {
//...
metadata: {
//...
messageCount: '30'
}
}
]
}
}
}
}
Questa proprietà indica al scaler il numero di messaggi che ogni istanza dell'applicazione può elaborare contemporaneamente. In questo esempio il valore è impostato su 30
, a indicare che deve essere presente un'istanza dell'applicazione creata per ogni gruppo di 30 messaggi in attesa nell'argomento.
Ad esempio, se sono in attesa 150 messaggi, KEDA ridimensiona l'app su cinque istanze. La maxReplicas
proprietà è impostata su 10
, vale a dire anche con un numero elevato di messaggi nell'argomento, il ridimensionatore non crea mai più di 10
istanze di questa applicazione. Questa impostazione garantisce che non si aumentano troppo e si accumulano troppi costi.
Passaggi successivi
Altre informazioni sull'uso dei componenti dapr con App Azure Container.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per