I det här inlägget kommer vi att titta på ett rpm-artefaktlager med ett enkelt inotify + createrepo-skript. Artefakter laddas upp via webdav med apache httpd. Varför apache httpd kommer att skrivas mot slutet av inlägget.
Så lösningen måste uppfylla följande krav för att organisera endast RPM-lagring:
fri
Tillgänglighet för paketet i förvaret några sekunder efter uppladdning till artefaktförrådet.
Förvaring i SonaType Nexus eller Massa många typer av artefakter leder till det faktum att SonaType Nexus eller Massa bli en enda punkt av misslyckande.
Massa Verkar som en överkonstruerad lösning för mig.
Artefakter i SonaType Nexus lagras i blob. I händelse av ett plötsligt strömavbrott kommer du inte att kunna återställa blubben om du inte har en backup. Vi hade detta fel: 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 återfanns aldrig.
Som standard övervakar inotify-createrepo en katalog /var/www/repos/rpm-repo/.
Du kan ändra denna katalog i filen /etc/inotify-createrepo.conf.
Använd
När du lägger till en fil i en katalog /var/www/repos/rpm-repo/ inotifywait kommer att skapa en fil /tmp/need_create. Funktionen run_createrepo körs i en oändlig slinga och övervakar filen /tmp/need_create. Om filen finns, kör sedan createrepo --update.
För att göra hög tillgänglighet av en befintlig lösning tror jag att du kan använda 2 servrar, Keepalived för HA och Lsyncd för artefaktsynkronisering. Lsyncd - en demon som övervakar ändringar i den lokala katalogen, samlar dem och efter en viss tid börjar rsync synkronisera dem. Detaljer och inställningar beskrivs i inlägget "Snabb synkronisering av en miljard filer".
WebDav
Det finns flera sätt att ladda upp filer: SSH, NFS, WebDav. WebDav verkar vara ett modernt och enkelt alternativ.
För WebDav kommer vi att använda Apache httpd. Varför Apache httpd 2020 och inte nginx?
Jag skulle vilja använda automatiserade verktyg för att bygga Nginx +-moduler (till exempel Webdav).
Jag tror att du kommer att göra resten av Apache httpd-konfigurationen själv.
Nginx framför Apache httpd
Till skillnad från Apache använder Nginx en händelsebaserad modell för förfrågningsbehandling, vilket innebär att endast en HTTP-serverprocess krävs för ett valfritt antal klienter. Du kan använda nginx och minska serverbelastningen.
nginx-front.conf config. Jag tror att du kommer att göra resten av nginx-konfigurationen själv.