Configurare la replica di cluster Apache HBase nelle reti virtuali di Azure
Informazioni su come configurare la replica Apache HBase in una rete virtuale o tra due reti virtuali in Azure.
La replica di cluster usa una metodologia con push dell'origine. Un cluster HBase può essere un'origine o una destinazione o può soddisfare entrambi i ruoli in una sola volta. La replica è asincrona. L'obiettivo della replica è la coerenza finale. Quando l'origine riceve una modifica a una famiglia di colonne con la replica abilitata, tale modifica viene propagata in tutti i cluster di destinazione. Quando i dati vengono replicati da un cluster a un altro, il cluster di origine e tutti i cluster che hanno già utilizzato i dati rilevati, per impedire i cicli di replica.
In questo articolo viene configurata una replica di destinazione di origine. Per altre topologie di cluster, vedere la guida di riferimento di Apache HBase.
Di seguito sono illustrati i casi d'uso della replica HBase per una singola rete virtuale:
- Bilanciamento del carico. È ad esempio possibile eseguire analisi o processi MapReduce nel cluster di destinazione e inserire i dati nel cluster di origine.
- Aggiunta della disponibilità elevata.
- Migrazione dei dati da un cluster HBase a un altro.
- Aggiornamento di un cluster Azure HDInsight da una versione a un'altra.
Di seguito sono illustrati i casi d'uso della replica HBase per due reti virtuali:
- Configurazione del ripristino di emergenza.
- Bilanciamento del carico e partizionamento dell'applicazione.
- Aggiunta della disponibilità elevata.
È possibile replicare i cluster tramite gli script di azione script di GitHub.
Prerequisiti
Prima di iniziare questo articolo, è necessario avere una sottoscrizione di Azure. Vedere Get an Azure free trial (Ottenere una versione di valutazione gratuita di Azure).
Configurare gli ambienti
Sono disponibili tre opzioni di configurazione:
- Due cluster Apache HBase in una rete virtuale di Azure.
- Due cluster Apache HBase in due reti virtuali diverse nella stessa area.
- Due cluster Apache HBase in due reti virtuali diverse in due aree diverse (replica geografica).
Questo articolo illustra lo scenario di replica geografica.
Per semplificare la configurazione degli ambienti, sono disponibili alcuni modelli di Azure Resource Manager. Se si preferisce configurare gli ambienti con altri metodi, vedere:
Configurare due reti virtuali in due aree diverse
Per usare un modello che riesca a creare due reti virtuali in due aree diverse e la connessione VPN tra le reti virtuali, selezionare il pulsante seguente Implementa in Azure.
Alcuni valori hardcoded nel modello:
Rete virtuale 1
Proprietà | valore |
---|---|
Ufficio | Stati Uniti occidentali |
Nome della rete virtuale | <ClusterNamePrevix-vnet1> |
Prefisso dello spazio degli indirizzi | 10.1.0.0/16 |
Nome subnet | subnet 1 |
Prefisso della subnet | 10.1.0.0/24 |
Nome della subnet (gateway) | GatewaySubnet (non può essere modificato) |
Prefisso della subnet (gateway) | 10.1.255.0/27 |
Nome del gateway | vnet1gw |
Tipo di gateway | VPN |
Tipo di gateway VPN | RouteBased |
SKU del gateway | Di base |
IP del gateway | vnet1gwip |
VNet 2
Proprietà | valore |
---|---|
Ufficio | Stati Uniti orientali |
Nome della rete virtuale | <ClusterNamePrevix-vnet2> |
Prefisso dello spazio degli indirizzi | 10.2.0.0/16 |
Nome della subnet | subnet 1 |
Prefisso della subnet | 10.2.0.0/24 |
Nome della subnet (gateway) | GatewaySubnet (non può essere modificato) |
Prefisso della subnet (gateway) | 10.2.255.0/27 |
Nome del gateway | vnet2gw |
Tipo di gateway | VPN |
Tipo di gateway VPN | RouteBased |
SKU del gateway | Di base |
IP del gateway | vnet1gwip |
In alternativa, seguire questa procedura per configurare due reti virtuali e macchine virtuali diverse manualmente
- Creare due reti virtuali (Rete virtuale) in un'area diversa
- Abilitare il peering in entrambe le reti virtuali. Passare a Rete virtuale creata nei passaggi precedenti, quindi fare clic sul peering e aggiungere il collegamento peering di un'altra area. Eseguire questa operazione per entrambe le reti virtuali.
- Creare la versione più recente di UBUNTU in ogni rete virtuale.
Configurare il DNS
Nella sezione precedente il modello crea una macchina virtuale Ubuntu in ognuna delle due reti virtuali. In questa sezione si installa Bind nelle due macchine virtuali DNS e quindi si configura l'inoltro DNS nelle due macchine virtuali.
Per installare Bind, è necessario trovare l'indirizzo IP pubblico delle due macchine virtuali DNS.
- Apri il portale di Azure.
- Aprire la macchina virtuale DNS selezionando Gruppi di risorse > [nome gruppo di risorse] > [vnet1DNS]. Il nome del gruppo di risorse è quello creato nella procedura precedente. I nomi di macchina virtuale DNS predefiniti sono vnet1DNS e vnet2NDS.
- Selezionare Proprietà per aprire la pagina delle proprietà della rete virtuale.
- Annotare l'Indirizzo IP pubblico e verificare inoltre l'Indirizzo IP privato. L'indirizzo IP privato deve essere 10.1.0.4 per vnet1DNS e 10.2.0.4 per vnet2DNS.
- Modificare i server DNS in modo che entrambe le reti virtuali usino i server DNS predefiniti (forniti da Azure) per consentire l'accesso in ingresso e in uscita ai pacchetti di download per poter installare Bind con i passaggi seguenti.
Per installare Bind, usare la procedura seguente:
Usare SSH per connettersi all'indirizzo IP pubblico della macchina virtuale DNS. L'esempio seguente consente la connessione a una macchina virtuale all'indirizzo 40.68.254.142:
ssh sshuser@40.68.254.142
Sostituire
sshuser
con l'account utente SSH specificato durante la creazione della macchina virtuale DNS.Nota
È possibile ottenere l'utilità
ssh
in diversi modi. In Linux, Unix e macOS, viene fornito come parte del sistema operativo. Se si usa Windows, prendere in considerazione una delle opzioni seguenti:Per installare Bind, usare i comandi seguenti dalla sessione SSH:
sudo apt-get update -y sudo apt-get install bind9 -y
Configurare Bind per inoltrare le richieste di risoluzione dei nomi al server DNS locale. A questo scopo, usare il testo seguente come contenuto del file
/etc/bind/named.conf.options
:acl goodclients { 10.1.0.0/16; # Replace with the IP address range of the virtual network 1 10.2.0.0/16; # Replace with the IP address range of the virtual network 2 localhost; localhost; }; options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; forwarders { 168.63.129.16; #This is the Azure DNS server }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
Importante
Sostituire i valori nella sezione
goodclients
con l'intervallo di indirizzi IP delle due reti virtuali. Questa sezione definisce gli indirizzi da cui il server DNS accetta le richieste.Per modificare questo file, usare il comando seguente:
sudo nano /etc/bind/named.conf.options
Per salvare il file, usare CTRL+X, Y e quindi INVIO.
Dalla sessione SSH usare il comando seguente:
hostname -f
Il comando restituisce un valore simile al testo seguente:
vnet1DNS.icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
Il testo
icb0d0thtw0ebifqt0g1jycdxd.ex.internal.cloudapp.net
è il suffisso DNS per la rete virtuale. Salvare questo valore, perché verrà usato in un secondo momento.È inoltre necessario individuare il suffisso DNS dell'altro server DNS, perché sarà necessario nel passaggio successivo.
Per configurare Bind per la risoluzione dei nomi DNS per le risorse nella rete virtuale, usare il testo seguente come contenuto del file
/etc/bind/named.conf.local
:// Replace the following with the DNS suffix for your virtual network zone "v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net" { type forward; forwarders {10.2.0.4;}; # The Azure recursive resolver };
Importante
È necessario sostituire
v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
con il suffisso DNS dell'altra rete virtuale. Inoltre, l'indirizzo IP della riga forwarders è l'indirizzo IP privato del server DNS nell'altra rete virtuale.Per modificare questo file, usare il comando seguente:
sudo nano /etc/bind/named.conf.local
Per salvare il file, usare CTRL+X, Y e quindi INVIO.
Per avviare Bind, usare il comando seguente:
sudo service bind9 restart
Per verificare che Bind riesca a risolvere i nomi delle risorse nell'altra rete virtuale, usare i comandi seguenti:
sudo apt install dnsutils nslookup vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
Importante
Sostituire
vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net
con il nome di dominio completo (FQDN) della macchina virtuale DNS nell'altra rete.Sostituire
10.2.0.4
con l'indirizzo IP interno del server DNS personalizzato nell'altra rete virtuale.La risposta visualizzata sarà simile al testo seguente:
Server: 10.2.0.4 Address: 10.2.0.4#53 Non-authoritative answer: Name: vnet2dns.v5ant3az2hbe1edzthhvwwkcse.bx.internal.cloudapp.net Address: 10.2.0.4
Fino ad ora, non è possibile cercare l'indirizzo IP dall'altra rete senza l'indirizzo IP del server DNS specificato.
Configurare la rete virtuale per usare il server DNS personalizzato
Per configurare la rete virtuale per usare il server DNS personalizzato invece del resolver ricorsivo di Azure, seguire questa procedura:
Nel portale di Azure selezionare la rete virtuale e quindi selezionare Server DNS.
Selezionare Personalizzato e immettere l'indirizzo IP interno del server DNS personalizzato. Infine, selezionare Salva.
Aprire la macchina virtuale del server DNS in vnet1 e fare clic su Riavvia. È necessario riavviare tutte le macchine virtuali nella rete virtuale per rendere effettiva la configurazione DNS.
Ripetere i passaggi di configurazione del server DNS personalizzato per vnet2.
Per testare la configurazione DNS, è possibile connettersi alle due macchine virtuali DNS tramite SSH ed eseguire il ping del server DNS dell'altra rete virtuale usando il relativo nome host. Se non funziona, usare il comando seguente per controllare lo stato del servizio DNS:
sudo service bind9 status
Creare i cluster Apache HBase
Creare un cluster Apache HBase in ognuna delle due reti virtuali con la configurazione seguente:
- Nome gruppo di risorse: usare lo stesso nome di gruppo di risorse creato per le reti virtuali.
- Tipo di cluster: HBase
- Versione: HBase 1.1.2 (HDI 3.6)
- Località: usare la stessa località della rete virtuale. Per impostazione predefinita, vnet1 è Stati Uniti occidentali e vnet2 è Stati Uniti orientali.
- Archiviazione: creare un nuovo account di archiviazione per il cluster.
- Rete virtuale (da Impostazioni avanzate sul portale): selezionare la vnet1 creata nella procedura precedente.
- Subnet: il nome predefinito usato nel modello è subnet1.
Per verificare che l'ambiente sia configurato correttamente, provare a effettuare il ping dell'FQDN del nodo head tra i due cluster.
Dati del test di carico
Quando si esegue la replica di un cluster, è necessario specificare le tabelle da replicare. In questa sezione, alcuni dati verranno caricati nel cluster di origine. Nella sezione successiva si abiliterà la replica tra i due cluster.
Per creare una tabella Contatti e inserire alcuni dati nella tabella, seguire le istruzioni in Esercitazione su Apache HBase: Iniziare a usare un esempio di Apache HBase in HDInsight.
Nota
Se si vuole replicare le tabelle da uno spazio dei nomi personalizzato, è necessario assicurarsi che anche nel cluster di destinazione siano definiti gli spazi dei nomi personalizzati appropriati.
Abilitare la replica
La procedura seguente illustra come chiamare lo script di azione script dal portale di Azure. Per informazioni su come eseguire un'azione script tramite Azure PowerShell e l'interfaccia della riga di comando classica di Azure, vedere Personalizzare i cluster HdInsight usando l'azione script.
Per abilitare la replica di HBase dal portale di Azure
Accedere al portale di Azure.
Aprire il cluster HBase di origine.
Dal menu del cluster scegliere Azioni script.
Nella parte superiore della pagina selezionare Invia nuova.
Selezionare o immettere le seguenti informazioni:
- Nome: immettere Abilitazione replica.
- URL dello script Bash: Immettere https://raw.githubusercontent.com/Azure/hbase-utils/master/replication/hdi_enable_replication.sh.
- Head: assicurarsi che questo parametro sia selezionato. Deselezionare gli altri tipi di nodo.
- Parametri: i parametri di esempio seguenti abilitano la replica per tutte le tabelle esistenti e quindi copiano tutti i dati dal cluster di origine al cluster di destinazione:
-m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -copydata
Nota
Usare il nome host invece di FQDN per il nome DNS del cluster di origine e di destinazione.
Questa procedura dettagliata presuppone hn1 come nodo head attivo. Controllare il cluster per identificare il nodo head attivo.
Seleziona Crea. L'esecuzione dello script può richiedere tempo, in particolare se si usa l'argomento -copydata.
Argomenti obbligatori:
Nome | Descrizione |
---|---|
-s, --src-cluster | Specifica il nome DNS del cluster HBase di origine. Ad esempio: -s hbsrccluster, --src-cluster=hbsrccluster |
-d, - dst-cluster | Specifica il nome DNS del cluster HBase di destinazione (replica). Ad esempio: -s dsthbcluster, --src-cluster=dsthbcluster |
-sp, --src-ambari-password | Specifica la password amministratore per Ambari nel cluster HBase di origine. |
-dp, --dst-ambari-password | Specificare la password amministratore per Ambari nel cluster HBase di destinazione. |
Argomenti facoltativi:
Nome | Descrizione |
---|---|
-su, --src-ambari-user | Specifica il nome utente amministratore per Ambari nel cluster HBase di origine. Il valore predefinito è admin. |
-du, --dst-ambari-user | Specifica il nome utente amministratore per Ambari nel cluster HBase di destinazione. Il valore predefinito è admin. |
-t, --table-list | Specifica le tabelle da replicare. Ad esempio: --table-list="table1;table2;table3". Se non si specificano tabelle, vengono replicate tutte le tabelle HBase esistenti. |
-m, --machine | Specifica il nodo head in cui viene eseguita l'azione script. Il valore deve essere scelto in base al quale è il nodo head attivo. Usare questa opzione quando si esegue lo script $0 come azione script dal portale di HDInsight o da Azure PowerShell. |
-cp, -copydata | Abilita la migrazione dei dati esistenti nelle tabelle in cui è abilitata la replica. |
-rpm, -replicate-phoenix-meta | Abilita la replica nelle tabelle di sistema Phoenix. Questa opzione deve essere usata con attenzione. È consigliabile ricreare le tabelle di Phoenix nei cluster di replica prima di usare questo script. |
-h, --help | Visualizza informazioni sull'utilizzo. |
La sezione print_usage()
dello script contiene una spiegazione dettagliata dei parametri.
Dopo aver distribuito correttamente l'azione script, è possibile usare SSH per connettersi al cluster HBase di destinazione e verificare che i dati siano stati replicati.
Scenari di replica
L'elenco seguente illustra alcuni casi di utilizzo generale e le relative impostazioni dei parametri:
Abilitare la replica su tutte le tabelle tra i due cluster. Questo scenario non richiede la copia o la migrazione dei dati esistenti nelle tabelle e non usa le tabelle Phoenix. Usare i parametri seguenti:
-m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password>
Abilitare la replica su tabelle specifiche. Per abilitare la replica in table1, table2 e table3, usare i parametri seguenti:
-m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3"
Abilitare la replica in tabelle specifiche e copiare i dati esistenti. Per abilitare la replica in table1, table2 e table3, usare i parametri seguenti:
-m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3" -copydata
Abilitare la replica in tutte le tabelle e replicare i metadati di Phoenix dall'origine alla destinazione. La replica dei metadati phoenix non è perfetta. Usarla con cautela. Usare i parametri seguenti:
-m hn1 -s <source hbase cluster name> -d <destination hbase cluster name> -sp <source cluster Ambari password> -dp <destination cluster Ambari password> -t "table1;table2;table3" -replicate-phoenix-meta
Configurare la replica tra cluster ESP
Prerequisiti
- Entrambi i cluster ESP devono trovarsi nella stessa area di autenticazione (dominio). Controllare la
/etc/krb5.conf
proprietà dell'area di autenticazione predefinita del file per confermare. - L'utente comune deve essere presente chi ha accesso in lettura e scrittura a entrambi i cluster
- Ad esempio, se entrambi i cluster hanno lo stesso utente amministratore del cluster ,ad esempio
admin@abc.example.com
, tale utente può essere usato per eseguire lo script di replica. - Se entrambi i cluster usano lo stesso gruppo di utenti, è possibile aggiungere un nuovo utente o usare un utente esistente dal gruppo.
- Se entrambi i cluster usano un gruppo di utenti diverso, è possibile aggiungere un nuovo utente per entrambi gli utenti esistenti dai gruppi.
- Ad esempio, se entrambi i cluster hanno lo stesso utente amministratore del cluster ,ad esempio
Passaggi per l'esecuzione dello script di replica
Nota
Eseguire la procedura seguente solo se DNS non è in grado di risolvere correttamente il nome host del cluster di destinazione.
- Copiare il mapping ip e nome host dei cluster sink nei nodi del cluster di origine /etc/hosts.
- Copiare il nodo head, il nodo di lavoro e l'host dei nodi ZooKeeper e il mapping IP dal file /etc/hosts del cluster destination(sink).
- Aggiungere il file /etc/hosts del cluster di origine delle voci copiate. Queste voci devono essere aggiunte ai nodi head, ai nodi di lavoro e ai nodi ZooKeeper.
Passaggio 1: Creare il file keytab per l'utente usando ktutil
.
$ ktutil
addent -password -p admin@ABC.EXAMPLE.COM -k 1 -e RC4-HMAC
- Richiedere la password per l'autenticazione, specificare la password utente
wkt /etc/security/keytabs/admin.keytab
Nota
Assicurarsi che il file keytab sia archiviato nella /etc/security/keytabs/
cartella nel <username>.keytab
formato .
Passaggio 2: Eseguire un'azione script con -ku
l'opzione
- Fornire
-ku <username>
nei cluster ESP.
Nome | Descrizione |
---|---|
-ku, --krb-user |
Per i cluster ESP, utente Kerberos comune, che può autenticare cluster di origine e di destinazione |
Copia e migrazione dei dati
Sono disponibili due script di azione script distinti per la copia o la migrazione dei dati dopo aver abilitato la replica:
Script per tabelle di piccole dimensioni (tabelle con dimensioni di pochi gigabyte per cui si prevede che la copia completa richieda meno di un'ora)
Script per tabelle di grandi dimensioni (tabelle per cui si prevede che la copia richieda più di un'ora)
È possibile eseguire la stessa procedura descritta in Abilitare la replica per chiamare l'azione script. Usare i parametri seguenti:
-m hn1 -t <table1:start_timestamp:end_timestamp;table2:start_timestamp:end_timestamp;...> -p <replication_peer> [-everythingTillNow]
La sezione print_usage()
dello script contiene una descrizione dettagliata dei parametri.
Scenari
Copiare tabelle specifiche (test1, test2 e test3) per tutte le righe modificate finora (timestamp corrente):
-m hn1 -t "test1::;test2::;test3::" -p "<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure" -everythingTillNow
Oppure:
-m hn1 -t "test1::;test2::;test3::" --replication-peer="<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure" -everythingTillNow
Copiare tabelle specifiche con un intervallo di tempo specificato:
-m hn1 -t "table1:0:452256397;table2:14141444:452256397" -p "<zookeepername1>;<zookeepername2>;<zookeepername3>:2181:/hbase-unsecure"
Disabilitare la replica
Per disabilitare la replica, usare un altro script di azione script disponibile in GitHub. È possibile eseguire la stessa procedura descritta in Abilitare la replica per chiamare l'azione script. Usare i parametri seguenti:
-m hn1 -s <source hbase cluster name> -sp <source cluster Ambari password> <-all|-t "table1;table2;...">
La sezione print_usage()
dello script contiene una spiegazione dettagliata dei parametri.
Scenari
Disabilitare la replica in tutte le tabelle:
-m hn1 -s <source hbase cluster name> -sp Mypassword\!789 -all
or
--src-cluster=<source hbase cluster name> --dst-cluster=<destination hbase cluster name> --src-ambari-user=<source cluster Ambari user name> --src-ambari-password=<source cluster Ambari password>
Disabilitare la replica in tabelle specifiche (table1, table2 e table3):
-m hn1 -s <source hbase cluster name> -sp <source cluster Ambari password> -t "table1;table2;table3"
Nota
Se si intende eliminare il cluster di destinazione, assicurarsi di rimuoverlo dall'elenco peer del cluster di origine. A tale scopo, eseguire il comando remove_peer '1' nella shell hbase nel cluster di origine. L'errore del cluster di origine potrebbe non funzionare correttamente.
Passaggi successivi
In questo articolo si è appreso come configurare la replica Apache HBase all'interno di una rete virtuale o tra due reti virtuali. Per altre informazioni su HDInsight e Apache HBase, vedere questi articoli: