V tomto príspevku sa pozrieme na archív artefaktov rpm pomocou jednoduchého skriptu inotify + createrepo. Artefakty sa nahrávajú cez webdav pomocou apache httpd. Prečo apache httpd bude napísané na konci príspevku.
Riešenie teda musí spĺňať nasledujúce požiadavky na organizáciu iba úložiska RPM:
zadarmo
Dostupnosť balíka v úložisku niekoľko sekúnd po nahraní do úložiska artefaktov.
Artefakty v SonaType Nexus uložené v blobe. V prípade náhleho výpadku prúdu nebudete môcť objekt blob obnoviť, ak nemáte zálohu. Mali sme túto chybu: 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 nebol nikdy nájdený.
Tento adresár v súbore môžete zmeniť /etc/inotify-createrepo.conf.
Použitie
Pri pridávaní akéhokoľvek súboru do adresára /var/www/repos/rpm-repo/ inotifywait vytvorí súbor /tmp/need_create. Funkcia run_createrepo beží v nekonečnej slučke a monitoruje súbor /tmp/need_create. Ak súbor existuje, spustite ho createrepo --update.
Ak chcete dosiahnuť vysokú dostupnosť z existujúceho riešenia, myslím, že môžete použiť 2 servery, Keepalived pre HA a Lsyncd na synchronizáciu artefaktov. Lsyncd - démon, ktorý sleduje zmeny v lokálnom adresári, agreguje ich a po určitom čase ich rsync začne synchronizovať. Podrobnosti a nastavenia sú popísané v príspevku "Rýchla synchronizácia miliardy súborov".
WebDav
Existuje niekoľko spôsobov, ako nahrať súbory: SSH, NFS, WebDav. WebDav sa javí ako moderná a jednoduchá možnosť.
Pre WebDav použijeme Apache httpd. Prečo Apache httpd v roku 2020 a nie nginx?
Chcel by som použiť automatizované nástroje na vytváranie modulov Nginx + (napríklad Webdav).
Myslím, že zvyšok konfigurácie Apache httpd urobíte sami.
Nginx pred Apache httpd
Na rozdiel od Apache používa Nginx model spracovania požiadaviek založený na udalostiach, čo znamená, že pre ľubovoľný počet klientov je potrebný iba jeden proces servera HTTP. Môžete použiť nginx a znížiť zaťaženie servera.
konfigurácia nginx-front.conf. Myslím, že zvyšok konfigurácie nginx urobíte sami.