GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come impostare la replica CouchDB su Ubuntu 16.04

Nell'articolo di oggi, imposteremo la replica CouchDB su Ubuntu 16.04. CouchDB è un database NoSQL molto simile a cassandra. Piuttosto che Java di Cassandra, CouchDB è scritto in Erlang ed è un progetto Apache Software Foundation dal 2008. Questo database è orientato ai documenti, non diversamente da MongoDB. Per questo tutorial, hai bisogno di due nodi che eseguono Ubuntu 16.04 Server. Userò le istanze KVM nel mio laptop, puoi utilizzare VM o macchine fisiche. Allora iniziamo.

Installazione e CouchDB sul nodo Ubuntu

Per prima cosa aggiorniamo l'elenco delle fonti

sudo apt update

Successivamente installiamo il pacchetto software-properties-common che ci consente di aggiungere repository PPA. Forse è incluso per impostazione predefinita, ma in caso contrario, è necessario eseguire questo comando

sudo apt install software-properties-common

Successivamente aggiungiamo il repository per couchdb da dove installeremo il software del database

sudo add-apt-repository ppa:couchdb/stable

Quindi possiamo installare couchdb con un semplice comando:

sudo apt-get install couchdb

Dopo che questo comando è stato eseguito, couchdb è installato e verrà eseguito sulla porta 5984, possiamo usare curl per ottenere informazioni sul database

curl localhost:5984

Come vediamo, funziona già.

Come creare ed eliminare database

Couchdb viene manipolato tramite richieste http. Quando vuoi fare qualcosa, fai una richiesta su localhost sulla porta predefinita su cui gira CouchDB. Questa è la porta 5984. Per motivi di sicurezza, puoi farlo solo su localhost, sulla macchina su cui è in esecuzione couchdb.

Aggiungiamo il database:

miki@ubuntu-1:~$ curl -X PUT localhost:5984/new_database
{"ok":true}

Elenchiamo ora tutti i database sul sistema:

miki@ubuntu-1:~$ curl -X GET http://127.0.0.1:5984/_all_dbs
["_replicator","_users","new_database"]

I primi due sono lì per impostazione predefinita, new_database è ciò che abbiamo creato. Allora cancelliamolo. La cancellazione dei database viene eseguita con il seguente comando

miki@ubuntu-1:~$ curl -X DELETE http://127.0.0.1:5984/new_database
{"ok":true}

Ora esegui di nuovo il secondo comando

miki@ubuntu-1:~$ curl -X GET http://127.0.0.1:5984/_all_dbs
["_replicator","_users"]

Vediamo che manca il new_database, poiché l'abbiamo eliminato.

Futon:la GUI di CouchDB

Se visiti http://localhost:5984/_utils con il tuo browser troverai il Futon. Futon è il front-end della GUI di CouchDB. Ma come accennato, CouchDB per motivi di sicurezza abilita solo l'amministrazione da localhost, il che significa dal server che hai installato CouchDB. Non è possibile digitare l'indirizzo IP del server invece di localhost. Quindi, se vuoi amministrare il tuo server dal tuo laptop, dovremmo usare un piccolo trucco. Avremmo bisogno di creare un tunnel ssh sul server, creare una mini VPN e far pensare al tuo server che la richiesta provenga da localhost. Per farlo, sul tuo computer locale, digita il seguente comando:

miki@ThinkPad-X220T:~$ ssh -L5984:127.0.0.1:5984 [email protected]

Questo creerà il tunnel di cui abbiamo bisogno, quindi puoi avviare il browser e accedere a http://localhost:5984/_utils/index.html

Ti darà l'interfaccia utente simile a questa

Poiché replicheremo un database nel prossimo capitolo, dobbiamo impostare il nostro database di destinazione per accettare la replica da posizioni diverse da localhost. Questo può essere impostato nel parametro bind_address nella pagina di configurazione di Futon. Deve essere impostato su 0.0.0.0 per ascoltare su tutti gli IP anziché solo su localhost. Qualcosa del genere:

Puoi farlo su entrambi i tuoi nodi (dovresti creare un nuovo tunnel ssh per altri nodi) ma generalmente solo la destinazione in cui viene creata la replica deve essere in ascolto su tutti gli indirizzi IP. La sorgente può continuare ad ascoltare solo localhost.

Replica un database in locale

La replica di un database, come tutto il resto in CoucdDB, viene eseguita anche tramite richiesta HTTP. È necessario specificare il database di origine e di destinazione. La destinazione può essere un database locale o remoto. Poiché abbiamo già impostato Ubuntu-1 in ascolto su tutti gli IP, creiamo un db che replicheremo sull'host Ubuntu-2.

miki@ubuntu-2:~$ curl -X PUT localhost:5984/db-replica
{"ok":true}

Ora vediamo come possiamo replicare questo database localmente. Sullo stesso server

curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://localhost:5984/db-replica", "target": "http://localhost:5984/foo", "create_target": true, "continuous": true} '
{"ok":true,"_local_id":"f8fa7b615b4e951d7ab7254ed58d049d+continuous+create_target"}

Questo comando dovrebbe creare un database foo sull'host locale e come sorgente dovrebbe prendere il database db-replica che abbiamo già creato in precedenza. Abbiamo abilitato anche l'opzione continua, il che significa che il database verrà sincronizzato periodicamente quando si apportano modifiche al database di origine, che in questo caso è db-replica. Dopo aver eseguito questo comando, controlliamo tutti i database disponibili

miki@ubuntu-2:~$ curl -X GET localhost:5984/_all_dbs

["_replicator","_users","db-replica","foo"]

Il database foo è stato creato.

Replica remota

Proviamo ora a farlo in remoto, la nostra fonte è di nuovo db-replica sul server Ubuntu-2 e il nostro obiettivo sarà remoto sul nostro server Ubuntu-1. Creerà un nuovo database se non presente (parametro create_target) e sincronizzerà la replica continuamente per tutte le modifiche man mano che si verificano.

miki@ubuntu-2:~$ curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://localhost:5984/db-replica", "target": "http://192.168.122.223:5984/remotefoo", "create_target": true, "continuous": true} '
{"ok":true,"_local_id":"cf7f6399835a893ab48282cb269eb1ab+continuous+create_target"}

Controlliamo i dbs nel server Ubuntu-1

miki@ubuntu-1:~$ curl -X GET localhost:5984/_all_dbs
["_replicator","_users","dbtest","remotefoo"]

Possiamo vedere come funziona la replica remota. Nel caso in cui si desideri una replica una tantum, è necessario modificare il parametro continuo in false o semplicemente ometterlo. Se vuoi vedere i registri di couchDB , puoi trovarlo nella directory /var/log/couchdb/couch.log. Avresti bisogno dei privilegi sudo o root per accedervi e se vuoi guardare i log in modo interattivo, questo comando lo farà

sudo tail -f /var/log/couchdb/couch.log

Conclusione

Abbiamo esaminato i comandi di base e l'utilizzo di CouchDB. La creazione di un nuovo database, l'eliminazione, la replica in locale o in rete avvengono tutte tramite richieste HTTP e possono essere codificate nella tua app. Il controllo dei registri viene eseguito dal normale comando tail -f e, quando è necessaria la GUI, abbiamo Futon, che è abbastanza intuitivo da aiutarti a svolgere tutte le attività che non ti senti abbastanza a tuo agio per eseguire nella riga di comando. Questo è tutto per questo articolo, grazie per la lettura e buona giornata.


Ubuntu
  1. Come configurare HAProxy in Ubuntu 16.04

  2. Come configurare UFW Firewall su Ubuntu 18.04

  3. Come configurare Elasticsearch su Ubuntu 18.04 e 16.04 LTS

  4. Imposta il server Rsyslog su Ubuntu 20.04 - Come farlo?

  5. Come installare CouchDB su Ubuntu 20.04

Come configurare Git Server su Ubuntu 20.04

Come configurare il server Rsyslog su Ubuntu

Come configurare il server DHCP su Ubuntu

Come impostare il legame di rete in Ubuntu 20.04

Come installare Apache CouchDB in Ubuntu 20.04

Come configurare UFW Firewall su Ubuntu 20.04