Replicare WINS intre un cluster ruland Windows Server 2003 si un cluster ruland 2008
Salut,
Am sa va scriu despre o situatie interesanta intalnita recent de mine in cadrul WINS-ul.
Infrastructura
=-=-=-=-=-=-=-=
Cluster de WINS cu doua noduri de Windows Server 2008 si unul cu doua noduri de Windows Server 2003.
Replicarea bazei de date a WINS-ului arata in felul urmator:
W2003 <--- W2008 <---> W2008 ---> W2003
Replicare de tip "Pull" de la serverele de 2003 la serverele de 2008, si replicare de ambele tipuri, "Push" si "Pull", intre serverele de 2008.
Problema
=-=-=-=-=-=
Replicarea (fie ea “Push” sau “Pull”) dintre serverele de 2008 nu functioneaza. Replicarea de tip “Push”dintre servere genereaza urmatoarul Event:
Log Name: System
Source: Wins
Date: 9/17/2009 1:10:08 PM
Event ID: 4243
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: Wins.test.local.com
Description:
WINS Pull thread encountered an exception during the process of sending a push notification to another WINS.
De mentionat este ca replicarea de tip “Pull” de la serverele de 2003 la cele de 2008 functioneaza.
Testele si verificari pe care le-am facut
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
In primul rand am verificat conform KB-ului 822158, sa fie totul in regula cu exceptiile Antivirusului.
Am adaugat “%systemroot%\system32\wins” la exceptii, am incercat replicarea din nou, dar eroarea era generata in continuare.
Am vrut sa vedem intr-un Trace de retea aceasta replicare dintre nodurile de Windows Server 2008.
Vom testa cateva scenarii:
Scenariul 1:
W2008 <--- W2008
192.168.1.1 face o replicare de tip “Pull” de la 192.168.1.2
192.168.1.5 (adresa clusterului) 192.168.1.2 TCP TCP:Flags=......S., SrcPort=64237, DstPort=Internet Name Server(42), PayloadLen=0, Seq=80858379, Ack=0, Win=8192
192.168.1.2 (adresa resursei WINS) 192.168.1.5 TCP TCP: [Bad CheckSum]Flags=...A..S., SrcPort=Internet Name Server(42), DstPort=64237, PayloadLen=0, Seq=1956818950, Ack=80858380
192.168.1.5 (adresa clusterului) 192.168.1.2 TCP TCP:Flags=...A...., SrcPort=64237, DstPort=Internet Name Server(42), PayloadLen=0, Seq=80858380, Ack=1956818951, Win=513
192.168.1.2 (adresa resursei WINS) 192.168.1.5 TCP TCP: [Bad CheckSum]Flags=...A...F, SrcPort=Internet Name Server(42), DstPort=64237, PayloadLen=0, Seq=1956818951, Ack=80858380
192.168.1.5 (adresa clusterului) 192.168.1.2 WinsRpl WinsRpl:Transport on TCP: Association Start Request Message {WinsRpl:7, TCP:6, IPv4:5}
192.168.1.2 (adresa resursei WINS) 192.168.1.5 TCP TCP: [Bad CheckSum]Flags=...A.R.., SrcPort=Internet Name Server(42), DstPort=64237, PayloadLen=0, Seq=1956818952, Ack=80858425
Se face TCP Handshake-ul si pe urma se initiaza replicarea bazei de date. Se vede in ultimul frame *** 192.168.1.2 da Reset la conexiune.
Scenariul 2:
W2008 ---> W2008
192.168.1.2 face o replicare de tip “Push” la 192.168.1.1
192.168.1.5 (adresa clusterului) 192.168.1. 1 TCP TCP: [Bad CheckSum]Flags=......S., SrcPort=57227, DstPort=Internet Name Server(42), PayloadLen=0, Seq=3180611831, Ack=0, Win=8192
192.168.1.1 (adresa resursei WINS) 192.168.1.5 TCP TCP:Flags=...A..S., SrcPort=Internet Name Server(42), DstPort=57227, PayloadLen=0, Seq=3509702165, Ack=3180611832, Win=8192
192.168.1.5 (adresa clusterului) 192.168.1.1 TCP TCP: [Bad CheckSum]Flags=...A...., SrcPort=57227, DstPort=Internet Name Server(42), PayloadLen=0, Seq=3180611832, Ack=3509702166
192.168.1.5 (adresa clusterului) 192.168.1.1 WinsRpl WinsRpl:Transport on TCP: Association Start Request Message {WinsRpl:3, TCP:2, IPv4:1}
192.168.1.1 (adresa resursei WINS) 192.168.1.5 TCP TCP:Flags=...A.R.., SrcPort=Internet Name Server(42), DstPort=57227, PayloadLen=0, Seq=3509702166, Ack=3180611877
Si aici vedem, ca si in cazul primului scenariu, ca 192.168.1.1 da Reset la conexiune.
Scenariul 3:
W2003 <--- W2008
192.168.1.3 face o replicare de tip “Pull” de la 192.168.1.2
192.168.1.3 (adresa resursei WINS) 192.168.1.2 TCP TCP:Flags=......S., SrcPort=3361, DstPort=Internet Name Server(42), PayloadLen=0, Seq=2827702968, Ack=0, Win=65535 ( ) = 65535 {TCP:2, IPv4:1}
192.168.1.2 (adresa resursei WINS) 192.168.1.3 TCP TCP: [Bad CheckSum]Flags=...A..S., SrcPort=Internet Name Server(42), DstPort=3361, PayloadLen=0, Seq=3681779573, Ack=2827702969, Win=8192 ( Scale factor not supported ) = 8192 {TCP:2, IPv4:1}
192.168.1.3 (adresa resursei WINS) 192.168.1.2 TCP TCP:Flags=...A...., SrcPort=3361, DstPort=Internet Name Server(42), PayloadLen=0, Seq=2827702969, Ack=3681779574, Win=65535 (scale factor 0x0) = 65535 {TCP:2, IPv4:1}
192.168.1.3 (adresa resursei WINS) 192.168.1.2 WinsRpl WinsRpl:Transport on TCP: Association Start Request Message {WinsRpl:3, TCP:2, IPv4:1}
192.168.1.2 (adresa resursei WINS) 192.168.1.3 WinsRpl WinsRpl:Transport on TCP: Association Start Response Message {WinsRpl:3, TCP:2, IPv4:1}
192.168.1.3 (adresa resursei WINS) 192.168.1.2 WinsRpl WinsRpl:Transport on TCP: Replication Message {WinsRpl:3, TCP:2, IPv4:1}
Replicarea aici functioneaza fara nici o problema. Diferenta evidenta fata de cele 2 scenarii care nu functioneaza si acesta este ca initializarea replicarii, cand pleaca de la un server WINS de 2008 foloseste adresa clusterului in loc de adresa resursei WINS!
Solutia
=-=-=-=-=
Intrand in Failover Cluster Manager la clusterul de WINS, am adaugat serviciului de WINS un dependency pe adresa de IP a resursei WINS.
Astfel comunicarea va fi initiata tot pe adresa de IP a resursei si putem evita aceaste probleme la nivel de replicare a bazei de date, fie ea de tip “Push” sau “Pull”.
Sper ca aceste randuri sa va fie de folos in eventual rezolvare a unei problem de replicare in cadrului WINS-ului.
--- Liviu