OwnCloud en Alta Disponibilidad.

  • 5

OwnCloud en Alta Disponibilidad.

INSTALACION DE OWNCLOUD EN ALTA DISPONIBILIDAD

Lo que vamos a hacer a continuación es crear una alta disponibilidad para Owncloud. Owncloud es un sistema de almacenamiento y aplicaciones en línea.

nuestro objetivo es lograr un paridad y disponibilidad que sean transparentes para el usuario. Para empezar lo que hemos hecho es crear dos máquinas virtuales de unas 300 GB cada una para para tener un espacio de almacenamiento grande. Nuestras máquinas se encuentran en redes distintas con un direccionamiento IP distintos.

El primero paso que debemos de hacer es lograr que las máquinas tengan conexión entre ellas, para ello la solución que hemos dado es que ambas estén en la misma VPN.

Cluster de MariaDB

Una vez que tengamos las dos máquinas virtuales metidas en la VPN vamos a proceder a instalar MariaDB en los servidores que vamos a utilizar, las bases de datos se replicarán.

Ahora nos vamos al primero servidor y añadimos los siguientes repositorios:

#apt-get install software-properties-common
#apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
#add-apt-repository 'deb [arch=amd64,i386] http://tedeco.fi.upm.es/mirror/mariadb/repo/10.0/debian jessie main'
#apt update

A continuación instalamos Galera con el siguiente comando en todos los servidores que tengamos para la alta disponibilidad, en este caso 2:

#apt install rsync galera mariadb-galera-server

Una vez instalado procederemos a crear el cluster de Galera con MariaDB, para eso debemos de crear el fichero “galera.cnf” en “/etc/mysql/conf.d/” y añadimos las siguiente configuración en cada uno de los nodos:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="avengers" 
wsrep_cluster_address="gcomm://10.100.0.10,10.100.0.20" 
wsrep_sst_method=rsync
wsrep_node_address="10.100.0.10"#

Donde pone “bind-addres” hemos puesto la dirección de la VPN, también está la opción de poner la dirección “0.0.0.0” para que permita todas las conexiones de la máquina.

Ahora vamos a proceder a para MySQL en todos los nodos ejecutando el siguiente comando:

# systemctl stop mysql

Una vez hecho esto debemos de tener especial cuidado en el siguiente paso, ya que debemos tener un archivo exactamente igual en todos los nodos, replicando el que más nos interese en todos los demás, que sea el cual vayamos a empezar el cluster. El fichero de configuración al que nos referimos en este caso es “/etc/mysql/debian.cnf”.

Hechos esto procedemos a arrancar el cluster. Para ellos empleamos el siguiente comando solo en un nodo:

# /etc/init.d/mysql start --wsrep_new_cluster  --wsrep-cluster-address="gcomm://10.100.0.10,10.100.0.20"

Después, en los otros nodos arrancamos mysql

# systemctl start mysql

Y en el primer nodo, debemos “apagar” mysql y volverlo a encender con systemd:

#/etc/init.d/mysql stop
#systemctl start mysql

Esta ultima parte de arrancar el cluster habrá que hacerla siempre que se caigan todos los nodos y queramos volver a arrancar el cluster. Es muy importante hacer el “–wsrep_new_cluster” solo en una máquina y solo cuando sea necesario porque no haya ningún otro nodo arrancado, ya que si no, tendríamos una bifurcación

GlusterFS

A continuación lo que vamos a hacer es isntalar GlusterFS, que no aportará la replicación de ficheros entre los servidores, de manera todo lo que se guarde en un servidor se replicará en los otros.

En primer lugar lo que debemos de hacer es instalar en este caso en los dos nodos que usamos el paquete “glusterfs-server”:

#apt install glusterfs-server

Una vez instalado, creamos la carpeta que se replicará entre los nodos:

#mkdir /gluster

Luego nos vamos a “/etc/glusterfs/glusterfsd.vol” y pegamos el siguiente contenido. Esto hay que hacerlo en ambos nodos:

volume posix
  type storage/posix
  option directory /gluster
end-volume

volume locks
  type features/posix-locks
  subvolumes posix
end-volume

volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume

volume server
  type protocol/server
  option transport-type tcp
  subvolumes brick
  option auth.addr.brick.allow *
end-volume

volume posix
  type storage/posix
  option directory /gluster
end-volume

volume locks
  type features/posix-locks
  subvolumes posix
end-volume

volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume

volume server
  type protocol/server
  option transport-type tcp
  subvolumes brick
  option auth.addr.brick.allow *
end-volume

Una vez hayamos creado el archivo lo que debemos de hacer es reiniciar el servicio:

#service glusterfs-server restart

Para el siguiente paso debemos crear el fichero “/etc/glusterfs/glusterfs.vol”:

volume node1         
  type protocol/client         
  option transport-­type tcp         
  option remote­host 10.100.0.10     
  option remote­-subvolume brick 
end­-volume

volume node2         
  type protocol/client         
  option transport-­type tcp         
  option remote­host 10.100.0.20     
  option remote­-subvolume brick 
end­-volume

volume replicated_storage
  type cluster/replicate
  subvolumes node1 node2
end­-volume

Luego por seguridad reiniciamos el servicio de Gluster como hemos hecho anteriormente.

Para probar que funciona y se conectan ejecutamos desde el nodo1 el siguiente comando con la dirección IP del nodo2:

# gluster peer probe 10.100.0.20
peer probe: success. 

Ahora crearemos el volumen que sera el que se replique. Debemos ejecutar el siguiente comando solo en una maquina y automáticamente se pondrá en la otra:

#gluster volume create owncloud replica 2 transport tcp 10.100.0.10:/gluster 10.100.0.20:/gluster force

Después arrancamos el volumen que hemos creado anteriormente, solo hace falta hacerlo en una máquina:

# gluster volume start owncloud
volume start: owncloud: success

Para tener exito tuvimos que parar el volumen y volverlo a arrancar

# gluster volume stop owncloud
# gluster volume start owncloud

Por último con Gluster lo que vamos a hacer es montar los volúmenes en ambas máquinas de la siguiente forma:

#mount localhost:owncloud /var/www/html/ -t glusterfs

Ya tenemos toda preparado y lo único que quedaría, seria instalar ownCloud de manera habitual en una máquina y automáticamente se hará en la otra.

Manuel Jesús Begines González y Gabriel Amador Garcia.