Benchmarking y tunning de servidores para ceph

Una vez tenemos una infraestructura de servidores funcionando bajo ceph, nos podemos preguntar ¿Cómo compruebo que mi cluster está funcionando a máximo rendimiento? En este post vamos a ver algunas herramientas para comprobar el rendimiento y tunning que podemos realizar en nuestros servidores para sacarle mas partido a Ceph.

Comprobar la escritura de disco
La forma mas sencilla para hacer un benchmark del disco es usando el comando dd. Para ello vamos a usar el siguiente comando, añadiendo la etiqueta oflag para bypassear la cache del disco:

# dd if=/dev/zero of=here bs=1G count=1 oflag=direct

Esta es la salida de uno de mis servidores, la primera sobre /root y la otra sobre /mnt/pve/ceph_data que es donde está montado un pool de ceph

root@wezen3D:~# dd if=/dev/zero of=here bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 11.1835 s, 96.0 MB/s

root@wezen3D:/mnt/pve/ceph_data# dd if=/dev/zero of=here bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 46.5157 s, 23.1 MB/s

Comprobar la velocidad de la red
Cuando estamos usando ceph, la red es un factor muy importante. En mi actual infraestructura estoy usando puertos ethernet a 1Gbps. En los foros de proxmox muchos de los administradores usan varios puertos ethernet en bonding o incluso puertos de fibra de 10Gbps. Espero que en unas semanas pueda tener funcionando la segunda opción, de mientras todo el tunning que puedo hacer es tocar parámetros y configuración (ahora entraremos en ello).

La herramienta por excelencia …

Ceph: El maldito deep scrubbing

Si has llegado aquí es que estás buscando ¿qué coño es esto del deep scrubbing? y es que no hay sólo deep scrubbing, sino que ¡hay también otro! el scrubbing a secas. Si aún no has llegado aquí te lo cuento.

En ceph hay los pg, que vendrían a ser las unidades de datos dentro de ceph. En estas unidades de dados es realmente donde se almacena la información y una forma de verlos sería como ficheros o volúmenes de datos.
Para que los datos sean coherentes entre los distintos servidores, ceph hace scrubbing y deep scrubbing. Aquí lo explican muy bien.

En resumen sería

  • scrubbing (a secas). captura los errores del OSD o del sistema de ficheros. Este proceso suele ser ligero y no generar un gran impacto en la lectura y escritura de disco (iout o io)
  • deep scrubbing, compara los datos de los objetos PG, bit a bit. Busca sectores defectuosos en los discos. Este proceso genera un I/O alto.

Una cosa que ya he identificado es que un I/O alto afecta al rendimiento de todo el sistema. Hace que todo vaya leeeeentooooo, que mover ficheros de un lugar a otro sea un supliciooooo….

Desde que actualicé de proxmox 6 a proxmox 7 y actualizando la versión del ceph, todo ha ido empeorando con el paso de los días. He comprado un switch mikrotik con 8 puertos de fibra de 10G y a ver si con las tarjetas de red de 10Gb de fibra y los …

Convertir una web con wordpress a estática con httrack

Hace unos días llegó a mí una de aquellas tareas que en teoría tenía que ser poquitas horas, las poquitas horas han terminado siendo casi un mes entero de trabajo.

La tarea encomendada era la de arreglar la portada de la página web del periódico digital de contrainformación kaosenlared.net.

La web estaba usando el tema publisher y la portada estaba construida con gutenberg, además para cachear la web se estaba usando el plugin W3 total cache. Una combinación del tema y los dos plugins mencionados hacían que se descuadrase toda la página. Por suerte se disponía de una copia de seguridad de un día anterior a que se rompiese la portada. Mi tarea fue pues reestablecer la configuración del tema desde las opciones de exportación y cargar el contenido de la página de la portada. Al arreglarlo y volver a poner la página en producción, a las pocas horas, la portada se volvía a descuadrar. El cliente pidió simplemente dar de baja esta web, hacer algo con los archivos y aprovechar para crear otra nueva que ya estaban usando como web de emergencia.

Así que mi propuesta fue arreglar de nuevo el wordpress y convertir la página web a estática, ya que la página web tenía un pequeño detallito de nada, la friolera de 407.000 entradas, cosa que hacía que el consumo de recursos de la web fuese espectacular, por la gran cantidad de páginas y usuarios que visitaban diariamente el sitio.

Lo primero pues fue copiar todo el …

Instalador y actualizador de paquetes user friendly en cinnamon

El otro día reinstalé el ordenador de una usuaria a debian 11 con cinnamon. Se lo dejé todo niquelado con sus programas, su configuración anterior del navegador y la instalación del programa llamado keepassx para almacenar contraseñas. Instalé todos los programas y plugins que consideraba que la usuaria iba a necesitar, configuré el escritorio, los menús, etc. pero me quedó una cosa un poco coja, la de la actualización de los paquetes del sistema. Lo dejé como tarea pendiente a solucionar.

Tras unas dudas con una página web que le estoy haciendo, entré a su ordenador usando el programa anydesk y mientras ella atendía una llamada me miré el tema de las actualizaciones para que fuese un poco mas user friendly, pero el synaptic package manager era demasiado tosco para éste tipo de usuaria (ya usuaria experimentada de linux pero no al nivel de usar una terminal), además que no había tiempo para explicárselo de forma clara. No me convenció y decidí ponerme a buscar una solución. Así que os la comparto aquí hoy! :)

Al pensar en ello, se me ha ocurrido plantear la pregunta en el grupo de telegram de debian_es, y en poco rato han salido un par de opciones gnome-software y plasma de kde. Como no me gusta mucho la apariencia de la librería qt y al estar cinnamon basado en gnome me he tirado evidentemente a gnome-software.

Lo primero será instalarlo de esta forma tan cómoda que es para nosotros la instalación de …

Actualitzar gitlab 10.7.3 con debian 8 a gitlab 14.1.0 con debian 10

Hoy os traigo una migración que me ha llevado 4 días largos y el motivo es el de dejar sin actualizar demasiado tiempo un sistema. Con el tiempo lo he ido poniendo todo al día pero siempre había éste (y otro) servicio que se me resistía. Hablamos de gitlab instalado usando los repositorios de gitlab y cabe decir que aunque haya sido una actualización larga y puñetera me ha obligado a mirarme como funcionaba a nivel de sistemas gitlab y telita la de cosas que tiene!

El gitlab que tengo instalado, la curiosidad es que “trae los programas dentro”, es decir, en lugar de estar instalados por apt con los repositorios de debian están ahí metidos en una carpeta.

Otra cosa que tendremos que tener en cuenta es que para hacer una migración a una nueva versión se recomienda hacerlo desde otras versiones tal como explica en la documentación.

En mi caso por las versiones que debería pasar son las:

11.11.8 -12.0.12 -12.1.17 -12.10.14 -13.0.14 -13.1.11 -latest 13.12.Z -latest 14.0.Z -14.1.Z -latest 14.Y.Z

Así que vamos a empezar.

Actualizar de debian 8 a debian 10
En esta migración me ha tocado sacarme el miedo con los upgrades de versiones major de debian. Siempre he tenido la costumbre cada vez que ha habido una release de debian nueva ir migrando los servicios en un sistema nuevo. Por la complejidad de la instalación y porqué al principio no me enteraba muy bien …

Proxmox 7 y limpiar lvm ceph

Ayer instalé proxmox 7 que se ha avanzado a la release de debian 11, aunque debian 11 no haya salido estable, proxmox 7 ya viene con debian 11 bullseye. Debian 11 será liberada el próximo 17 de Julio.

Tenía que hacer la migración de unos datos de un clúster a éste y entre procastinación por otras cosas y una todolist líquida y movible la tarea se quedó pendiente, así que aprovechando a tener una máquina lista para tal tarea directamente le instalé la nueva versión de proxmox para ver qué tal! al hacerlo lo hice a lo bruto sin limpiar previamente los discos, como tal me encontré que al montar ceph los discos destinados al osd estaban ocupados por la instalación anterior y no había forma de borrar las particiones lvm que me había creado al no aparecer en pvscan, ni lvscan ni nada, así que aquí os traigo la solución de como limpiar las particiones para poder usarlas.

root@planet2A:~# sgdisk -Z /dev/sdb
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

root@planet2A:~# reboot

Esto en cada …

Instalar gnome40 en debian 11 (fail)

Spoiler: no funciona! mejor usar de momento otra distribución de linux que no sea debian quieres usar gnome40.

Ya tenemos a debian en RC2, que quiere decir esto? pues que le queda menos para su liberación a estable que está prevista el 17 de Julio de 2021.

Una de las “puñetas” de debian es que no siempre disponemos de las últimas versiones de los programas y una que me ha sabido un poco mal es la de gnome40, que salió como estable pocas horas después de que debian hiciese el freeze de bullseye, para los foráneos, la congelación de versiones de las versiones de los programas para empezar a prepararlo todo para la liberación de la versión estable de debian, debian 11. Esto se hace para dejar unos meses para comprobar que nada pete (cosa buena).

Así que vamos a ver que tal se comporta gnome40 con debian 11 (RC2).

El mayor problema es la actualización de gnome3 a gnome40, muchos de los programas usan la librería de gnome gtk para funcionar y esto puede hacer que algunos programas no funcionen correctamente (ventanas con apariencia extraña o fuera de lugar) o simplemente que se cierren programas de golpe! así que ya lo pruebo yo por vosotros y os ahorro todo este trabajo. Entonces decidid vosotros mismos si dais el salto o no :) Si las pruebas son infructuosas, a mis usuarios les diré de seguir con cinnamon que es un buen entorno de escritorio y muy cómo de usar :)…

Cifrar un disco duro y compatible multiplataforma con veracrypt

En éste post de hoy veremos como cifrar un disco duro externo y que pueda ser accedido por los sistemas operativos mas comunes, windows, mac y linux. Cada sistema operativo trae consigo su sistema de cifrado de discos (Linux cryptoluks, Windows BitLocker y Mac OS X Filevault) pero son incompatibles entre ellos, para ello es necesario usar algún tipo de programa que haga la misma función y sea compatible para los múltiples sistemas operativos, para ello tenemos veracrypt.

Upgrade modoboa 1.14 a 1.17 + roundcube webmail

En la de hoy nos encontramos con un servidor de correo instalado con modoboa versión 1.14 que queremos actualizar a una versión mas nueva, en este caso la 1.17. Aprovecharemos también para actualizar la versión de roundcube 1.4 RC1 a la versión 1.4.11.

Como todo tiene sus puñetitas en la informática, nos encontramos con que la migración de modoboa 1.14 a la 1.17 implica cambiar la versión de python2 a python3 y usar el instalador para hacer el upgrade es lio asegurado. Así que vamos a ver como hacer la migración pasito a pasito y de forma humanamente viable! :D

Para alegrarte un poco el día, comentar que es posible hacer tranquilamente la instalación del nuevo entorno con una IP distinta a la definitiva. Es decir, si voy a usar mail.lamardebits.org no es necesario que el entorno que estamos montando tenga la IP que apunta a mail.lamardebits.org. Así que es posible dejarlo todo listo sin tocar el entorno que está en producción. Cuando queramos hacer el cambio, simplemente será apagar la máquina con la versión vieja de modoboa, cambiar la IP en el entorno nuevo y levantarlo!

Así que empezamos y como de costumbre hago la instalación sobre una debian 10 virtualizada con LXC y con el nesting activado. Además le pongo ya el mountpoint sobre el cephfs a /srv/vmail

Una vez arrancada la maquina, lo básico y recomendable, configurar y actualizar el sistema

root@mail:~# dpkg-reconfigure locales && dpkg-reconfigure tzdata && apt update && apt -y upgrade && apt -y 

Instalación iredmail en debian10

Hoy vamos a instalar iredmail en una debian10.

Partimos de un contenedor lxc dentro de nuestra querida infraestructura de proxmox con un template de debian10 y el nesting activado.

Una vez arrancado el contenedor vamos a actualizar el sistema e instalar algunos paquetes necesarios

root@mail:~# dpkg-reconfigure locales && dpkg-reconfigure tzdata && apt update && apt -y upgrade && apt -y dist-upgrade && apt -y install vim net-tools dnsutils gnupg2

Añadimos también los repositorios de sogo que durante la instalación nos peta si previamente no hacemos esto

root@mail:~# echo "deb https://packages.inverse.ca/SOGo/nightly/5/debian buster buster" /etc/apt/sources.list.d/sogo-nightly.list
root@mail:~# gpg --keyserver keyserver.ubuntu.com --recv 19CDA6A9810273C4
root@mail:~# gpg --export --armor 19CDA6A9810273C4 | apt-key add -
root@mail:~# apt update

Para instalar iredmail correctamente, el nombre del host tendrá que ser el correcto, en mi caso mail y dominio summercamp.cat (donde estoy haciendo la instalación para probar el software). En hostname -f debe salir el fqdn correcto del servidor. Evidentemente los dns deben apuntar a la ip del servidor.

root@mail:~# hostname -f
mail.summercamp.cat

Nos descargamos iredmail de su página web. La versión 1.4.0 corresponde a Abril de 2021, así que good ;)

root@mail:~# wget https://github.com/iredmail/iRedMail/archive/1.4.0.tar.gz
root@mail:~# tar xvzf 1.4.0.tar.gz
root@mail:~# cd iRedMail-1.4.0/
root@mail:~/iRedMail-1.4.0# bash iRedMail.sh 
[ INFO ] Checking new version of iRedMail ...
[ INFO ] Installing package(s): ca-certificates apt-transport-https dialog

Nos aparecerán varias pantallas de ncurses que deberemos rellenar de esta forma

Ahora a esperar un rato que descargue y configure todo lo necesario

Una vez terminado nos debería decir esto

Reiniciamos tal como nos pide

root@mail:~/iRedMail-1.4.0#