Yksinkertainen rpm-arkisto Inotifyn ja webdavin avulla
Tässä viestissä tarkastelemme rpm-artefaktivarastoa käyttämällä yksinkertaista inotify + Createrepo -komentosarjaa. Artefaktit ladataan webdavin kautta käyttämällä apache httpd:tä. Miksi apache httpd kirjoitetaan viestin lopussa.
Joten ratkaisun on täytettävä seuraavat vaatimukset vain RPM-tallennustilan järjestämiseksi:
ilmaiseksi
Paketin saatavuus arkistossa muutaman sekunnin kuluttua siitä, kun se on ladattu artefaktiarkistoon.
Säilytys sisään SonaType Nexus tai Massa monen tyyppiset esineet johtavat siihen tosiasiaan SonaType Nexus tai Massa tulla yhdeksi epäonnistumispisteeksi.
Massa Vaikuttaa minusta ylisuunniteltulta ratkaisulta.
Artefaktit sisään SonaType Nexus tallennettu blobiin. Äkillisen sähkökatkon sattuessa et voi palauttaa blobia, jos sinulla ei ole varmuuskopiota. Meillä oli tämä virhe: 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. Blobia ei koskaan saatu takaisin.
Voit muuttaa tätä hakemistoa tiedostossa /etc/inotify-createrepo.conf.
Käyttää
Kun lisäät minkä tahansa tiedoston hakemistoon /var/www/repos/rpm-repo/ inotifywait luo tiedoston /tmp/need_create. Run_createrepo-funktio toimii äärettömässä silmukassa ja valvoo tiedostoa /tmp/need_create. Jos tiedosto on olemassa, suorita se createrepo --update.
Jotta olemassa olevasta ratkaisusta saataisiin korkea käytettävyys, mielestäni voit käyttää kahta palvelinta, Keepalived for HA ja Lsyncd artefaktien synkronointiin. Lsyncd - Daemon, joka tarkkailee muutoksia paikallisessa hakemistossa, kokoaa ne yhteen ja tietyn ajan kuluttua rsync alkaa synkronoida niitä. Yksityiskohdat ja asetukset on kuvattu postauksessa "Miljardin tiedoston nopea synkronointi".
WebDav
Tiedostojen lataamiseen on useita tapoja: SSH, NFS, WebDav. WebDav näyttää olevan moderni ja yksinkertainen vaihtoehto.
WebDavissa käytämme Apache httpd:tä. Miksi Apache httpd vuonna 2020 eikä nginx?
Haluaisin käyttää automatisoituja työkaluja Nginx + -moduulien rakentamiseen (esimerkiksi Webdav).
Luulen, että teet loput Apache httpd -määritykset itse.
Nginx Apachen edessä httpd
Toisin kuin Apache, Nginx käyttää tapahtumapohjaista pyyntöjenkäsittelymallia, mikä tarkoittaa, että vain yksi HTTP-palvelinprosessi vaaditaan mille tahansa määrälle asiakkaita. Voit käyttää nginxiä ja vähentää palvelimen kuormitusta.
nginx-front.conf config. Luulen, että teet loput nginx-asetukset itse.