Jump to content
  • entries
    16
  • comments
    22
  • views
    6465

DNS load balancing for DCs


SOF

1150 views

 Share

Και μιας που πιάσαμε το θέμα του performance, συνεχίζω με το θέμα του load balancing όπου έχω να σας δώσω μια έξυπνη συμβουλή.

Ας πούμε ότι πήραμε τελικά την απόφαση να προσθέσουμε ή να αντικαταστήσουμε μερικούς DCs με καινούργιο hardware. Βλέπουμε λοιπόν το εξής φαινόμενο το οποίο όμως εξηγείται λογικά.

Οι παλιοί DCs έχουν ένα μέσο CPU load 50% και οι καινούργιοι 15%. Προφανώς πρέπει στο περίπου να εξυπηρετούν τον ίδιο αριθμό από LDAP ή authentication requests. Μόνο που οι καινούργιοι δεν μασάνε, και έχουν bandwidth να εξυπηρετήσουν αρκετά περισσότερα.

Ιδού λοιπόν ένα trick για να τους μπαλανσάρουμε λιγάκι. Το μυστικό είναι στο weight του DNS SRV Record των DCs.

Κάθε SRV Record έχει weight και priority.

To priority καθορίζει την σειρά με την οποία ένας client επικοινωνεί με έναν DC. Μια τιμή 0x0 αναπαριστά την  μεγαλύτερη δυνατή priority, και μια τιμή 0xffff την χαμηλότερη. Οι clients επικοινωνουν πρώτα με τους DCs με την υψηλότερη priority. Οι DCs με την χαμηλότερη priority επιλέγονται μόνο εάν δεν είναι δυνατή η επικοινωνία με τους προηγούμενους.

Όταν οι DCs εχουν το ίδια τιμή στο priority τότε το weight του priority καθορίζει την πιθανότητα να επιλεγούν πρώτοι.

Το weight λειτουργεί επομένως κάπως διαφορετικά. Η τιμή του καθορίζει δεν καθορίζει την σειρά αλλά την πιθανότητα ένας client να επιλέξει έναν DC μεταξύ ενός pool από DCs της ίδιας priority.΄

Ο παρακάτω τύπος χρησιμοποιείται για τον υπολογισμό αυτής της πιθανότητας.

LdapSrvWeight / Sum (LdapSrvWeight for DCs of that priority)

Για 3 DCs με το ίδιο priority έχουμε:

DC Weight Πιθανότητα
Α 3 50% (3/6)
Β 2 33,3% (2/6)
Γ 1 16,6% (1/6)

Θέλει λίγο προσοχή λοιπόν γιατί το weight υπολογίζεται διαφορετικά από το priority.

Το μεγαλύτερο weight είναι και το πιο πιθανό.

Πώς όμως θα τα υλοποιήσουμε όλα αυτά στο περιβάλλον μας; Η λύση είναι αρκετά εύκολη.

Δημιουργούμε ένα καινούργιο Group Policy και το συνδέουμε με το Domain Controllers OU.

Επεξεργαζόμαστε τα Security Settings του Group Policy και φιλτράρουμε τους DCs για τους οποίους θέλουμε να αλλάξουμε την τιμή του weight. Για παράδειγμα δίνουμε Apply Group Policy μόνο στους καινούργιους DCs.

Μια μικρή σημείωση. Συνήθως χρησιμοποιώ Sub OUs, αλλά τους DCs δεν επιτρέπεται να τους μετακινούμε έξω από το Domain Controllers OU.

Αλλάζουμε το setting του weight: Η συμβουλή μου είναι να μεγαλώνουμε την τιμή τμηματικά με μικρά βήματα για να αποφύγουμε μια ανεπιθύμητη υπερφόρτωση ορισμένων DCs.

To policy θα το βρείτε εδώ:

image

Από την στιγμή που το σετάρουμε, το μόνο που χρειάζεται για να ανανεωθούν τα SRV Records είναι ένα gpupdate /force.

Την δουλειά την αναλαμβάνει το netlogon service και ανανεώνει τα records αυτόματα στον primary DNS server που έχουμε καθορίσει στα TCP/IP Settings.

Αν θέλετε να δείτε τι συμβαίνει στο background ή εφόσον δεν τρέξει να βρείτε τι πήγε στραβά, μπορείτε να ενεργοποιήσετε το netlogon debug logging στον DC με την εντολή nltest /dbflag:0x2080ffff.

Στο αρχείο %windir%\debug\netlogon.log θα βρείτε αναλυτικές πληροφορίες της όλης διαδικασίας.

Εδώ ένα μικρό κομμάτι από το περιβάλλον μου.

02/02 23:02:44 [iNIT] Group Policy is defined for Netlogon

02/02 23:02:44 [iNIT] Following are the effective values after parsing

02/02 23:02:44 [iNIT]    LdapSrvWeight = 200 (0xC8)

02/02 23:02:44 [DNS] NlDnsScavenge: Starting DNS scavenge with: Force RefreshDomainRecords ForceRefreshDomainRecords 0

Με την εντολή nltest /dbflag:0x0 απενεργοποιούμε το debug logging ξανα.

Εαν όλα πανε καλά τότε θα παρατηρήσουμε ότι όντως το load των DCs εξισορροπήθηκε λιγο.

Προφανώς τα παραπάνω δεν αποτελούν μια NLB λύση, ούτε υπάρχει εγγύηση ότι ο κάθε client θα δημιουργεί το ίδιο load. Εξαρτάται τι εφαρμογή τρέχει κάθε φορα.

Ελπίζω πάντως να σας φανούν χρήσιμα.

 

Φιλικά

SOF

 Share

3 Comments


Recommended Comments

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...