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