wiki:infrastructure-2018.Es

Version 2 (modified by https://id.mayfirst.org/jamie, 12 days ago) (diff)

--

En otros idiomas:

Infraestructura 2018 Planes

Todo está cambiando. En los Estados Unidos, la presidencia de Trump y sus movimientos hacia el neo fascismo están forzando un cambio decisivo en nuestra lucha política. En México, la elección de Obrador marca una ruptura dramática con décadas de liderazgo de los partidos de centro y de derecha.

Casi lo único que se ha mantenido igual durante los últimos 15 años es la arquitectura subyacente de la tecnología de alojamiento de May First / People Link. Y ahora, eso va a cambiar también para abordar el cambiante panorama político.

Este documento proporciona una visión general menos técnica del panorama general. Un [compañero de trabajo de wiki.org: mosh-reorganization proporciona más detalles técnicos sobre los pasos inmediatos que estamos planificando] para alcanzar nuestras metas.

El problema

El principal problema con nuestra infraestructura actual es la inflexibilidad: cuando un sitio se vuelve popular de repente, es dolorosamente lento y tedioso reasignar hardware para respaldarlo. Cuando se ataca un sitio web, es difícil moverlo detrás de un mejor firewall para bloquear los ataques. Y, cuando un sitio se ve comprometido, es difícil aislarlo para que no afecte negativamente a otros miembros. A medida que nuestra membresía crece y cada vez más experimentamos cambios repentinos y dramáticos en las necesidades tecnológicas, debemos estar en mejores condiciones para manejarlos en cuestión de minutos en lugar de horas o días.

Las Metas

Las nuevas tecnologías que exploraremos están todas basadas en software libre y de código abierto, sin embargo, su desarrollo está impulsado por el capitalismo. Entonces, es importante que mantengamos nuestras metas claras y comprendamos en qué se diferencian de los objetivos de la tecnología que estamos implementando.

En particular, las nuevas tecnologías a menudo asumen el uso de hardware arrendado de corporaciones como Amazon, mientras que nuestras políticas requieren que poseamos y controlemos nuestro propio hardware. Esta importante distinción tiene un impacto en la forma en que abordamos la tecnología.

El objetivo principal de nuestro proyecto es permitirnos asignar de manera más flexible nuestro hardware informático limitado para satisfacer las necesidades de nuestros miembros.

También hay varios objetivos secundarios que esperamos lograr, pero no a expensas de nuestro primer objetivo:

  • Capacidad de escalar de unos pocos miles de usuarios a millones de usuarios: este objetivo es el objetivo principal de muchas nuevas tecnologías basadas en contenedores, sin embargo, solo se aplica marginalmente a nosotros. Sí, queremos ser capaces de manejar un sitio web que se vuelve explosivamente popular durante la noche. Sin embargo, nuestra principal necesidad es manejar miles de sitios web de tráfico relativamente bajo en lugar de un solo sitio web de alto tráfico. Este objetivo sigue siendo un objetivo secundario importante, por lo que tenemos la capacidad de apoyar a los pocos miembros que se centran en hacer crecer sus recursos de Internet en millones.
  • Capacidad para recuperarse instantáneamente de fallas en el hardware: este objetivo también es un objetivo principal de la mayoría de las nuevas tecnologías, pero no se aplica bien a nosotros. En gran medida, depende de la capacidad del hardware que es más del doble de la capacidad que necesita para ejecutar sus servidores. Cuando tiene acceso a hardware arrendado a través de Amazon, esto es bastante simple y asequible. Cuando posee todo su hardware, es prohibitivamente caro. Este objetivo sigue siendo un objetivo secundario importante, y la capacidad de recuperación manual de fallas de hardware en cuestión de minutos seguirá siendo un requisito fundamental. Sin embargo, el auto fail-over probablemente no sea factible para todos los servicios para miembros.

Primeros pasos

No tenemos todas las soluciones en este momento, sin embargo, estamos mirando cuidadosamente lo que se llaman tecnologías basadas en "contenedores". Los contenedores nos permiten proporcionar servicios individuales (como un único sitio web) de una manera mayormente aislada que se puede mover fácilmente entre servidores y usar hardware de manera más eficiente. Depende de una colección estrechamente integrada de servidores que funcionan en conjunto.

Por el contrario, nuestra infraestructura actual es una colección de servidores autónomos diseñados para que, si se rompe, no afecte a ninguno de los demás. Con ese objetivo, la mayoría de nuestros servicios están organizados en servidores individuales llamados MOSH's, que brindan servicios web, de correo electrónico, de bases de datos y ssh / sftp en un único servidor virtual compartido por aproximadamente 50 miembros. Cada MOSH es en su mayoría independiente de todos los demás servidores; seguirá funcionando aunque todos los demás servidores fallen.

Actualmente tenemos alrededor de 75 servidores MOSH.

Desafortunadamente, la tecnología de contenedores todavía es bastante nueva y está cambiando rápidamente, con algunas soluciones que desaparecen y otras que se desarrollan rápidamente. Por lo tanto, aún es demasiado pronto para comprometerse con una tecnología basada en contenedores.

Sin embargo, hemos identificado tres pasos cruciales que debemos tomar para prepararnos para un futuro cambio a contenedores.

Cada paso está diseñado para avanzar hacia un entorno más integrado que nos ayude en nuestro objetivo principal de mover recursos de manera más efectiva y nos permitirá cambiar de forma más fácil y rápida a nuevas tecnologías de contenedores.

Enrutamiento

Nuestra infraestructura actual utiliza principalmente el Sistema de nombres de dominio (DNS) para determinar qué sitios web miembros, correo electrónico, etc. deben enrutarse a cuál de nuestros 75 MOSH.

Para prepararnos para el enfoque basado en contenedores, necesitaremos cambiar, de modo que el sistema DNS encamine a todos los miembros a uno o varios servidores públicos, y estos servidores a su vez encaminan la solicitud al lugar apropiado en nuestra red.

Actualmente estamos utilizando este enfoque para el correo electrónico: todos los miembros configuran sus programas de correo electrónico para enviar y recibir a través de mail.mayfirst.org, que a su vez enruta la solicitud al servidor apropiado.

También estamos comenzando a proporcionar esos servicios para sitios web: tenemos un servidor web que puede proporcionar servicios de almacenamiento en caché para protegerlo de DDOS y también alto tráfico, que a su vez enruta ese tráfico web al servidor apropiado. Este enfoque deberá desarrollarse más para proporcionar una forma genérica del servicio para todos los sitios web.

Por último, no hemos comenzado a implementar este enfoque para el correo electrónico entrante (servicios MX) o SSH/SFTP que aún se enrutan a través de servidores DNS o MySQL (que se sirven a través de localhost).

Autenticación

Nuestro sistema de autenticación actual es una mezcolanza de MySQL proporcionada por nuestro panel de control (la autorización final), una login service api respaldada por la base de datos, un sistema de identificación abierto (también respaldado por la base de datos) que se debe retirar, y un proceso para mantener los archivos tradicionales /etc/shadow sincronizados con la base de datos MySQL del panel de control.

Estos deberán ser reemplazados por un único sistema distribuido, muy probablemente LDAP, FreeIPA, o una solución mejorada basada en SQL.

Con un solo sistema, podemos administrar la autenticación del usuario y los identificadores comunes de usuarios y grupos para ayudar a garantizar que se preservan los permisos del sistema de archivos.

Almacenamiento de red

El almacenamiento en red significa que un disco duro que está montado en un servidor físico puede desmontarse rápidamente en ese servidor y volverse a montar en un servidor diferente. Es un componente crítico para una infraestructura basada en contenedores en general y cumple nuestro objetivo principal en particular.

Actualmente, todos los discos duros de nuestra red son proporcionados por los servidores físicos que alojan los servicios, lo que significa que mover los datos es un proceso lento y que requiere muchos recursos.

Tendremos que invertir en un servidor dedicado para proporcionar sistemas de archivos a nuestra red y comenzar a experimentar con el traslado de nuestros datos a este nuevo servidor, probablemente ejecutando NFS plus DRBD o https://ceph.com/ceph.

El almacenamiento relacionado con la red es hardware dedicado para bases de datos. Actualmente, todas las bases de datos se ejecutan en cada MOSH que aloja el sitio web. Una alternativa es alojar todas las bases de datos en servidores dedicados que estén separados de cada sitio web. Eso permite que un sitio web se mueva de un servidor a otro sin mover la base de datos.