Απλό αποθετήριο rpm χρησιμοποιώντας Inotify και webdav
Σε αυτήν την ανάρτηση, θα δούμε ένα αποθετήριο τεχνουργημάτων rpm χρησιμοποιώντας ένα απλό σενάριο inotify + createrepo. Τα τεχνουργήματα μεταφορτώνονται μέσω webdav χρησιμοποιώντας apache httpd. Γιατί το apache httpd θα γραφτεί προς το τέλος της ανάρτησης.
Επομένως, η λύση πρέπει να πληροί τις ακόλουθες απαιτήσεις για την οργάνωση μόνο αποθήκευσης RPM:
δωρεάν
Διαθεσιμότητα του πακέτου στο αποθετήριο λίγα δευτερόλεπτα μετά τη μεταφόρτωση στο αποθετήριο τεχνουργημάτων.
Τεχνουργήματα σε SonaType Nexus αποθηκευμένο σε blob. Σε περίπτωση ξαφνικής διακοπής ρεύματος, δεν θα μπορείτε να επαναφέρετε το blob εάν δεν έχετε αντίγραφο ασφαλείας. Είχαμε αυτό το σφάλμα: 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 δεν ανακτήθηκε ποτέ.
Από προεπιλογή, το inotify-createrepo παρακολουθεί έναν κατάλογο /var/www/repos/rpm-repo/.
Μπορείτε να αλλάξετε αυτόν τον κατάλογο στο αρχείο /etc/inotify-createrepo.conf.
Χρήση
Όταν προσθέτετε οποιοδήποτε αρχείο σε έναν κατάλογο /var/www/repos/rpm-repo/ Το inotifywait θα δημιουργήσει ένα αρχείο /tmp/need_create. Η συνάρτηση run_createrepo εκτελείται σε έναν άπειρο βρόχο και παρακολουθεί το αρχείο /tmp/need_create. Εάν το αρχείο υπάρχει, τότε εκτελέστε createrepo --update.
Για να κάνετε υψηλή διαθεσιμότητα από μια υπάρχουσα λύση, νομίζω ότι μπορείτε να χρησιμοποιήσετε 2 διακομιστές, τον Keepalived για HA και τον Lsyncd για συγχρονισμό τεχνουργημάτων. Lsyncd - ένας δαίμονας που παρακολουθεί τις αλλαγές στον τοπικό κατάλογο, τις συγκεντρώνει και μετά από ένα ορισμένο χρονικό διάστημα, το rsync ξεκινά να τις συγχρονίζει. Λεπτομέρειες και ρυθμίσεις περιγράφονται στην ανάρτηση "Γρήγορος συγχρονισμός ενός δισεκατομμυρίου αρχείων".
WebDav
Υπάρχουν διάφοροι τρόποι για να ανεβάσετε αρχεία: SSH, NFS, WebDav. Το WebDav φαίνεται να είναι μια σύγχρονη και απλή επιλογή.
Για το WebDav, θα χρησιμοποιήσουμε το Apache httpd. Γιατί το Apache httpd το 2020 και όχι το nginx;
Θα ήθελα να χρησιμοποιήσω αυτοματοποιημένα εργαλεία για τη δημιουργία μονάδων Nginx + (για παράδειγμα, Webdav).
Νομίζω ότι θα κάνετε μόνοι σας την υπόλοιπη διαμόρφωση httpd του Apache.
Το Nginx μπροστά από τον Apache httpd
Σε αντίθεση με τον Apache, το Nginx χρησιμοποιεί ένα μοντέλο επεξεργασίας αιτημάτων που βασίζεται σε συμβάντα, πράγμα που σημαίνει ότι απαιτείται μόνο μία διεργασία διακομιστή HTTP για οποιονδήποτε αριθμό πελατών. Μπορείτε να χρησιμοποιήσετε το nginx και να μειώσετε το φόρτο του διακομιστή.
διαμόρφωση nginx-front.conf. Νομίζω ότι θα κάνετε μόνοι σας την υπόλοιπη διαμόρφωση του nginx.