Spletna stran uporablja piškotke za boljšo uporabniško izkušnjo in spremljanje statistike obiskov (Google Analytics).
Z nadaljno uporabo spletne strani ali klikom na "Strinjam se", se strinjate z uporabo piškotkov.
Piškotki in njihova uporaba

Dostop do MS SQL cluster instance brez uporabe imena instance

Objavil Blaž Kristan 30.4.2013 @ 08:05

Ko namestimo drugo (ali vse naslednje) instanco Microsoft SQL strežnika na Windows strežnik, jo moramo poimenovati (odtod naziv named instance) in do nje dostopamo v obliki SERVERNAME\INSTANCENAME medtem, ko do prve instance dostopamo zgolj z imenom strežnika. Isto se zgodi v cluster okolju, kjer pa je razlika ta, da že ob namestitvi vsaka instanca dobi svoj IP naslov in unikaten network (host) name.

IP naslov je v primeru namestitve na samostojni strežnik za vse instance enak, zato morajo druga in naslednje uporabljati neprivzet port (privzet je 1433), ki se določi naključno (no, ne čisto). Da pa je dostop s strani odjemalcev lažji (da ne rabijo iskati porta) se hkrati namesti še SQL Browser ter definirajo aliasi. Da SQL Browser razume do katere instance želimo dostopati, je Microsoft vpeljal zgoraj opisano metodo.

V primeru, da imamo multihomed strežnik (tak z večimi IP naslovi), lahko vsako od instanc bindamo na določen IP in ji spremenimo port na katerem posluša, a potem moramo do nje dostopati z IP naslovom, kar pa spet ni najlepše.

V cluster okolju ima vsaka instanca svojo cluster grupo, v kateri je tudi lastni IP naslov in network name (cluster se obnaša kot multihomed računalnik). Zato se lahko čisto vsaka instanca obnaša kot prva instanca in bi načeloma lahko do nje dostopali zgolj z imenom v cluster grupi. A, žal, ni tako! Microsoft še vedno namesti SQL Browser (ki se ne zaveda cluster okolja) in naključno določi port delovanja druge instance.

Nerodno za odjemalca je, da mora dostopati do SQL strežnika z imenom strežnika (network name) in imenom instace. To pa zna biti zoprno, še posebej, če želimo narediti dostop do cluster okolja transparenten (kadar cluster uporabljamo tako, da na enem nodu teče ena instanca, na drugem pa druga) in bi radi tudi ob rekonfiguraciji clustra/SQL strežnikov imeli odjemalce nespremenjene.

K sreči se z malo ročnega posega zgornje doseže brez večjih težav.

No, sam sem imel težave in to precejšnje, a to zato, ker sem poskusil bindati SQL strežnik na IP naslov v cluster grupi. Cluster servis pa je dovolj neumen, da konfiguracijo povozi in tako sem pridelal nedelujočo SQL instanco (ki pa sem jo kasneje vendarle uspešno usposobil).

Postopek za dostop do imenovane SQL instance v clustru je naslednji:

  1. Ustavimo "SQL Server (IME)" resource,
  2. odstranimo cluster preverjanje konfiguracije z ukazom:
    cluster res "SQL Server (IME)" /removecheck:"Software\Microsoft\Microsoft SQL Server\MSSQL.XXX\MSSQLSERVER"
  3. zaženemo "SQL Server Configuration Manager",
  4. razširimo "SQL Server Network Configuration" in izberemo instanco, ki jo želimo spreminjati,
  5. v desnem oknu kliknemo z desnim gumbom na "TCP/IP" in izberemo "Properties",
  6. v zavihku "Protocol" preverimo, da rubrika "Listen All" vsebuje "Yes",
  7. v zavihku "IP Addresses", poskrolamo čisto do dna, do "IPAll" razdelka,
  8. rubrika "TCP port" je privzeto prazna - nastavimo jo na 1433 (privzeti port za SQL Server),
  9. kliknemo "OK" - pojavi se opozorilo, da je potreben restart SQL servisa,
  10. v levem delu okna razširimo "SQL Native Client Configuration" in izberemo "Aliases",
  11. poiščemo pripadajoči alias za SQL instanco, dvokliknemo in spremenimo "Port No" na vrednost 1433,
  12. obnovimo cluster preverjanje konfiguracije resourceov:
    cluster res "SQL Server (IME)" /addcheck:"Software\Microsoft\Microsoft SQL Server\MSSQL.XXX\MSSQLSERVER",
  13. startamo SQL Service v clustru.

Koraki od 3. do 11. so čisto običajni, pomembna pa sta koraka 2. in 12., saj brez njiju cluster ob restartu SQL servisa obnovi konfiguracijo in SQL ne deluje na izbranem portu ali pa še slabše, se sploh ne zažene.

V zgornjem postopku moramo najprej poiskati resource name za izbrano SQL instanco, kar najdemo v Cluster Administrator. Iskanje imena namestitve (MSSQL.XXX) pa je malce bolj zoprno, saj moramo iskati po registru ali v mapi kamor smo namestili SQL strežnik.

Primer:

Komentarji

* Komentarje mora odobriti admin.