Mostrando las entradas con la etiqueta Alta disponibilidad. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Alta disponibilidad. Mostrar todas las entradas

domingo, junio 16, 2024

Cómo instalar un cluster de MicroK8s en tres contenedores LXC, instalados en Ubuntu


Introducción

MicroK8s es una plataforma de Kubernetes simplificada que permite implementar y ejecutar aplicaciones en contenedores de forma fácil y rápida. En este artículo, se describe cómo instalar un cluster de MicroK8s en tres contenedores LXC, instalados en Ubuntu.

Requisitos previos

  • Una máquina con Ubuntu y LXC instalado
  • Conocimiento básico de Linux y contenedores LXC.

Pasos

1. Instalar LXC

En la máquina Ubuntu, instale el paquete LXC utilizando el siguiente comando:

sudo apt install lxc

 

2. Crear perfil microk8s

Debemos crear un perfil para que kubernetes se ejecute sin problemas en un contenedor LXC:

lxc profile create microk8s
# para ZFS
wget https://raw.githubusercontent.com/ubuntu/microk8s/master/tests/lxc/microk8s-zfs.profile -O microk8s.profile
# para ext4
wget https://raw.githubusercontent.com/ubuntu/microk8s/master/tests/lxc/microk8s.profile -O microk8s.profile
cat microk8s.profile | lxc profile edit microk8s
rm microk8s.profile  
 

2. Crear contenedor LXC base

Primero debemos crear un contenedor LXC utilizando utilizando el perfil microk8s, instalamos microk8s y después generamos una sanpshot de es:

lxc launch -p default -p microk8s ubuntu:22.04 microk8s01
#instalamos microk8s
lxc exec microk8s01 -- sudo snap install microk8s --classic  
#creamos el snapshot 
lxc snapshot microk8s01 microk8s-template

3. Crear los otros contenedores

En base a la snapshot creamos los otros dos contenedores:
#contenedor 2
lxc copy microk8s-template microk8s02
#contenedor 3
lxc copy microk8s-template microk8s03

4. Agregar nodos al cluster

Ya tenemos microk8s en tres maquinas, asi que ahora los uniremos entre ellos. Para eso desde el nodo microk8s01 ejecutaremos el siguiente comando:

root@microk8s01:~# microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join 10.88.89.67:25000/da2fc5b4a60fc1e5fbbe703b007414c3/4523e5f8424e

Use the '--worker' flag to join a node as a worker not running the control plane, eg:
microk8s join 10.88.89.67:25000/da2fc5b4a60fc1e5fbbe703b007414c3/4523e5f8424e --worker

If the node you are adding is not reachable through the default interface you can use one of the following:
microk8s join 10.88.89.67:25000/da2fc5b4a60fc1e5fbbe703b007414c3/4523e5f8424e

 Donde <token> es el token de unión proporcionado por el primer nodo  y <apiserver-url> es la URL del servidor API de MicroK8s del primer nodo. Desde los demas nodos ejecutaremos el siguiente comando

microk8s join 10.88.89.67:25000/da2fc5b4a60fc1e5fbbe703b007414c3/4523e5f8424e


5. Verificar Cluster

Verifique que el cluster de MicroK8s esté funcionando correctamente utilizando el siguiente comando:

root@microk8s01:~# microk8s status 
microk8s is running
high-availability: yes
datastore master nodes: 10.88.89.67:19001 10.88.89.59:19001 10.88.89.165:19001
datastore standby nodes: none

root@microk8s01:~# microk8s kubectl get no
NAME STATUS ROLES AGE VERSION
microk8s01 Ready <none> 8m24s v1.29.4
microk8s02 Ready <none> 89s v1.29.4
microk8s03 Ready <none> 9s v1.29.4

Conclusión

Ha completado la instalación de un cluster de MicroK8s en tres contenedores LXC, instalados en Ubuntu. Ahora puede implementar y ejecutar aplicaciones en contenedores en su cluster de MicroK8s.

Recursos adicionales

jueves, agosto 20, 2020

Comandos para Elasticsearch

Consultar indices:

curl -XGET "http://localhost:9200/_cat/indices"
Crear indice:

curl -X PUT "localhost:9200/servidor-1"

Eliminar indice:

curl -X DELETE "http://localhost:9200/servidor-1"
 
Eliminar multiples indices:

curl -X DELETE "http://localhost:9200/servidor-*"

domingo, septiembre 13, 2015

VRRP en Vyos/UBNT EdgeRouter

VRRP (Virtual Router Redundancy Protocol) es un protocolo de redundancia a nivel IP definido en el RFC3768. Fue diseña para permitir alta disponibilidad en la puerta de enlace por defecto en una subred, aunque se puede utilizar tambien para permitir alta disponibilidad de servicios (servidores web, Telefonía, etc). 
En este ejemplo revisaremos la funcionalidad original, alta disponibilidad de la puerta de enlace. Se presupone que ambos Vyos ya tienen acceso a internet, tienen configuradas interfaces, rutas, regla de NAT y de filtrado. El diagrama es el siguiente:


Los datos relevantes son:

Subred: 10.0.0./24
IP virtual: 10.0.0.10
IP router1: 10.0.0.11
IP router2: 10.0.0.12

El router1 sera el principal, tendrá mayor prioridad, y ademas tendra configurado el comando preempt que le permitira recuperar la IP virtual luego de una caida o reinicio.

Router1

set interfaces ethernet eth0 vrrp vrrp‐group 10
set interfaces ethernet eth0 vrrp vrrp‐group 10 virtual‐address 10.0.0.10/24
set interfaces ethernet eth0 vrrp vrrp‐group 10 preempt true
set interfaces ethernet eth0 vrrp vrrp‐group 10 priority 150
commit
save
#
show interfaces ethernet eth0 vrrp 
vrrp‐group 10 {
  preempt true
  priority 150
  virtual‐address 10.0.0.10/24
}
 

Router2


set interfaces ethernet eth0 vrrp vrrp‐group 10
set interfaces ethernet eth0 vrrp vrrp‐group 10 virtual‐address 10.0.0.10/24
set interfaces ethernet eth0 vrrp vrrp‐group 10 priority 100
commit
save
#
show interfaces ethernet eth0 vrrp 
vrrp‐group 10 {
  priority 100
  virtual‐address 10.0.0.10/24
}


Con esta configuración ya tendremos corriendo VRRP entre nuestro routers. Router1 en modo normal recibirá el trafico desde la subred, ante una caida de este Router2 obtendrá la IP virtual y permitira que el flujo de trafico a internet no se interrumpa.

Las opciones del comando VRRP en Vyos son las siguientes:

interfaces ethernet eth0 vrrp 
   vrrp-group <1-255> #VRRP group number
      advertise-interval <1-255> #Advertise interval (default 1)
      authentication
      description  #Description
      disable  #VRRP group disabled
      hello-source-address  #Source address for vrrp hello packets (optional)
      preempt  #Preempt mode
      preempt-delay <0-1000> #Preempt Delay in seconds
      priority <1-255> #Priority
      rfc3768-compatibility
      run-transition-scripts  #Scripts for VRRP state-transitions
      sync-group  #Add this vrrp group to a sync group
      virtual-address  #Virtual IP address (up to 20 per group)


sábado, agosto 01, 2015

Sincronización con Unison

 

Vamos a hacer uso de la herramienta Unison para sincronizar datos entre dos computadores, como por ejemplo dos servidores de FreeSWITCH:
Instalamos unison en ambas computadoras (debe ser exactamente el mismo número de versión en ambas máquinas):

apt-get install unison
 
 
Luego en el directorio home del usuario que vamos a usar para sincronizar creamos el directorio .unison:

mkdir /root/.unison

Ahora creamos un archivo con extensión /root/.unison/default.prf que indica las carpetas que deseamos sincronizar y las carpetas o archivos que deseemos ignorar, debe ser algo similar a:
 
# computadora A
root = /home
  
# computadora B
root = ssh://ip_computadora_B//home 
# sincronizar 
path = miusuario/Documentos
# ignorar 
ignore = Path miusuario/Instaladores
ignore = Name .*

Y llevamos a cabo la sincronización con el comando:
 
unison default

(debe ejecutarse a nombre del usuario miusuario y desde la carpeta /root).

Ejemplo de sincronizacion de carpeta de directory entre dos FreeSWITCH
 
auto = true
# disminuir el debug
batch = true
# archivos locales y remota
root = ssh://192.168.80.2//usr/local/freeswitch/conf/directory/default
root = /usr/local/freeswitch/conf/directory/default
perms = 0
#Ante un conflicto le da preferencia este directorio
prefer = /usr/local/freeswitch/conf/directory/default
ignore = Path */Olds
ignore = Name {olds,*~,tmp,temp,.*}

 

lunes, noviembre 23, 2009

Alta disponibilidad y sincronizacion de configuraciones



Objetivos

En este documento se mostrara la forma de implementar un cluster Activo/Pasivo con replicacion de configuración, todo esto de manera simple, sin necesidad de particiones o características especiales del núcleo de Linux.

Escenario

El escenario se muestra en la figura siguiente:








Es necesario mantener una IP virtual activa, la 192.168.100.20, por la cual se prestaran los servicios, ademas es necesario mantener sincronizado ciertos archivos de configuración, esto se realizara usando ssh y unison.


IP Virtual

Para la creación y mantencion de la IP virtual, es necesario tener instalado el paquete ucarp:

sudo apt-get install ucarp

ucarp es una aplicación de espacio de usuario que controla una Ip virtual entre distintos nodos, es una variante de vrrp pero totalmente libre de patentes.

Configurar ucarp en el Servidor Primario

El primer paso es crear los scripts de inicio y parada de ucarp, o sea cuando un nodo ucarp pasa a estado máster se ejecuta el script de inicio y cuando el nodo pasa a estado backup se ejecuta el script de parada. Desde el script de inicio es necesario activar la IP virtual y ademas se pueden activar servicios necesarios para servir desde la IP virtual. Desde el script de parada es necesario desactivar la IP virtual y desactivar los servicios dados por la IP virtual.
El segundo paso es activar el ucarp desde la consola, esto también se puede hacer desde el inicio de Linux.

Paso 1

En el Servidor Primario y Secundario
sudo nano /etc/vip-up.sh
#!/bin/bash
/sbin/ifconfig eth0:1 192.168.100.20/24 up
/etc/init.d/asterisk start

sudo nano /etc/vip-down.sh
#!/bin/bash
/sbin/ifconfig eth0:1 down
/etc/init.d/asterisk stop

Paso 2

En el Servidor Secundario

ucarp -i eth0 -s 192.168.100.4 -v 10 -p secret -a 192.168.100.20 --upscript=/etc/vip-up.sh –downscript=/etc/vip-down.sh
[INFO] Local advertised ethernet address is [54:52:00:14:a6:80]
[WARNING] Switching to state: BACKUP
SIOCSIFFLAGS: Cannot assign requested address
[WARNING] Spawning [/etc/vip-down.sh eth0]

En el Servidor Primario

ucarp -i eth0 -s 192.168.100.3 -v 10 -p secret -a 192.168.100.20 --upscript=/etc/vip-up.sh --downscript=/etc/vip-down.sh -P
[INFO] Local advertised ethernet address is [54:52:00:14:a6:80]
[WARNING] Switching to state: MASTER
[WARNING] Spawning [/etc/vip-up.sh eth0]


Con esto el servidor Primario quedara con la IP Virtual activa y el Secundario queda como Backup.

Paso 3

Para que ucarp arranque al inicio del sistema operativo es necesario agregar el comando de ucarp al arranque:

sudo nano /etc/rc.local
ucarp -i eth0 -s 192.168.100.3 -v 10 -p secret -a 192.168.100.20 --upscript=/etc/vip-up.sh --downscript=/etc/vip-down.sh -P