Questa sezione riassume le nostre best practice e fornisce i nostri suggerimenti per l'utilizzo di OPDK con il cloud AWS.
Cassandra viene utilizzato come backend e datastore per quasi tutti i criteri ed è una parte fondamentale dell'ambiente di runtime Apigee Edge. Questo documento è incentrato sull'ottimizzazione di Casssandra per l'ambiente AWS.
Requisiti di archiviazione e I/O
La maggior parte dell'I/O di Cassandra è sequenziale, ma in alcuni casi sono necessari I/O casuali. Un esempio è la lettura delle tabelle di stringhe ordinate durante le operazioni di lettura. SSD è il meccanismo di archiviazione consigliato per Cassandra, poiché offre tempi di risposta a latenza estremamente bassi per le operazioni di lettura casuale, fornendo al contempo prestazioni di scrittura sequenziale sufficienti per le operazioni di compattazione. In questa sede viene presa in considerazione anche la replica.
Molte istanze di AWS EC2 includono uno spazio di archiviazione locale in cui il disco rigido è fisicamente collegato all'hardware su cui è ospitata l'istanza EC2. Apigee consiglia di sfruttare sia gli archivi di istanze sia SSD durante l'esecuzione di Cassandra in produzione. Quando utilizzi un tipo di istanza con più di una SSD, puoi utilizzare RAID0 per aumentare la velocità effettiva e la capacità di archiviazione.
Requisiti di rete
Cassandra utilizza il protocollo Gossip per scambiare informazioni con altri nodi sulla topologia di rete. L'utilizzo di Gossip e la natura distribuita di Cassandra, che comporta il confronto con più nodi per le operazioni di lettura e scrittura, comporta un notevole trasferimento di dati attraverso la rete. Apigee consiglia di utilizzare un tipo di istanza con una larghezza di banda di rete di almeno 1 Gbps e superiore a 1 Gbps per i sistemi di produzione.
Utilizza un VPC con CIDR di /16. Poiché le subnet in AWS non possono estendersi su più di 1 AZ, Apigee consiglia quanto segue:
- Crea 1 subnet per zona di disponibilità (AZ)
- Utilizza 3 subnet private per l'installazione di Apigee, con un nodo Cassandra in ogni AZ. Le tre subnet dovrebbero avere un numero sufficiente di blocchi CIDR per supportare l'espansione orizzontale del cluster Cassandra.
- Configura 3 subnet pubbliche con NAT dedicato per Cassandra per poter comunicare con internet per il download di software e gli aggiornamenti della sicurezza.
A differenza delle architetture master-slave precedenti, Cassandra ha un'architettura senza master in cui tutti i nodi svolgono un ruolo identico, quindi non esiste un single point of failure. Valuta la possibilità di distribuire i nodi Casssandra su più AZ per abilitare l'alta disponibilità. La distribuzione dei nodi tra le AZ ti consente di mantenere la disponibilità e l'uptime in caso di emergenza.
Scelta di una famiglia di istanze
Quando esamini i requisiti della CPU di Cassandra, è utile notare che i carichi di lavoro ad alto tasso di inserimento sono associati alla CPU in Cassandra prima di essere associati all'IO. In altre parole, tutte le operazioni di scrittura vanno al log di commit, ma Cassandra è così efficiente nella scrittura che la CPU diventa il fattore limitante. Cassandra è altamente simultanea e utilizza il numero di core della CPU disponibile.
Apigee consiglia di utilizzare una famiglia di istanze, che abbia un equilibrio tra CPU e memoria. Nello specifico, ti consigliamo di utilizzare le istanze della famiglia C5, se disponibili nella tua regione AWS, e C3 come opzione di riserva. In alcuni casi, 4xlarge è l'istanza ottimale in entrambe le famiglie che offre il miglior rapporto prezzo/prestazioni.
Apigee consiglia inoltre di utilizzare una tenancy predefinita per le istanze Cassandra. Quando si scala a più di un'istanza per AZ, molto probabilmente tutte le istanze Cassandra verranno posizionate sullo stesso hardware sottostante se imposti la tenancy su dedicata. Quindi, in caso di guasto dell'hardware, è probabile che perderai tutte le istanze in quell'AZ.
Riepilogo consigli
La tabella seguente riassume i suggerimenti di Apigee per l'utilizzo di AWS con Apigee Edge per il cloud privato:
Famiglia di istanze | C5d (preferito ) o C3 |
Tipo di istanza | C(x).4xlarge |
Archivio istanze | SSD (archiviazione locale) con RAID0 |
Tipo di tenancy | predefinito |
Posizionamento dei nodi | 1 nodo Cassandra per AZ |
VPC e subnet | 1 subnet per AZ e un VPC per regione |
Per ulteriori informazioni, consulta la pagina relativa ai tipi di istanza Amazon.