GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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 está escrito en 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 KVM en mi computadora portátil, puede usar VM o máquinas físicas. Así que comencemos.

Instalación y CouchDB en el nodo de Ubuntu

Primero actualicemos 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

Luego agregamos el repositorio para couchdb desde donde instalaremos el software de la base de datos

sudo add-apt-repository ppa:couchdb/stable

Luego podemos instalar couchdb con un comando simple:

sudo apt-get install couchdb

Después de ejecutar este comando, se instala couchdb y lo ejecutaremos en el puerto 5984. ¿Podemos usar curl para obtener información sobre la base de datos?

curl localhost:5984

Como vemos, ya se ejecuta.

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}

Hagamos ahora una lista de 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í por defecto, 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 ejecuta el segundo comando de nuevo

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

Vemos que falta la nueva_base de datos, ya que la eliminamos.

Futon:la GUI de CouchDB

Si visita http://localhost:5984/_utils con tu navegador, encontrarás el Futón. Futon es la interfaz gráfica de usuario de CouchDB. Pero como se mencionó, CouchDB por razones de seguridad solo permite la administración desde localhost, lo que significa que 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 hacerlo, en su computadora local, escriba el siguiente comando:

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

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

Le dará una interfaz de usuario similar a esta

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

Puede hacer esto en ambos nodos (necesitaría crear un nuevo túnel ssh para otros nodos), pero generalmente solo el objetivo donde se realiza la réplica necesita escuchar en todas las direcciones IP. La fuente puede continuar 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. Dado que ya configuramos ubuntu-1 para escuchar todas las ip, creemos una base de datos que replicaremos en el host ubuntu-2.

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

Comprobemos los dbs 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 solo desee una replicación única, deberá cambiar el parámetro continuo a falso o simplemente omitirlo. Si desea ver los 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 repasado 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 para su aplicación. La verificación de registros se realiza mediante el comando normal tail -f, y cuando se necesita GUI, tenemos Futon, que es lo suficientemente intuitivo como para ayudarlo a realizar todas las tareas 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 buenos días.


Ubuntu
  1. Cómo configurar HAProxy en Ubuntu 16.04

  2. Cómo configurar el cortafuegos UFW en Ubuntu 18.04

  3. Cómo configurar Elasticsearch en Ubuntu 18.04 y 16.04 LTS

  4. Configurar el servidor Rsyslog en Ubuntu 20.04 - ¿Cómo hacerlo?

  5. Cómo instalar CouchDB en Ubuntu 20.04

Cómo configurar el servidor Git en Ubuntu 20.04

Cómo configurar el servidor Rsyslog en Ubuntu

Cómo configurar el servidor DHCP en Ubuntu

Cómo configurar la vinculación de red en Ubuntu 20.04

Cómo instalar Apache CouchDB en Ubuntu 20.04

Cómo configurar el cortafuegos UFW en Ubuntu 20.04