LINUX

Cómo configurar la replicación de CouchDB en Ubuntu 16.04

En el artículo de hoy, configuraremos la replicación de CouchDB en Ubuntu 16.04. CouchDB es una base de datos NoSQL muy similar a cassandra. En lugar de Java de Cassandra, CouchDB se escribe Erlang y es un proyecto de Apache Software Foundation desde 2008. Esta base de datos está orientada a documentos, no muy diferente de MongoDB. Para este tutorial, necesita dos nodos que ejecuten Ubuntu 16.04 Server. Usaré instancias de KVM en mi computadora portátil, puede usar máquinas virtuales o físicas. Así que comencemos.

Instalación y CouchDB en el nodo Ubuntu

Primero actualice la lista de fuentes

sudo apt update

A continuación, instalamos el paquete software-properties-common que nos permite agregar repositorios PPA. Es posible que esté incluido de forma predeterminada, pero si no lo está, debe ejecutar este comando

sudo apt install software-properties-common

A continuación agregamos un repositorio para couchdb desde donde instalaremos el software de la base de datos

sudo add-apt-repository ppa:couchdb/stable

Entonces podemos instalar couchdb con un comando simple:

sudo apt-get install couchdb

Después de que se ejecute este comando, couchdb está instalado y lo ejecutaremos en el puerto 5984, podemos usar curl para obtener información sobre la base de datos.

curl localhost:5984

curl-localhost-5984

Como vemos, ya funciona.

Cómo crear y eliminar una base de datos

Couchdb se manipula a través de solicitudes http. Cuando desea que se haga algo, realiza una solicitud en localhost en el puerto predeterminado en el que se ejecuta CouchDB. Ese es el puerto 5984. Por razones de seguridad, solo puede hacer esto en localhost, en la máquina donde se está ejecutando couchdb.

Agreguemos la base de datos:

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

Ahora enumeremos todas las bases de datos del sistema:

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

Los dos primeros están ahí de forma predeterminada, new_database es lo que creamos. Entonces eliminémoslo. La eliminación de bases de datos se realiza con el siguiente comando

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

Ahora ejecutando el segundo comando nuevamente

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

Vemos que falta new_database, ya que la borramos.

Futon – la GUI de CouchDB

Si tú visitas http://localhost:5984/_utils con su navegador, encontrará el Futon. Futon es la interfaz gráfica de usuario de CouchDB. Pero como se mencionó, CouchDB por razones de seguridad solo permite administrar desde localhost, lo que significa desde el servidor que instaló CouchDB. No puede escribir la dirección IP del servidor en lugar de localhost. Entonces, si desea administrar su servidor desde su computadora portátil, necesitaríamos usar un pequeño truco. Necesitaríamos hacer un túnel ssh al servidor, hacer una mini VPN y hacer que su servidor piense que la solicitud proviene de localhost. Para hacer eso, en su computadora local, escriba el siguiente comando:

miki@ThinkPad-X220T:~$ ssh -L5984:127.0.0.1:5984 miki@192.168.122.223

Esto creará el túnel que necesitamos y, a continuación, puede iniciar su navegador y navegar a http://localhost:5984/_utils/index.html

Le dará una interfaz de usuario similar a esta

sofá-futón

Como vamos a replicar una base de datos en el próximo capítulo, necesitamos configurar nuestra base de datos de destino para aceptar réplicas de ubicaciones distintas a localhost. Esto se puede configurar en el parámetro bind_address en la página de configuración de Futon. Debe configurarse para 0.0.0.0 para escuchar en todas las direcciones IP en lugar de solo en localhost. Algo como esto:

bind-address

Puede hacer esto en ambos nodos (necesitaría crear un nuevo túnel ssh para otros nodos) pero generalmente solo el destino donde se realiza la réplica necesita escuchar en todas las direcciones IP. La fuente puede seguir escuchando solo localhost.

Replicar una base de datos localmente

La replicación de una base de datos, como todo lo demás en CoucdDB, también se realiza mediante una solicitud HTTP. Debe especificar la base de datos de origen y de destino. El destino puede ser una base de datos local o remota. Como ya configuramos ubuntu-1 listen to all ip, creemos una base de datos que replicaremos en ubuntu-2 host.

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

Ahora veamos cómo podemos replicar esta base de datos localmente. En el mismo servidor

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"}

Este comando debería crear una base de datos foo en el host local, y como fuente debería tomar la base de datos db-replica que ya creamos anteriormente. También habilitamos la opción continua, lo que significa que la base de datos se sincronizará periódicamente cuando realice cambios en la base de datos de origen, que en este caso es db-replica. Después de ejecutar este comando, verifiquemos todas las bases de datos disponibles.

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

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

Se ha creado la base de datos foo.

Replicación remota

Intentemos ahora hacerlo de forma remota, nuestra fuente es nuevamente db-replica en el servidor ubuntu-2, y nuestro objetivo será remoto en nuestro servidor ubuntu-1. Creará una nueva base de datos si no está presente (parámetro create_target) y sincronizará la réplica continuamente para todos los cambios a medida que ocurran.

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"}

Vamos a comprobar la base de datos en el servidor ubuntu-1

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

Podemos ver cómo funciona la replicación remota. En caso de que desee una replicación única, deberá cambiar el parámetro continuo a falso o simplemente omitirlo. Si quieres ver registros de couchDB, puede encontrarlo en el directorio /var/log/couchdb/couch.log. Necesitaría privilegios de sudo o root para acceder a él, y si desea ver los registros de forma interactiva, este comando lo hará

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

Conclusión

Hemos revisado los comandos básicos y el uso de CouchDB. La creación de una nueva base de datos, la eliminación, la replicación localmente o en la red se realizan mediante solicitudes HTTP y se pueden codificar en su aplicación. La verificación de los registros se realiza mediante el comando tail -f normal, y cuando se necesita GUI, tenemos Futon, que es lo suficientemente intuitivo como para ayudarlo a realizar todas las tareas con las que no se siente lo suficientemente cómodo para hacer en la línea de comandos. Eso es todo por este artículo, gracias por leer y buen día.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar