Selles postituses vaatleme rpm artefaktihoidlat, kasutades lihtsat inotify + Createrepo skripti. Artefaktid laaditakse üles webdav kaudu, kasutades apache httpd-d. Miks apache httpd, kirjutatakse postituse lõpus.
Seega peab lahendus vastama järgmistele nõuetele ainult RPM-salvestuse korraldamiseks:
Tasuta
Paketi saadavus hoidlas mõni sekund pärast artefaktihoidlasse üleslaadimist.
Artefaktid sees SonaType Nexus salvestatud blob. Äkilise elektrikatkestuse korral ei saa te blobi taastada, kui teil pole varukoopiat. Meil oli selline viga: 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. Blobi ei saadud kunagi kätte.
Seda kataloogi saate failis muuta /etc/inotify-createrepo.conf.
Kasutama
Kui lisate kataloogi mis tahes faili /var/www/repos/rpm-repo/ inotifywait loob faili /tmp/need_create. Funktsioon run_createrepo töötab lõpmatu tsüklina ja jälgib faili /tmp/need_create. Kui fail on olemas, käivitage createrepo --update.
Olemasoleva lahenduse kõrge kättesaadavuse tagamiseks võite kasutada kahte serverit, Keepalived HA jaoks ja Lsyncd artefaktide sünkroonimiseks. Lsyncd - deemon, mis jälgib muutusi kohalikus kataloogis, koondab need ja teatud aja möödudes hakkab rsync neid sünkroonima. Üksikasju ja seadeid kirjeldatakse postituses "Miljardi faili kiire sünkroonimine".
WebDav
Failide üleslaadimiseks on mitu võimalust: SSH, NFS, WebDav. WebDav tundub olevat kaasaegne ja lihtne variant.
WebDavi jaoks kasutame Apache httpd. Miks Apache httpd aastal 2020, mitte nginx?
Sooviksin kasutada Nginx + moodulite ehitamiseks automatiseeritud tööriistu (näiteks Webdav).
Arvan, et ülejäänud Apache httpd konfiguratsiooni teete ise.
Nginx Apache ees httpd
Erinevalt Apache'ist kasutab Nginx sündmustepõhist päringute töötlemise mudelit, mis tähendab, et mis tahes arvu klientide jaoks on vaja ainult ühte HTTP-serveri protsessi. Saate kasutada nginxi ja vähendada serveri koormust.
nginx-front.conf konfiguratsioon. Arvan, et teete ülejäänud nginxi konfiguratsiooni ise.