Guida all'API per i criteri di indirizzamento per la gestione del traffico
Utilizza l'API REST Oracle Cloud Infrastructure DNS per creare e configurare i criteri di gestione del traffico.
Utilizza la guida riportata di seguito per scoprire come vengono creati i criteri utilizzando l'API REST DNS.
Autenticazione e autorizzazione
Ogni servizio in Oracle Cloud Infrastructure si integra con IAM per l'autenticazione e l'autorizzazione, per tutte le interfacce (console, SDK o CLI e API REST).
Un amministratore di un'organizzazione deve impostare i gruppi , i compartimenti e i criteri che controllano gli utenti che possono accedere ai servizi, alle risorse e al tipo di accesso. Ad esempio, i criteri controllano chi può creare nuovi utenti, creare e gestire la rete cloud, creare istanze, creare bucket, scaricare oggetti e così via. Per ulteriori informazioni, vedere Gestione dei domini di Identity. Per dettagli specifici sulla scrittura dei criteri relativi a ognuno dei vari servizi, consulta il riferimento per i criteri.
Se sei un utente normale (non un amministratore) che deve utilizzare le risorse Oracle Cloud Infrastructure di proprietà dell'azienda, contatta un amministratore per impostare un ID utente. L'amministratore può confermare quale compartimento o compartimenti è possibile utilizzare.
Componenti dei criteri di indirizzamento per la gestione del traffico
L'elenco riportato di seguito descrive i componenti utilizzati per creare un criterio di indirizzamento per la gestione del traffico.
- CRITERI DI INDIRIZZAMENTO
- Framework generale per definire il funzionamento della gestione del traffico per le zone. I criteri di indirizzamento contengono regole che aiutano a fornire risposte DNS in modo intelligente.
- ALLEGATI
- Consente di collegare un criterio di indirizzamento alle zone. Un collegamento di un criterio di indirizzamento a una zona comporta l'occlusione di tutti i record nel relativo dominio di un tipo di record coperto, la creazione di risposte DNS dal relativo criterio di indirizzamento anziché dai record di tali domini. Un dominio può avere al massimo un allegato che copre qualsiasi tipo di record specifico.
- REGOLE
- Le linee guida utilizzate dai criteri di indirizzamento per filtrare le risposte in base alle proprietà di una richiesta DNS, ad esempio la geolocalizzazione delle richieste o lo stato degli endpoint.
- SOLUZIONI
- Le risposte contengono i dati e i metadati dei record DNS da elaborare in un criterio di indirizzamento.
- MODELLI
- I modelli sono sequenze di regole predefinite che creano un tipo di criterio e il funzionamento previsto. Esempio: il modello
FAILOVER
fornisce risposte controllando prima la query DNS su una regolaFILTER
, quindi le regole seguenti in successione:HEALTH
,PRIORITY
eLIMIT
. Fornisce la capacità di failover dinamico del dominio. I criteri che definiscono il campotemplate
con qualsiasi criterio diverso daCUSTOM
devono seguire la sequenza di regole delineata per quel tipo di criterio, altrimenti viene restituito un errore di codice di stato400
alla creazione del criterio. - CASI
- Una regola può facoltativamente includere una sequenza di casi che definiscono configurazioni alternative per il funzionamento durante l'elaborazione di una determinata query DNS. Quando una regola non ha una sequenza di casi, viene sempre valutata con la stessa configurazione durante l'elaborazione. Quando una regola ha una sequenza di casi vuota, viene sempre ignorata durante l'elaborazione. Quando una regola ha una sequenza di casi non vuota, il suo funzionamento durante l'elaborazione viene configurato dal primo caso corrispondente nella sequenza. Una regola senza
caseCondition
corrisponde sempre. Un caso di regola con un valorecaseCondition
corrisponde solo quando l'espressione restituisce true per la query specifica.
Crea criteri di indirizzamento mediante modelli
Nella sezione seguente viene illustrata la configurazione delle regole per ogni tipo di modello di criteri di indirizzamento seguito da una richiesta POST di esempio (CreateSteeringPolicy) che mostra come configurare ciascun modello.
FAILOVER
Criteri di failover utente per assegnare la priorità all'ordine in cui le risposte vengono fornite in un criterio, ad esempio Primario e Secondario. Oracle Cloud Infrastructure Health Checks monitora e sonde on-demand vengono utilizzate per valutare lo stato delle risposte nella policy. Se la risposta primaria risulta non sana, il traffico DNS viene indirizzato automaticamente alla risposta secondaria. Quando si utilizza un modello FAILOVER
, è necessario definire ciascuna delle seguenti regole nell'ordine specificato nel campo rules
del corpo della richiesta:
Ordina | Regola | Limitazioni | commenti |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Incluso solo se per il criterio è definito healthCheckMonitorId . |
3
|
PRIORITY
|
|
|
4
|
LIMIT
|
|
Esempio di criterio POST /steeringPolicies
che utilizza il modello FAILOVER
:
{
"compartmentId": "ocid1...",
"displayName": "failover between endpoints",
"ttl": 30,
"healthCheckMonitorId": "ocid1...",
"template": "FAILOVER",
"answers": [
{
"name": "server-primary",
"rtype": "A",
"rdata": "192.168.0.2",
"pool": "primary"
},
{
"name": "server-secondary",
"rtype": "A",
"rdata": "192.168.0.3",
"pool": "secondary"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "HEALTH"
},
{
"ruleType": "PRIORITY",
"defaultAnswerData": [
{
"answerCondition": "answer.pool == 'primary'",
"value": 1
},
{
"answerCondition": "answer.pool == 'secondary'",
"value": 99
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
LOAD_BALANCE
I criteri del load balancer distribuiscono il traffico tra molti endpoint. Puoi assegnare pesi uguali agli endpoint per distribuire il traffico in modo uniforme tra gli endpoint oppure puoi assegnare pesi personalizzati per il bilanciamento del carico proporzionale. Oracle Cloud Infrastructure Health Checks monitora e sonde on-demand vengono utilizzate per valutare lo stato dell'endpoint. Il traffico DNS viene distribuito automaticamente agli altri endpoint, se un endpoint risulta in cattivo stato. Quando si utilizza un modello LOAD_BALANCE
, è necessario definire ciascuna delle seguenti regole nell'ordine specificato nel campo rules
del corpo della richiesta:
Ordina | Regola | Limitazioni | Commenti |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Incluso solo se per il criterio è definito healthCheckMonitorId . |
3
|
WEIGHTED
|
|
|
4
|
LIMIT
|
|
Esempio di criterio POST /steeringPolicies
che utilizza il modello LOAD_BALANCE
:
{
"compartmentId": "ocid1...",
"displayName": "Weighted load balance for a set of answers with health checks",
"ttl": 30,
"healthCheckMonitorId": "ocid1...",
"template": "LOAD_BALANCE",
"answers": [
{
"name": "server1",
"rtype": "A",
"rdata": "192.168.0.2"
},
{
"name": "server2",
"rtype": "A",
"rdata": "192.168.0.3"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "HEALTH"
},
{
"ruleType": "WEIGHTED",
"defaultAnswerData": [
{
"answerCondition": "answer.name == 'server1'",
"value": 99
},
{
"answerCondition": "answer.name == 'server2'",
"value": 1
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
ROUTE_BY_GEO
I criteri di indirizzamento basati sulla geolocalizzazione distribuiscono il traffico DNS a endpoint diversi in base alla posizione dell'utente finale. I clienti possono definire aree geografiche composte da continente di origine, paesi o stati/province (Nord America) e definire un endpoint separato o un set di endpoint per ogni area. Quando si utilizza un modello ROUTE_BY_GEO
, è necessario definire ciascuna delle seguenti regole nell'ordine specificato nel campo rules
del corpo della richiesta:
Ordina | Regola | Limitazioni | Commenti |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Incluso solo se per il criterio è definito healthCheckMonitorId . |
3
|
PRIORITY
|
|
|
4
|
LIMIT
|
|
Esempio di corpo della richiesta POST /steeringPolicies
che utilizza il modello ROUTE_BY_GEO
:
{
"compartmentId": "ocid1...",
"displayName": "Geolocations mapped to answer pools",
"ttl": 30,
"healthCheckMonitorId": "ocid1...",
"template": "ROUTE_BY_GEO",
"answers": [
{
"name": "US Server 1",
"rtype": "A",
"rdata": "192.168.0.2",
"pool": "US"
},
{
"name": "US Server 2",
"rtype": "A",
"rdata": "192.168.0.3",
"pool": "US"
},
{
"name": "EU Server 1",
"rtype": "A",
"rdata": "192.168.0.4",
"pool": "EU"
},
{
"name": "EU Server 2",
"rtype": "A",
"rdata": "192.168.0.5",
"pool": "EU"
},
{
"name": "rest of world 1",
"rtype": "A",
"rdata": "203.0.113.2",
"pool": "Global"
},
{
"name": "rest of world 2",
"rtype": "A",
"rdata": "203.0.113.3",
"pool": "Global"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "HEALTH"
},
{
"ruleType": "PRIORITY",
"cases": [
{
"caseCondition": "query.client.geoKey in (geoKey '6255149')",
"answerData": [
{
"answerCondition": "answer.pool == 'US'",
"value": 1
},
{
"answerCondition": "answer.pool == 'EU'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Global'",
"value": 3
}
]
},
{
"caseCondition": "query.client.geokey in (geokey '6255148')",
"answerData": [
{
"answerCondition": "answer.pool == 'EU'",
"value": 1
},
{
"answerCondition": "answer.pool == 'US'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Global'",
"value": 3
}
]
},
{
"answerData": [
{
"answerCondition": "answer.pool == 'Global'",
"value": 1
},
{
"answerCondition": "answer.pool == 'US'",
"value": 2
},
{
"answerCondition": "answer.pool == 'EU'",
"value": 3
}
]
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
ROUTE_BY_ASN
I criteri di indirizzamento basati su ASN consentono di indirizzare il traffico DNS in base ai numeri ASN (Autonomous System Numbers). Le query DNS provenienti da un ASN specifico o da un set di ASN possono essere indirizzate a un endpoint specificato. Quando si utilizza un modello ROUTE_BY_ASN
, è necessario definire ciascuna delle seguenti regole nell'ordine specificato nel campo rules
del corpo della richiesta:
Ordina | Regola | Limitazioni | commenti |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Incluso solo se per il criterio è definito healthCheckMonitorId . |
3
|
PRIORITY
|
|
|
4
|
LIMIT
|
|
Esempio di corpo della richiesta POST /steeringPolicies
che utilizza il modello ROUTE_BY_ASN
:
{
"compartmentId": "ocid1...",
"displayName": "ASNs mapped to pools",
"ttl": 30,
"template": "ROUTE_BY_ASN",
"answers": [
{
"name": "ABC Server",
"rtype": "A",
"rdata": "192.168.0.2",
"pool": "ABC"
},
{
"name": "DEF Server",
"rtype": "A",
"rdata": "192.168.0.3",
"pool": "DEF"
},
{
"name": "Other",
"rtype": "A",
"rdata": "203.0.113.2",
"pool": "Other"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "PRIORITY",
"cases": [
{
"caseCondition": "query.client.asn == 3",
"answerData": [
{
"answerCondition": "answer.pool == 'ABC'",
"value": 1
},
{
"answerCondition": "answer.pool == 'DEF'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Other'",
"value": 3
}
]
},
{
"caseCondition": "query.client.asn == 16591",
"answerData": [
{
"answerCondition": "answer.pool == 'DEF'",
"value": 1
},
{
"answerCondition": "answer.pool == 'ABC'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Other'",
"value": 3
}
]
},
{
"answerData": [
{
"answerCondition": "answer.pool == 'Other'",
"value": 1
},
{
"answerCondition": "answer.pool == 'ABC'",
"value": 2
},
{
"answerCondition": "answer.pool == 'DEF'",
"value": 3
}
]
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
ROUTE_BY_IP
I criteri di indirizzamento basati su prefisso IP consentono ai clienti di indirizzare il traffico DNS in base al prefisso IP della query di origine. Quando si utilizza un modello ROUTE_BY_IP
, è necessario definire ciascuna delle seguenti regole nell'ordine specificato nel campo rules
del corpo della richiesta:
Ordina | Regola | Limitazioni | commenti |
---|---|---|---|
1
|
FILTER
|
|
|
2
|
HEALTH
|
|
Incluso solo se per il criterio è definito healthCheckMonitorId . |
3
|
PRIORITY
|
|
|
4
|
LIMIT
|
|
Esempio di corpo della richiesta POST /steeringPolicies
che utilizza il modello ROUTE_BY_IP
:
{
"compartmentId": "ocid1...",
"displayName": "IP subnets mapped to answer pools",
"ttl": 30,
"template": "ROUTE_BY_IP",
"answers": [
{
"name": "ABC Server",
"rtype": "A",
"rdata": "192.168.0.2",
"pool": "ABC"
},
{
"name": "DEF Server",
"rtype": "A",
"rdata": "192.168.0.3",
"pool": "DEF"
},
{
"name": "Other",
"rtype": "A",
"rdata": "203.0.113.2",
"pool": "Other"
}
],
"rules": [
{
"ruleType": "FILTER",
"defaultAnswerData": [
{
"answerCondition": "answer.isDisabled != true",
"shouldKeep": true
}
]
},
{
"ruleType": "PRIORITY",
"cases": [
{
"caseCondition": "query.client.address in (subnet '10.0.3.0/24')",
"answerData": [
{
"answerCondition": "answer.pool == 'ABC'",
"value": 1
},
{
"answerCondition": "answer.pool == 'DEF'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Other'",
"value": 3
}
]
},
{
"caseCondition": "query.client.address in (subnet '192.0.2.2/24')",
"answerData": [
{
"answerCondition": "answer.pool == 'DEF'",
"value": 1
},
{
"answerCondition": "answer.pool == 'ABC'",
"value": 2
},
{
"answerCondition": "answer.pool == 'Other'",
"value": 3
}
]
},
{
"answerData": [
{
"answerCondition": "answer.pool == 'Other'",
"value": 1
},
{
"answerCondition": "answer.pool == 'ABC'",
"value": 2
},
{
"answerCondition": "answer.pool == 'DEF'",
"value": 3
}
]
}
]
},
{
"ruleType": "LIMIT",
"defaultCount": 1
}
]
}
PERSONALIZZA
Utilizza criteri personalizzati per creare criteri complessi che combinano le funzionalità di failover, bilanciamento del carico, geolocalizzazione, indirizzamento ASN e prefisso IP. Modelli personalizzati per non richiedere una sequenza regimentata di regole e si consiglia di contattare il supporto Oracle Cloud Infrastructure prima di creare un criterio personalizzato.
Tipi di regole
- FILTRA
- Utilizza dati booleani associati alle risposte, mantenendo le risposte solo se il valore
shouldKeep
della regola ètrue
. - STATO
- Utilizza i monitoraggi e le sonde on-demand di OCI Health Checks per valutare lo stato degli endpoint e aggiungere e rimuovere le risposte dal criterio in base alle esigenze. Per influire sul criterio, è necessario fare riferimento a un monitoraggio del controllo dello stato in una regola dello stato. Per ulteriori informazioni sui controlli dello stato, vedere Controlli dello stato.
- PONDERATO
- Utilizza un numero compreso tra 0 e 255 per valutare la frequenza con cui viene fornita una risposta rispetto ad altre risposte. Le risposte con valori più alti hanno maggiori probabilità di essere restituite.
- PRIORITÀ
- Utilizza un numero intero associato a ogni risposta per ordinare le risposte dal valore più basso al valore più alto. Esempio: una risposta con valore di priorità 1 viene restituita prima di una risposta con valore di priorità 10 nell'elenco delle risposte. Le risposte a cui non è stato assegnato un valore di priorità vengono spostate alla fine dell'elenco di risposte.
- LIMITAZIONE
- Utilizza una proprietà di conteggio per filtrare tutte le risposte tranne le prime nell'elenco.