Abilitazione del mirroring
Queste informazioni descrivono come configurare due cluster Event Streams Enterprise come coppia speculare. I casi di utilizzo includono il ripristino di emergenza, i backup e la geo-replica.
Quando si costruisce una soluzione che prevede il mirroring in Event Streams, si considera come gestire i due scenari seguenti:
- Perdita di dati
- Il mirroring è asincrono. Ciò significa che i messaggi devono essere prodotti correttamente nel cluster di origine prima di essere sottoposti a mirroring nel cluster di destinazione. Se si verifica un errore sul cluster di origine prima che venga eseguito il mirroring di tali messaggi, le applicazioni dovranno gestire la perdita di tali messaggi.
- Almeno una volta
- La duplicazione dei messaggi può verificarsi nel processo di mirroring. Gli offset del gruppo di consumatori di cui è stato eseguito il commit nel cluster di origine potrebbero non essere convertiti in punti di controllo nel cluster di destinazione. Al failover, un utente potrebbe dover rielaborare i messaggi già utilizzati e di cui è stato eseguito il commit sul cluster di origine.
L'utilizzo del mirroring con Event Streams comporta un costo aggiuntivo per ogni unità di capacità di mirroring all'ora. Per ulteriori informazioni, andare al Catalogo e cercare Event Streams.
È quindi possibile visualizzare i piani dei prezzi.
Attualmente, l'abilitazione del mirroring per un'istanza del servizio Event Streams richiede l'uso della CLI IBM Cloud.
Per installare la CLI, vedere Estensione della CLI di IBM Cloud con i plug-in.
La CLI di IBM Cloud utilizza il comando service-instance-update per aggiornare la risorsa istanza di servizio Event Streams. All'ID utente nell'account utilizzato per eseguire il comando service - instance - update devono essere assegnate le stesse politiche di accesso necessarie quando crei le risorse. Per informazioni sui requisiti di accesso, vedi Accesso richiesto per la creazione di risorse.
Il tempo richiesto per abilitare il mirroring per l'istanza del servizio Event Streams varia, ma in circostanze normali non supera le 2 ore.
Configurazione
Assicurati di eseguire il provisioning di due cluster del piano Enterprise. Entrambi i cluster devono avere la stessa velocità effettiva e la stessa capacità di archiviazione e devono avere bind da servizio a servizio (per ulteriori informazioni, consultare il Passo 2 ).
Poiché il mirroring è unidirezionale, decidere quale direzione di mirroring si desidera. Un cluster è l'origine e l'altro è la destinazione.
Decidete quali argomenti del vostro cluster di origine volete rispecchiare. Per impostazione predefinita, non viene eseguito il mirroring degli argomenti; è possibile attivare il mirroring utilizzando i controlli utente dopo che il mirroring è stato abilitato, come mostrato al punto 4. È necessario specificare la selezione come uno o più modelli.
Considerare i propri requisiti di larghezza di banda; è disponibile una larghezza di banda sufficiente nel cluster di origine? Il cluster di origine deve avere spazio per eseguire il mirroring.Vedere Scelta del piano per i limiti di larghezza di banda del cluster e utilizzare le metriche di Event Streams per determinare quanto è occupato il cluster di origine e se dispone di spazio per il mirroring.
Sebbene sia consentito il mirroring da un cluster Enterprise multizona a un cluster Enterprise monozona e viceversa, questa configurazione è sconsigliata a meno che non si abbiano requisiti di residenza specifici e si sia consapevoli delle implicazioni. La politica di Service Level Agreement (SLA) di un cluster Enterprise multizona rispetto a un cluster Enterprise monozona potrebbe essere inferiore o viceversa.
Abilitare i binding da servizio a servizio
È necessario configurare un bind service - to - Service tra entrambe le istanze per consentire a entrambe le istanze di comunicare. Per configurare, completare i seguenti passaggi:
Quando si crea un binding da servizio a servizio, IAM utilizza la terminologia "source" e "target" in modo opposto a quello di Event Streams. In quanto l'account sorgente IAM contiene l'istanza di destinazione del mirroring Event Streams e viceversa.
- Selezionare l'account IBM Cloud contenente l'istanza del servizio di origine di mirroring Event Streams.
- Passa al pannello Autorizzazioni in IAM e fai clic su Crea.
- Per la sezione Origine:
- Se si esegue il mirroring su un'istanza di destinazione in un account diverso, selezionare "un altro account" sotto l'intestazione dell'origine, quindi scegliere l'account contenente l'istanza di destinazione del mirroring. Se si esegue il mirroring tra le istanze del servizio nello stesso account, è possibile lasciare il valore predefinito di "questo account" selezionato.
- Seleziona l'istanza Event Streams di destinazione di mirroring come istanza del servizio di origine IAM.
- Per la selezione Destinazione, seleziona l'istanza Event Streams dell'origine di mirroring come istanza del servizio di destinazione IAM.
- Assegnare il ruolo di lettore e fare clic su Autorizza.
Se il tuo requisito è il failback, hai anche bisogno del bind service - to - service nella direzione opposta.
Il seguente esempio mostra come utilizzare la riga comandi per configurare il bind service - to - service.
-
Accedere all'account IBM Cloud® contenente l'istanza Event Streams che si desidera utilizzare come istanza sorgente del mirroring:
ibmcloud login -c <account containing mirroring source instance> -
Impostare un criterio di autorizzazione, come segue:
ibmcloud iam authorization-policy-create messagehub messagehub Reader --source-service-instance-id <instance id of the mirroring target cluster> [--source-service-account <account containing mirroring target instance>] --target-service-instance-id <instance id of the mirroring source cluster>Si noti che l'opzione
--source-service-accountpuò essere omessa se si sta impostando il mirroring tra due istanze di Event Streams nello stesso account IBM Cloud.
Per ulteriori informazioni sui binding da servizio a servizio, vedere il pannello Gestione delle autorizzazioni e Uso delle autorizzazioni per garantire l'accesso tra servizi.
Abilitare il mirroring e selezionare gli argomenti di cui eseguire il mirroring
Per abilitare il mirroring, è necessario eseguire un comando service-instance-update sul cluster di destinazione utilizzando la CLI con i seguenti parametri:
| Parametri obbligatori | Descrizione |
|---|---|
| crn origine | Il crn del cluster di origine di cui eseguire il mirroring |
| alias_origine | L'alias utilizzato per il cluster di origine |
| alias destinazione | L'alias utilizzato per il cluster di destinazione |
- Il sito
source_crnha questo formato:crn:v1:bluemix:public:messagehub:us-south:a/aaa:aaaa:: source_aliasetarget_aliassono gli alias che si desidera configurare per ognuna delle due istanze del servizio quando si abilita il mirroring. Gli alias vengono visualizzati nei nomi argomento. Scegliere nomi brevi e descrittivi. Ad esempio, "us-south" e "us-east".
Comando CLI di esempio
ibmcloud resource service-instance-update "Event Streams resource instance name" -p '{"mirroring":{"source_crn":"<source_crn>", "source_alias":"<source_alias>", "target_alias":"<target_alias>"}}'
Selezionare gli argomenti da rispecchiare
Una volta completato l'aggiornamento dell'istanza di servizio, è necessario selezionare quali argomenti saranno sottoposti a mirroring dall'origine al cluster di destinazione. Questo viene fatto con la CLI usando il comando 'ibmcloud es mirroring-topic-selection-set'. Tutti i gruppi di consumatori utilizzati per consumare da questi argomenti selezionati verranno riprodotti in mirroring dal cluster di origine a quello di destinazione. La selezione dell'argomento è sotto forma di un modello regex o di un elenco separato da virgole di tali modelli.
Il seguente comando seleziona tutti gli argomenti da sottoporre a mirroring:
ibmcloud es mirroring-topic-selection-set --select '.*'
È possibile selezionare gli argomenti elencando gli argomenti che si desidera rispecchiare come segue:
ibmcloud es mirroring-topic-selection-set --select topic1,topic2,topic3
Per ulteriori informazioni su come effettuare la selezione, consultare Mirroring dei controlli utente.
Una volta completata la selezione dell'argomento, il cluster di destinazione mostra gli argomenti selezionati per il mirroring mediante i controlli utente di mirroring con suffisso dell'alias del cluster di origine.
Passo 3.1: Specificare come vengono trasformati i nomi degli argomenti e dei gruppi
È possibile specificare regole di trasformazione che consentono di eseguire il mirroring dei dati in argomenti con nomi diversi nel cluster di destinazione. I tre scenari seguenti descrivono le possibili trasformazioni e spiegano i casi d'uso per ciascuna di esse.
È possibile specificare quali argomenti o gruppi di consumatori vengono sottoposti a mirroring in qualsiasi momento una volta che il mirroring è stato attivato, tuttavia la trasformazione di argomenti o gruppi è possibile solo nel momento in cui il mirroring viene attivato. Se il mirroring è già abilitato, dovrà essere disabilitato prima di effettuare una successiva richiesta di abilitazione per specificare la trasformazione dell'argomento o del gruppo.
Scenario 1: trasformazione degli argomenti rimuovendo il vecchio prefisso o suffisso e aggiungendo un nuovo prefisso o suffisso
Configurare i seguenti quattro parametri aggiuntivi.
| Parametri necessari per la ridenominazione degli argomenti | Descrizione |
|---|---|
| Il prefisso da rimuovere dai nomi degli argomenti nel cluster di origine. | |
| Il suffisso da rimuovere dai nomi degli argomenti nel cluster di origine. | |
| Il prefisso da aggiungere ai nomi degli argomenti nel cluster di destinazione. | |
| Il suffisso da aggiungere ai nomi degli argomenti nel cluster di destinazione. |
Il comando ibmcloud resource service-instance-update deve essere specificato tramite l'argomento della riga di comando -p. Quando si specificano queste opzioni, solo gli argomenti con i prefissi o i suffissi corrispondenti
saranno ammessi al mirroring. Ad esempio, se si dispone di un remove_prefix di app1- e si specifica una selezione di argomenti di abc.*, verranno rispecchiati solo gli argomenti che iniziano per app1-abc.
Se si specifica il tipo di trasformazione "rinomina" e non si specificano i parametri per add_prefix o add_suffix, l'argomento specchiato nel cluster di destinazione avrà questi parametri rimossi. I modelli
di argomento vengono applicati al nome dell'argomento dopo la rimozione di qualsiasi prefisso o suffisso di origine e prima dell'aggiunta di qualsiasi prefisso o suffisso.
Vedere il seguente esempio di comando CLI:
{
"mirroring": {
"source_crn": "crn:v1:...",
"source_alias": "source",
"target_alias": "target",
"options": {
"topic_name_transform": {
"type": "rename",
"rename": {
"add_prefix": "newprefix-",
"remove_prefix": "oldprefix-",
"add_suffix": "-newsuffix",
"remove_suffix": "-oldsuffix"
}
}
}
}
}
Scenario 2: Aggiunta dell'alias di origine come suffisso agli argomenti in mirroring
Applica una trasformazione del nome dell'argomento con il tipo topic_name_transform impostato su use_alias. Con questa configurazione, un argomento chiamato app1-topic nel cluster di origine sarà riflesso in un argomento
chiamato app1-topic.source nel cluster di destinazione, perché l'alias di origine specificato nella configurazione è source.
Vedere il seguente esempio di comando CLI:
{
"mirroring": {
"source_crn": "crn:v1:...",
"source_alias": "source",
"target_alias": "target",
"options": {
"topic_name_transform": {
"type": "use_alias"
}
}
}
}
Scenario 3: Gli argomenti vengono rispecchiati con i loro nomi invariati
In questo scenario, si applica anche il sito topic_name_transform con il tipo impostato su none. Con questa configurazione, un argomento chiamato app1-topic nel cluster di origine sarà riflesso in un
argomento chiamato app1-topic nel cluster di destinazione.
Vedere il seguente esempio di comando CLI:
{
"mirroring": {
"source_crn": "crn:v1:...",
"source_alias": "source",
"target_alias": "target",
"options": {
"topic_name_transform": {
"type": "none"
}
}
}
}
Passo 3.2: Trasformazione degli ID del gruppo di consumatori corrispondenti
Per impostazione predefinita, Mirror Maker non modifica gli ID dei gruppi di consumatori durante il mirroring sul cluster di destinazione. Tuttavia, Event Streams consente di modificare i dati degli ID gruppo, come illustrato nei due scenari
seguenti. Analogamente agli argomenti, i modelli di ID gruppo vengono applicati dopo aver rimosso qualsiasi prefisso o suffisso di origine e prima di aggiungere qualsiasi prefisso o suffisso. Se si specifica il tipo di trasformazione "rinomina"
e non si specificano i parametri per add_prefix o add_suffix, l'ID del gruppo in mirroring nel cluster di destinazione verrà rimosso con questi parametri.
Il comando ibmcloud resource service-instance-update deve essere specificato tramite l'argomento della riga di comando -p.
Scenario 1: Trasformare l'ID del gruppo rimuovendo il vecchio prefisso o suffisso e aggiungendo un nuovo prefisso o suffisso
Configurare i seguenti quattro parametri aggiuntivi.
| Parametri richiesti per la ridenominazione dell'ID del gruppo | Descrizione |
|---|---|
| Il prefisso da rimuovere dall'id del gruppo nel cluster di origine. | |
| Il suffisso da rimuovere dall'id del gruppo nel cluster di origine. | |
| Il prefisso da aggiungere all'id del gruppo nel cluster di destinazione. | |
| Il suffisso da aggiungere all'id del gruppo nel cluster di destinazione. |
Quando si specificano queste opzioni, solo gli ID di gruppo con i prefissi o i suffissi corrispondenti saranno idonei per il mirroring. Ad esempio, se si ha un remove_prefix di aaa e un add_prefix di
bbb, i gruppi di consumatori che iniziano con aaa-group-id nel cluster di origine saranno rispecchiati in bbb-group-id nel cluster di destinazione.
Vedere il seguente esempio di comando CLI:
{
"group_id_transform": {
"type": "rename",
"rename": {
"add_prefix": "newprefix-",
"remove_prefix": "oldprefix-",
"add_suffix": "-newsuffix",
"remove_suffix": "-oldsuffix"
}
}
}
Scenario 2: Gli ID dei gruppi di consumatori vengono rispecchiati con i loro nomi invariati
In questo scenario, si applica anche il sito topic_name_transform con il tipo impostato su none. Con questa configurazione, un argomento chiamato aaa-group-id nel cluster di origine sarà riflesso in un
argomento chiamato aaa-group-id nel cluster di destinazione.
Vedere il seguente esempio di comando CLI:
"group_id_transform": {
"type": "none"
}
Approcci alla migrazione degli schemi in Event Streams
Event Streams fornisce due approcci alla migrazione degli schemi, ognuno dei quali utilizza una strategia diversa.
-
Strumento di importazione/esportazione massiva degli schemi: Questo metodo conserva gli ID degli schemi esattamente come esistono nel cluster di origine. Utilizzare questo approccio quando non si effettuano trasformazioni tra i cluster di origine e di destinazione o per scenari di sollevamento e spostamento diretti in cui la compatibilità dello schema deve essere mantenuta da un capo all'altro. Per ulteriori informazioni, vedere Importazione di dati da altri registri di schemi.
-
Sincronizzazione dello schema tramite mirroring con trasformazione dell'ID. Questo metodo, descritto di seguito, trasforma gli ID dello schema durante la migrazione dal cluster di origine a quello di destinazione. Utilizzare questo approccio per migrazioni graduali o quando sono necessarie trasformazioni. Questo metodo garantisce la sincronizzazione degli schemi tra i cluster del registro, in modo che i consumatori del cluster di destinazione possano leggere immediatamente i messaggi. Inoltre, consente di registrare nuovi schemi senza il rischio di collisioni di ID con schemi che potrebbero essere migrati in seguito.
Sincronizzazione degli schemi tramite mirroring con trasformazione ID
La sincronizzazione dello schema tramite il mirroring funziona inoltrando le richieste del registro dello schema da un'istanza all'altra. Ciò consente agli utenti di leggere e scrivere da un'istanza di origine attraverso l'istanza di destinazione, in quanto il registro dello schema di destinazione opera in una speciale "modalità di mirroring", proxiando in modo trasparente le richieste relative allo schema al registro di origine e applicando le trasformazioni ID necessarie. Questo approccio semplifica l'accesso ai dati tra le varie istanze e supporta la sincronizzazione dello schema tra gli ambienti.
Attenzione
Prima di sincronizzare gli schemi utilizzando il mirroring, è necessario prendere in considerazione le seguenti precauzioni:
- È necessaria una finestra di manutenzione mentre gli schemi vengono esportati/importati in blocco tra i due registri: si tratta di un periodo di poche ore o meno.
- Affinché la rinominazione degli argomenti funzioni, gli schemi devono utilizzare Confluent Avro Serdes, in modo che l'argomento possa essere derivato dal nome dell'argomento. Confluent Avro Serdes perché l'argomento associato a uno schema può essere derivato dal nome dell'argomento (ad esempio, per le strategie di denominazione degli argomenti e degli argomenti/registro).
- Il mirroring dell'autorizzazione S2S deve essere ininterrotto; la disabilitazione dell'autorizzazione s2s o del mirroring impedirà l'inoltro delle richieste del registro dello schema.
- Se è richiesta la trasformazione, il registro degli schemi dell'istanza di destinazione deve essere configurato con regole di ridenominazione degli argomenti prima di effettuare la migrazione.
- Le regole di ridenominazione non possono essere modificate fino al completamento della migrazione. Le modifiche apportate durante la migrazione causano incoerenze tra i registri.
Istruzioni
Le seguenti istruzioni illustrano come utilizzare il mirroring del registro degli schemi per spostare gli schemi tra due istanze.
L'utilità di esportazione non è ancora stata aggiunta alla CLI.
Valori dello schema consentiti
| Valore | Descrizione |
|---|---|
| Le richieste vengono inoltrate dall'istanza di destinazione all'istanza di origine. | |
| Le richieste che richiedono il ruolo IAM Reader sono consentite. Tutti gli altri vengono rifiutati (403). | |
| L'inoltro della richiesta è disattivato. È l'impostazione predefinita. |
Richiesta di esempio
Vedere il seguente esempio di comando CLI:
ibmcloud resource service-instance-update \
"trgt-instance-name" \
-p '{
"mirroring": {
"source_crn": "<src instance crn>",
"source_alias": "source",
"target_alias": "target",
"schemas": "proxied"
}
}'
Trasformazione del nome dell'argomento
I nomi degli argomenti possono essere trasformati durante l'inoltro. Ad esempio, con le giuste regole,old-my-topic potrebbe diventare new-my-topic. Quando è abilitata, l'istanza di origine riconosce solo il nome originale,
mentre l'istanza di destinazione riconosce solo il nuovo nome dell'argomento (trasformato). Tutti i risultati restituiti vengono trasformati di conseguenza.
Se non vengono fornite regole di trasformazione, viene utilizzato use_alias, in linea con il comportamento di mirroring esistente in Event Streams. Per inoltrare senza cambiare i nomi degli argomenti, usare topic_name_transform tipo none.
La trasformazione viene configurata utilizzando i campi di trasformazione esistenti della CLI.
Flusso migratorio
Quando si esegue la migrazione tra due istanze di Event Streams, si suggerisce il seguente flusso.
- Abilitare il mirroring tra due istanze, specificando
schemas: proxied. - Aggiornare le applicazioni per utilizzare il registro dello schema di destinazione.
- Bloccare qualsiasi scrittura nel registro di destinazione passando a
schemas: read-only. Prima di effettuare questa modifica, il mirroring deve essere momentaneamente disattivato. - Esporta tutti gli schemi dell'istanza di origine.
- Importa tutti gli schemi esportati dall'istanza di origine in quella di destinazione. Questo può essere fatto utilizzando la CLI di IBM Cloud®:
ibmcloud [...]. - Disattivare il mirroring.
Esportazione di schemi
Per informazioni più dettagliate, consultare il sito Confluent documentazione.
La CLI di Event Streams richiede che le importazioni di schemi abbiano un valore v1 exportVersion.
-
Scaricate il codice sorgente più recente di
v2.x.x, ad esempio https://github.com/Apicurio/apicurio-registry/archive/refs/tags/2.6.13.Final.zip. -
Creare il client di esportazione:
mvn -pl utils/exportConfluent -am -DskipTests -Pprod package. -
Eseguire l'esportatore (salva l'output su confluent-schema-registry-export.zip ):
java -jar utils/exportConfluent/target/apicurio-registry-utils-exportConfluent-2.6.13.Final.jar \ "https://token:<password>@<my-event-streams-instance.com>/confluent" \ --client-props basic.auth.credentials.source=URL
Importazione di schemi
Gli schemi possono essere importati tramite la CLI di Event Streams.
-
Assicurarsi di aver installato il plugin
event-streams[es]:ibmcloud plugin list. -
Accedi a IBM Cloud®:
ibmcloud login [...]. -
Inizializzare l'istanza di Event Streams in cui si desidera importare:
ibmcloud es init. -
Importare lo schema:
ibmcloud es schema-import \ -f confluent-schema-registry-export.zip
Convalida
Puoi ottenere le informazioni sull'istanza del servizio corrente immettendo il seguente comando:
ibmcloud resource service-instance "Event Streams resource instance name" --output=json
Esamina la sezione ultima operazione dell'output. Le informazioni vengono continuamente aggiornate man mano che l'aggiornamento procede. Al termine del processo di abilitazione del mirroring, le informazioni sull'ultima operazione indicano se l'aggiornamento è riuscito o la sincronizzazione è riuscita.
"last_operation": {
"type": "update",
"state": "in progress",
"description": "Update in progress.",
"updated_at": null,
"cancelable": false
}
Eseguire nuovamente il comando fino a quando l'esito positivo non viene indicato come segue:
"last_operation": {
"type": "update",
"state": "succeeded",
"description": "Update succeeded.",
"updated_at": null,
"cancelable": false
}
Il dashboard IBM Cloud Monitoring Event Streams Mirroring mostra lo stato del mirroring.