Πράκτορες αντιγραφής push και pull μέσω VPN τοποθεσίας-σε-τοποθεσία
Η θέση του πράκτορα ενός συνδρομητή καθορίζει ποιο μηχάνημα ανοίγει συνδέσεις μέσω του VPN. Επιλέξτε push ή pull με βάση ποιος κατέχει την εργασία, όχι με βάση τα βέλη του διαγράμματος.
Η θέση του πράκτορα, όχι η θέση των δεδομένων, είναι η απόφαση που διαμορφώνει μια συνδρομή SQL Server. Το μηχάνημα που εκτελεί τον πράκτορα ανοίγει τη σύνδεση, λειτουργεί κάτω από συγκεκριμένο λογαριασμό και αναλαμβάνει την ευθύνη όταν ο συγχρονισμός σταματήσει. Σε ένα VPN τοποθεσίας-σε-τοποθεσία αυτή η διαφορά είναι ο σχεδιασμός, όχι λεπτομέρεια. Σχεδιάστε τις συνδέσεις του πράκτορα πριν σχεδιάσετε το δίκτυο.
Τρεις ρόλοι, όχι δύο
Ο Publisher κατέχει τα δεδομένα του άρθρου, ο Distributor κατέχει τη βάση δεδομένων διανομής και ο Subscriber λαμβάνει αλλαγές. Ο Log Reader Agent εκτελείται στον Distributor για συναλλακτική αναπαραγωγή. Ο Distribution Agent είναι αυτός του οποίου η θέση αλλάζει με τον τύπο συνδρομής, και γι’ αυτό καθορίζει τον σχεδιασμό του δικτύου. Ξεκαθαρίστε αυτούς τους ρόλους πριν μιλήσετε για κανόνες VPN.
Μια συνδρομή push εκτελεί τον Distribution Agent στον Distributor, και μια συνδρομή pull τον εκτελεί στον Subscriber, όπως αναφέρει η τεκμηρίωση συνδρομών της Microsoft. Όλα στη συζήτηση του δικτύου προκύπτουν από το ποιο μηχάνημα είναι αυτό. Σημειώστε τέσσερα γεγονότα για κάθε συνδρομή: τον κεντρικό υπολογιστή του πράκτορα, την ταυτότητα της διεργασίας του, τις συνδέσεις βάσης δεδομένων που χρησιμοποιεί και τους πόρους που πρέπει να προσεγγίσει. Αυτά τα γεγονότα, όχι ένα βέλος στο διάγραμμα, σας λένε ποια κατεύθυνση πρέπει να λειτουργεί.
Το push σημαίνει ότι ο πράκτορας ζει στον Distributor
Με μια συνδρομή push, ο Distributor ανοίγει τη σύνδεση προς τον Subscriber μέσω του VPN. Ο ακροατής, το τείχος προστασίας και η σύνδεση SQL στην πλευρά του συνδρομητή πρέπει να δέχονται συνδέσεις που φτάνουν από την απομακρυσμένη πλευρά. Ο λογαριασμός υπηρεσίας του Distributor χρειάζεται επίσης άδεια στη βάση δεδομένων του συνδρομητή. Σχεδιάστε αυτή τη διαδρομή εισόδου πριν δημιουργήσετε τη συνδρομή, γιατί το να την ανακαλύψετε αργότερα συνήθως σημαίνει να τη δημιουργήσετε ξανά.
Η παράδοση στιγμιοτύπου προσθέτει μια διαδρομή που η σταθερή αναπαραγωγή δεν χρησιμοποιεί ποτέ. Αν το στιγμιότυπο φιλοξενείται σε κοινόχρηστο φάκελο, ο Distribution Agent διαβάζει από αυτόν τον φάκελο και ο λογαριασμός του συνδρομητή πρέπει να φτάσει στην ίδια διαδρομή UNC. Μια ροή αλλαγών που τρέχει εβδομάδες δεν λέει τίποτα για το αν θα λειτουργήσει μια επανάρχιση. Γι’ αυτό ο κοινόχρηστος φάκελος στιγμιοτύπου ανήκει στο σχέδιο από την αρχή.
Μη διαβάζετε το push ως μονόδρομη κίνηση. Ο πράκτορας χρειάζεται απαντήσεις, επιβεβαιώσεις και τις δικές του ανταλλαγές ελέγχου ταυτότητας. Η διαδρομή πρέπει να είναι αμφίδρομη στο επίπεδο της σύνδεσης ακόμη και όταν τα δεδομένα κινούνται προς μία κατεύθυνση.
Το pull σημαίνει ότι ο πράκτορας ζει στον Subscriber
Μια συνδρομή pull αντιστρέφει τη σύνδεση: ο Subscriber εκτελεί τον Distribution Agent και απευθύνεται στον Distributor. Αυτή η διάταξη ταιριάζει σε πολιτική VPN που επιτρέπει εξερχόμενες συνδέσεις από το υποκατάστημα και μπλοκάρει τις εισερχόμενες. Βάζει επίσης την απόφαση χρονοπρογραμματισμού στα χέρια όποιου φροντίζει τον διακομιστή του υποκαταστήματος. Επιλέξτε την όταν η ομάδα του υποκαταστήματος πρέπει να κατέχει τον δικό της συγχρονισμό και να προσέχει τις δικές της αστοχίες.
Ο λογαριασμός υπηρεσίας SQL Server Agent του συνδρομητή χρειάζεται πρόσβαση ανάγνωσης στη βάση δεδομένων διανομής και στον κοινόχρηστο φάκελο στιγμιοτύπου. Αυτός ο λογαριασμός είναι η ταυτότητα που εμφανίζεται στα σφάλματα αναπαραγωγής, και ένας τοπικός λογαριασμός υπηρεσίας χωρίς δικαιώματα τομέα αποτυγχάνει σε σημείο που μοιάζει με βλάβη δικτύου αλλά στην πραγματικότητα είναι βλάβη διαπιστευτηρίων. Ελέγξτε τον λογαριασμό πριν αποσφαλματώσετε τη σήραγγα. Η διόρθωση της σύνδεσης είναι συνήθως ταχύτερη από την απόδειξη της αθωότητας του δικτύου.
Η ιδιοκτησία ακολουθεί τον πράκτορα. Επιλέξτε push όταν η κεντρική ομάδα πρέπει να κατέχει και το χρονοδιάγραμμα και τις αστοχίες. Όποιο κι αν επιλέξετε, γράψτε το δίπλα στη συνδρομή ώστε ο επόμενος μηχανικός να ξέρει πού να κοιτάξει πρώτα.
Η επαναδημοσίευση αλλάζει τη διασπορά, όχι την ιδιοκτησία
Ένας συνδρομητής μπορεί να ρυθμιστεί να επαναδημοσιεύει σε περαιτέρω συνδρομητές, επιτρέποντας σε μία βάση δεδομένων υποκαταστήματος να εξυπηρετεί αρκετούς τοπικούς καταναλωτές χωρίς ο καθένας να τραβά μέσω του WAN. Η μεσαία βάση δεδομένων κρατά τώρα μια δημοσίευση και τους δικούς της πράκτορες. Κληρονομεί επίσης άδειες, παρακολούθηση και σχέδιο ανάκτησης που δεν είχε πριν. Αυτός ο πρόσθετος ρόλος είναι το τίμημα για την κατάργηση της επαναλαμβανόμενης παράδοσης μέσω WAN.
Η τεκμηριωμένη σειρά έχει σημασία: αρχικοποιήστε την εισερχόμενη συνδρομή πριν δημιουργήσετε τη δημοσίευση προς τα κάτω. Αντιμετωπίστε το ως βήμα κύκλου ζωής με επαλήθευση, όχι ως χαρτοδουλειά που παραλείπεται. Η αντιστροφή του παράγει μια αλυσίδα που φαίνεται διαμορφωμένη και δεν παραδίδει τίποτα.
Δηλώστε ρητά το μοντέλο εγγραφής. Η αναπαραγωγή ενός συνόλου δεδομένων μόνο για ανάγνωση σε τοπικό καταναλωτή είναι διαφορετικός σχεδιασμός από την αποδοχή εγγραφών σε πολλές τοποθεσίες, και μια αλυσίδα βελών δεν δημιουργεί επίλυση συγκρούσεων. Αν το υποκατάστημα πρέπει να γράφει, αυτή είναι ξεχωριστή απόφαση με δική της τοπολογία. Κάντε ορατή και την εξάρτηση: όταν ο επαναδημοσιευτής είναι εκτός, κάθε καταναλωτής από κάτω είναι παρωχημένος.
Αποδείξτε την τοποθέτηση από άκρη σε άκρη
Διαβάστε τον τύπο συνδρομής από τη βάση δεδομένων διανομής αντί να εμπιστεύεστε τη μνήμη, και μετά ελέγξτε ότι οι αλλαγές φτάνουν πραγματικά:
USE distribution;
SELECT publication, subscriber_db, subscription_type
FROM dbo.MSsubscriptions;
EXEC sp_replmonitorsubscriptionpendingcmds
@publisher = 'PUB1', @publisher_db = 'Sales',
@publication = 'SalesPub', @subscriber = 'BR1',
@subscriber_db = 'Sales';
Ένα subscription_type με τιμή 0 είναι push και 1 είναι pull, και δεν αλλάζει επί τόπου, οπότε μια αναντιστοιχία σημαίνει επαναδημιουργία της συνδρομής και όχι επεξεργασία της. Η κλήση εκκρεμών εντολών σας λέει αν ο επιλεγμένος πράκτορας μετακινεί εργασία ή απλώς εκτελείται. Μια συνδρομή που αναφέρει μηδέν εκκρεμείς εντολές ενώ ο πίνακας του συνδρομητή μένει κενός είναι διαφορετική βλάβη από μία που αναφέρει αυξανόμενη καθυστέρηση, και οι δύο οδηγούν σε διαφορετικούς ιδιοκτήτες.
Ολοκληρώστε με μια πραγματική αλλαγή: εισαγάγετε ή ενημερώστε μία γραμμή στον Publisher, περιμένετε να αναφέρει ο πράκτορας και διαβάστε αυτή τη γραμμή στον Subscriber. Κάντε το άλλη μία φορά μέσα από μια σύντομη διακοπή του VPN για να δείτε πώς ανακάμπτει ο πράκτορας. Μια συνδρομή που επιβιώνει αυτής της δοκιμής έχει τοποθέτηση που μπορείτε να τεκμηριώσετε και να υπερασπιστείτε.