Un Excelente Servidor Web de Bajo Coste: Utilizando ODROID-N2 para Hosting de Internet

Como desarrollador de NEMS Linux, siempre estoy ansioso por probar nuevas placas que prometen alto rendimiento y estabilidad en el campo de los servidores. Dado que NEMS es, en sí mismo, una distribución de servidores sin monitor, tiene una gran ventaja ya que no necesito lidiar con los drivers de GPU o el rendimiento del escritorio. Lo que verdaderamente me importa a mí y a mis usuarios es algo muy diferente a lo que le importa a un usuario final que espera reemplazar su PC de escritorio por un ordenador de placa reducida.

Me aporta mucho, ya que me esfuerzo por proporcionar una comparativa basada en pruebas de rendimiento –https://gigglescore.com/–con la finalidad de ayudar a los usuarios a descubrir con más facilidad qué placa es la que tiene la mejor relación calidad/precio. Tuve la oportunidad de hablar con @meveric cuando se lanzó ODROID-N2 por primera vez, y tengo que decir que no envidio para nada cómo él y otros desarrolladores de distribuciones de escritorio tienen que lidiar con los gráficos. Trabajan muy duro para proporcionar una buena experiencia de usuario de serie, y no debe ser nada fácil. Cuando hablé con él, el desarrollo de ODROID-N2 todavía estaba en una etapa bastante temprana, y la falta de drivers X11 para la GPU Mali-G52 suponía un desafío más que interesante. En las distribuciones de servidores que compilo no tengo que lidiar con nada de esto, y el ODROID-N2 es un pequeño y excelente servidor muy estable. El uso final realmente importa; Una placa que funciona perfectamente para NEMS Linux u otras distribuciones basadas en servidor puede no ser la más idónea para montar un centro multimedia o un sistema de monitorización y control diario. Es por eso que resulta muy difícil basar las decisiones de compra solo en pruebas de rendimiento y por qué los resultados de Giggle no siempre proporcionan una visión completa.

Es en este contexto en el que me fije en ODROID-N2 este mes. Me gustaría probarlo en un entorno en el que siento que puede encajar perfectamente; como es un servidor web SBC de alto rendimiento.

El ODROID-N2 tiene un total de 6 núcleos compuestos por un ARM Cortex-A73 quad-core y un ARM Cortex-A53 dual core. También cuenta con Ethernet Gigabit y hasta 4 GB de RAM

Usando Category5.TV SBC Benchmark v2.2 de https://github.com/Cat5TV/cat5tv-sbctest y con un coste para el ODROID-N2 de 79$, mi única placa de prueba que ejecuta mi imagen base Debian Buster se muestra de esta forma:

Esta es ligeramente mejor que la puntuación de https://gigglescore.com que otorga el ODROID-N2 con un Ģv2 un resultado de 1304 (multiproceso), teniendo en cuenta que un resultado de Giggle más bajo significa mejor (medido por el rendimiento multiproceso). Por supuesto, mi prueba anterior se llevó a cabo en una instalación de Debian Buster vainilla, cuyos resultados son reales para un ODROID-N2 que de lo contrario no haría nada. Aun así, el ODROID-N2 actualmente tiene el mejor rendimiento global en GiggleScore.com y, como servidor web basado en un ordenador de placa reducida, el ODROID-N2 parece ser una excelente opción. Vamos a montar el nuestro y ponerlo a prueba.

En primer lugar, ten en cuenta que estoy empezando con la imagen base de Bald Nerd. Esta es Debian Buster, por lo que no hay que configurar nada para que PHP 7.3 funcione. Nuestra pila LAMP incluirá Apache2, PHP 7.3 con algunos complementos útiles y ModSecurity 2.

Descarga la base de compilación de Debian Buster para ODROID-N2 y luego grábala en tu tarjeta SD o eMMC: https://baldnerd.com/sbc-build-base/

Puedes iniciar sesión en tu ODROID-N2 con un teclado y TV conectados, o desde otro ordenador dentro de tu red a través de SSH. El inicio de sesión y la contraseña por defecto para mi imagen base es "baldnerd".

Hay cinco cosas que debemos hacer en el primer arranque:

1) Verificar y asegurarnos de que la tarjeta SD/eMMC (/) haya cambiado de tamaño correctamente:

df -h
2) Verificar que la fecha/hora sean las correctas y corregirlas en caso contrario:
date
3) Crear una cuenta de usuario de Linux con privilegios de root. Yo crearé un usuario llamado "robbie" y le daré acceso sudo. Simplemente cambia "robbie" por su usuario.
$ sudo adduser robbie
$ sudo usermod -aG sudo robbie
4) Cierra sesión en tu ODROID-N2 y vuelve a iniciar sesión como robbie (o sea cual sea tu nombre de usuario). No inicies sesión como baldnerd nunca más 5) Eliminar la cuenta de usuario por defecto:
$ sudo userdel -f -r baldnerd
Montemos nuestro servidor web LAMP (Linux, Apache, MySQL, PHP). Para aquellos que prefieran llevar a cabo la instalación mediante programación, he escrito un simple script: https://raw.githubusercontent.com/Cat5TV/linux-tools/master/install-lamp

Para aquellos que quieran mojarse un poco y ver cada paso, pueden ejecutar lo siguiente en su ODROID-N2 con Debian Buster.

$ sudo apt update
$ sudo apt install apache2 php7.3 php7.3-cli php7.3-common php7.3-curl php7.3-gd php7.3-json php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-phpdbg php7.3-readline php7.3-sqlite3 php7.3-xml libapache2-mod-php7.3 libargon2-1 libsodium23 php-curl php-rrd mariadb-server libapache2-mod-security2 modsecurity-crs

Fija una contraseña root para MySQL

Si has instalado mariadb-server anteriormente, seguramente recordarás que el procedimiento de instalación solía solicitar una contraseña root durante la instalación. Esto ha sido eliminado. En su lugar, tienes que ejecutar una aplicación posterior a la instalación con la que configurar tu usuario root y concedes acceso root a tu servidor de base de datos MySQL.

$ sudo mysql_secure_installation
Presiona Intro cuando te solicite la contraseña de root de MySQL, ya que aún no existe, y luego sigue las instrucciones para añadir una nueva contraseña de root. Recuerda cuál es esta contraseña y mantenla segura. Asegúrate de contestar "yes" a cada pregunta que se te haga para ayudar a hacer más seguro tu servidor MySQL eliminando algunas cuentas y datos de muestra.

Proporciona a tu cuenta de usuario acceso para editar archivos Recuerda reemplazar "robbie" por tu nombre de usuario.

$ sudo usermod -aG www-data robbie
$ sudo chown -R robbie:www-data /var/www/html/
$ sudo find /var/www/html/ -type d -exec chmod -R 775 {} \;
$ sudo find /var/www/html/ -type f -exec chmod -R 664 {} \;
¡Perfecto! Tu servidor web ahora se está ejecutando, y puedes acceder a él visitando la dirección IP de tu ODROID-N2 en un navegador en cualquier ordenador de tu red. Los archivos del servidor se encuentran en /var/www/html y son propiedad de tu usuario y ya conoces las credenciales de MySQL. El acceso a MySQL está restringido a localhost, así que, para facilitar su uso, recomiendo usar la línea de comando mysql para crear los usuarios y las bases de datos MySQL, o agregar phpMyAdmin y activarlo solo cuando sea necesario, deshabilitándolo cuando no lo estés usando. Recuerde que, puesto que SSH está habilitado en la imagen, puedes crear fácilmente archivos en /var/www/html, o usar SFTP en Filezilla Client para mover archivos de aquí para allá desde tu ordenador.

Y ahora, las pruebas de rendimiento

Tu servidor está listo para funcionar, llevar a cabo pruebas de rendimiento puede ser muy divertido en un caso como este. Quizás sea mis recuerdos con servidores gigantes 4U de mis años más jóvenes en TI lo que me entusiasma testear ordenadores de placa reducida como centros de datos, pero sea lo que sea, me impresiona ver lo bien que funciona un ODROID-N2 en este rol. No es necesario que realices estas pruebas personalmente si no quieres, este trabajo ya está hecho, aunque este artículo no estaría completo sin mis propios resultados.

Mis pruebas de rendimiento que se detallan a continuación son muy específicas, centradas por completo en usar el ODROID-N2 como servidor web. Si te saben a poco o quieres una visión más amplia, echa un vistazo a la edición de junio de 2019 de ODROID Magazine donde Michael Larabel de Phoronix.com y Carlos Eduardo dan su opinión sobre el funcionamiento y rendimiento del ODROID-N2.

Ahora que tenemos Apache en funcionamiento, pongámoslo a prueba con Siege, una utilidad para evaluar el rendimiento HTTP. Todavía no he añadido un sitio web, así que realmente solo estamos probando la capacidad de respuesta de la página estática "It Works", aun así los resultados siguen siendo importantes. Te recomiendo que coloques tu sitio en /var/www/html y ejecutes la misma prueba de rendimiento para ver qué tal funciona tu sitio. Para este indicador de rendimiento, haremos una prueba de carga con 50 conexiones simultáneas.

$ apt install siege
$ siege -c50 -d10 -t3M http://localhost/
Here is my result:
robbie@debian:/home/robbie# siege -c50 -d10 -t3M http://localhost/
New configuration template added to /root/.siege
Run siege -C to view the current settings in that file
** SIEGE 4.0.4
** Preparing 50 concurrent users for battle.
The server is now under siege...
Lifting the server siege...
Transactions:                   3540 hits
Availability:                 100.00 %
Elapsed time:                 179.16 secs
Data transferred:              14.85 MB
Response time:                  0.01 secs
Transaction rate:              19.76 trans/sec
Throughput:                     0.08 MB/sec
Concurrency:                    0.12
Successful transactions:        3540
Failed transactions:               0
Longest transaction:            0.20
Shortest transaction:           0.00
Con cada petición se observa una respuesta con un promedio de 0.01 segundos, realmente estoy encantado con este resultado. La mayoría de las pymes no suelen ver 50 usuarios simultáneos en su sitio web. Aquí, hemos generado 3.540 visitas en 3 minutos.

Probar el rendimiento de MariaDB

Nuestro servidor MySQL (MariaDB) está funcionando gracias a los pasos anteriores. Para probar el rendimiento de la base de datos, usaré sysbench a través del script mysql-benchmark.sh que forma parte de mi paquete cat5tv-sbctest en GitHub. No voy a hablar sobre cómo funciona, ya que para lo que estén interesados pueden ver el código fuente del simple script bash. Basta con decir que compila sysbench 1.0.17, crea un 1 millón de entradas MySQL y pone a prueba rendimiento de la base de datos durante 1 minuto.

Estos son mis resultados:

Performing MySQL Benchmark: sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)

Creating table 'sbtest1'...
Inserting 1000000 records into 'sbtest1'
Creating a secondary index on 'sbtest1'...
sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 8
Initializing random number generator from current time

Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            35504
        write:                           10144
        other:                           5072
        total:                           50720
    transactions:                        2536   (40.83 per sec.)
    queries:                             50720  (816.58 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          62.1083s
    total number of events:              2536

Latency (ms):
         min:                                   11.15
         avg:                                  194.09
         max:                                 4760.50
         95th percentile:                      846.57
         sum:                               492217.74

Threads fairness:
    events (avg/stddev):           317.0000/3.12
    execution time (avg/stddev):   61.5272/0.74
Todas mis consultas tuvieron éxito, se llegaron a realizar unas impresionantes 816.58 consultas por segundo. ¡Este pequeño manejará WordPress perfectamente! Recuerda que estamos ante un ordenador de placa reducida que utiliza muy poca electricidad, genera muy poco calor en la sala de servidores y cuesta 79$. Estoy impresionado. Si está buscando un servidor web asequible con tecnología SBC, ya sea para desarrollo, prueba o producción, el ODROID-N2 está listo para funcionar y tiene suficiente potencia para atender tus proyectos.

Sobre el Author

Robbie Ferguson es el dueño de Category5 Technology TV y autor de NEMS Linux. Su programa de televisión se encuentra en https://category5.tv/ y su blog es https://baldnerd.com/. l proyecto de Robbie, NEMS Linux, está disponible para ODROID-N2. Puedes descargarte la distribución del Servidor de Monitoreo Empresarial Nagios listo para arrancar desde https://nemslinux.com/

Be the first to comment

Leave a Reply