En esta publicación, veremos un repositorio de artefactos rpm usando un simple script inotify + createrepo. Los artefactos se cargan a través de webdav utilizando apache httpd. Por qué apache httpd se escribirá hacia el final de la publicación.
Por lo tanto, la solución debe cumplir con los siguientes requisitos para organizar solo almacenamiento RPM:
Gratis
Disponibilidad del paquete en el repositorio unos segundos después de cargarlo en el repositorio de artefactos.
Almacenamiento en SonaType Nexus o Pulpa muchos tipos de artefactos conduce al hecho de que SonaType Nexus o Pulpa convertirse en un único punto de falla.
Artefactos en SonaType Nexus almacenado en blob. En caso de un corte de energía repentino, no podrá restaurar el blob si no tiene una copia de seguridad. Tuvimos este error: ERROR [ForkJoinPool.commonPool-worker-2] *SYSTEM [com.orientechnologies.orient.core.storage](http://com.orientechnologies.orient.core.storage/).fs.OFileClassic - $ANSI{green {db=security}} Error during data read for file 'privilege_5.pcl' 1-th attempt [java.io](http://java.io/).IOException: Bad address. Blob nunca se recuperó.
Por defecto, inotify-createrepo monitorea un directorio /var/www/repos/rpm-repo/.
Puede cambiar este directorio en el archivo /etc/inotify-createrepo.conf.
el uso de
Al agregar cualquier archivo a un directorio /var/www/repos/rpm-repo/ inotifywait creará un archivo /tmp/need_create. La función run_createrepo se ejecuta en un bucle infinito y monitorea el archivo /tmp/need_create. Si el archivo existe, ejecute createrepo --update.
Para lograr una alta disponibilidad de una solución existente, creo que puede usar 2 servidores, Keepalived para HA y Lsyncd para la sincronización de artefactos. Lsyncd - un demonio que monitorea los cambios en el directorio local, los agrega y después de cierto tiempo, rsync comienza a sincronizarlos. Los detalles y la configuración se describen en la publicación "Sincronización rápida de mil millones de archivos".
WebDav
Hay varias formas de cargar archivos: SSH, NFS, WebDav. WebDav parece ser una opción moderna y sencilla.
Para WebDav, usaremos Apache httpd. ¿Por qué Apache httpd en 2020 y no nginx?
Me gustaría usar herramientas automatizadas para construir módulos Nginx + (por ejemplo, Webdav).
Creo que usted mismo hará el resto de la configuración de Apache httpd.
Nginx frente a Apache httpd
A diferencia de Apache, Nginx utiliza un modelo de procesamiento de solicitudes basado en eventos, lo que significa que solo se requiere un proceso de servidor HTTP para cualquier cantidad de clientes. Puede usar nginx y reducir la carga del servidor.
configuración de nginx-front.conf. Creo que harás el resto de la configuración de nginx tú mismo.