Reply
Old October 2nd, 2007 Top | #1

OSNN Folding Team  
Electronic Punk's Avatar
The Last High
Joined: December 2001
Location: London
Posts: 18,506
Blog Entries: 51
Reputation: 3652
Power: 346

Default Print server failover with Windows 2003 standard?

We are looking at a huge upgrade that will see all of our Windows 2000 regional servers replaced with two Windows 2003 R2 servers.

Any share that existed will be converted to a DFS share -> users, groups, profiles (although they are being retired), remote installs, application installs, source, wsus (from parent hq), sophos (from parent hq)

Other software like APC Powerchute will be installed on all the servers regardless and I will have Backupexec installed on one with the source available on the other.



Basically I am looking at total redundancy, the one thing I may have overlooked is printers. I did a little research and basically I would seem to have two solutions:

- Print clustering. ( http://support.microsoft.com/?id=278455 ) But basically that would require a much more costly version of Windows so I don't really like that idea.
- Installing each network printer on each server and making them available twice.

The second is obviously pretty easy to do for me, but not for the users, especially with the onset of DFS I was hoping for a better option.

Any ideas?

Electronic Punk is offline   Reply With Quote
Old October 2nd, 2007 Top | #2
 
madmatt's Avatar
Bow Down to the King
Joined: April 2002
Location: New York
Posts: 13,312
Reputation: 4090
Power: 294

Default Re: Print server failover with Windows 2003 standard?

Have you ever configured/managed a cluster? I only have experience with setting up and managing an Exchange cluster. With that said it does not make the resources available twice.

Furthermore, you need Enterprise to use clustering.

madmatt is offline   Reply With Quote
Old October 2nd, 2007 Top | #3

OSNN Folding Team  
Electronic Punk's Avatar
The Last High
Joined: December 2001
Location: London
Posts: 18,506
Blog Entries: 51
Reputation: 3652
Power: 346

Default Re: Print server failover with Windows 2003 standard?

Well thats the thing, no way I can justify 40-50 copies of Enterprise server just to allow printer sharing redundancy.

Electronic Punk is offline   Reply With Quote
Old October 2nd, 2007 Top | #4

OSNN Folding Team  
kcnychief's Avatar
█▄█ ▀█▄ █
Joined: April 2005
Location: Massachusetts
Posts: 16,949
Reputation: 4941
Power: 302

Default Re: Print server failover with Windows 2003 standard?

Couldn't you do print pooling or whatever it's called?

XBOX Live Gamertag: kcnychief
kcnychief is offline   Reply With Quote
Old October 2nd, 2007 Top | #5

OSNN Folding Team  
Electronic Punk's Avatar
The Last High
Joined: December 2001
Location: London
Posts: 18,506
Blog Entries: 51
Reputation: 3652
Power: 346

Default Re: Print server failover with Windows 2003 standard?

Not sure how that works so will google it tomorrow.

Reading up on how to modify .msc files on a domain level now.

Really want services.msc to be standard rather extended by default, but don't want to modify it on every single server.

Electronic Punk is offline   Reply With Quote
Old October 2nd, 2007 Top | #6

OSNN Folding Team  
kcnychief's Avatar
█▄█ ▀█▄ █
Joined: April 2005
Location: Massachusetts
Posts: 16,949
Reputation: 4941
Power: 302

Default Re: Print server failover with Windows 2003 standard?

Here is an intro to it, seems like it may meet your needs?

http://www.microsoft.com/technet/pro....mspx?mfr=true

XBOX Live Gamertag: kcnychief
kcnychief is offline   Reply With Quote
Old October 2nd, 2007 Top | #7

OSNN Folding Team  
Electronic Punk's Avatar
The Last High
Joined: December 2001
Location: London
Posts: 18,506
Blog Entries: 51
Reputation: 3652
Power: 346

Default Re: Print server failover with Windows 2003 standard?

That sounds more like print device failover where print jobs will go to either of several printers.

I am looking for someone to send a job out to a printer on DOMAIN\HP Laserjet 5000 and it will be sent to either available server and deal with it intelligently.

It really depends how the pooling works, if it works like DOMAIN\Printerpool1 and that pool contains the same print device with two different print drivers on each servers and it can intelligently tell if one of those is unavailable then it might work, but that sounds like clustering.

I will check it out anyway and see if it can do it.

Worst comes to worst then I will have to either not have a server randomly die (which never really happens anyway) and having both servers offer all print devices but that could be confusing for the users.

Electronic Punk is offline   Reply With Quote
Old October 2nd, 2007 Top | #8
 
madmatt's Avatar
Bow Down to the King
Joined: April 2002
Location: New York
Posts: 13,312
Reputation: 4090
Power: 294

Default Re: Print server failover with Windows 2003 standard?

Do you have a problem that has you looking into doing this? Is the server unavailable for some reason or another? Is printing slow?

If you're looking into a print server cluster then I would assume all it would be doing it handling print jobs. Granted, I don't know how many users you support but I find it odd that printing wouldn't work with one server in place, especially if that's all this server is doing.

So yeah, what's the problem?

madmatt is offline   Reply With Quote
Old October 3rd, 2007 Top | #9

OSNN Folding Team  
Electronic Punk's Avatar
The Last High
Joined: December 2001
Location: London
Posts: 18,506
Blog Entries: 51
Reputation: 3652
Power: 346

Default Re: Print server failover with Windows 2003 standard?

No basically in each region at the moment we are have a DC and an exchange server.
Later this year and I suspect a good chunk of next year we will be upgrading those to R2 and using DFS to replicate the user data.

I am basically trying to minimise the disruption if we want to take one of those servers offline for any period of time.

RecentlyI had to do two days work on a file server backup because I wanted to reboot the other one (WMI was fubarred and the file system was churning itself up about it).

Basically its all about redundancy and minimising what we have to do when a server is offline so I can focus on fixing it rather than creating workarounds for existing services.

We are taking all we can into consideration, both servers will be DCs, they will have a DHCP superscope, DNS, DFS shares and everything else possible considered. Enterprise server however is just not a feasible option.

If a server goes down a key service is unavailable then I get two hours and then the fines start.

Electronic Punk is offline   Reply With Quote
Old October 3rd, 2007 Top | #10

OSNN Folding Team  
kcnychief's Avatar
█▄█ ▀█▄ █
Joined: April 2005
Location: Massachusetts
Posts: 16,949
Reputation: 4941
Power: 302

Default Re: Print server failover with Windows 2003 standard?

Somewhat related to the fact you have a DC and Exchange server - You should go Exchange 2007 and clustering. Heard something how MS is down to like less than 10 around the globe, from like 200 or something before

XBOX Live Gamertag: kcnychief
kcnychief is offline   Reply With Quote
Old October 3rd, 2007 Top | #11

OSNN Folding Team  
Electronic Punk's Avatar
The Last High
Joined: December 2001
Location: London
Posts: 18,506
Blog Entries: 51
Reputation: 3652
Power: 346

Default Re: Print server failover with Windows 2003 standard?

Exactly, those regional exchange servers are being retired.
But we sadly won't be going to exchange 2007 at this time.

Electronic Punk is offline   Reply With Quote
Old November 21st, 2007 Top | #12
 
jbaddock's Avatar
OSNN One Post Wonder
Joined: November 2007
Posts: 1
Reputation: 0
Power: 0

Default Re: Print server failover with Windows 2003 standard?

I think I have a solution to your problem.

Not wanting to spend money on Clustered servers, or wanting duplicate printers of course.

Windows xp creates a registry entry for each printer.
HKCU/Printers/Connections

You will see the server name in the key, as well as a Reg_SZ in the key called server.

Change both of these from the old server name to the new. although, in my tests, you need to only change the key, not the reg_sz. not sure how this will work if a server is down...so probably just change both. You don't even need to restart the print spool, or reboot. As soon as the registry entry is changed, the clients printer points to the new server.

Basically, (i haven't developed a script for this yet).
You need a script that a client could just run that would

Dim sOldPrintServer
Dim sNewPrintServer
sOldPrintServer = "PS1"
sNewPrintServer = "PS2"

For each item in Printers where the string equals sOldPrintServer Change to sNewPrintServer
lalala....

done.

That's it. Then, when you are back up and running properly, you can just push this out via login script, so the users don't have to be bothered running another one.

Hope that helps for what you are looking for.
jbaddock is offline   Reply With Quote
Old March 29th, 2008 Top | #13
 
isaacg's Avatar
OSNN Junior Addict
Joined: March 2008
Posts: 3
Reputation: 0
Power: 0

Default Re: Print server failover with Windows 2003 standard?

jbaddock this is excellent advice except my users don't have admin rights(and so cannot edit registry)...i think we can just have run the script under the user logged in and it will work, but it may not, I'll test it out and see....
isaacg is offline   Reply With Quote
Old April 6th, 2008 Top | #14
 
ZeroHour's Avatar
ho3 ho3 ho3
Joined: March 2004
Location: Scotland
Posts: 1,111
Reputation: 1032
Power: 118

Default Re: Print server failover with Windows 2003 standard?

How are you deploying the printers to the users?
Put a ping test into the vbs and if ping fails the script changes the servername variable.

<Z>
EduGeek.net -The I.T. professionals' life line
ZeroHour is offline   Reply With Quote
Old April 30th, 2008 Top | #15

OSNN Folding Team  
Electronic Punk's Avatar
The Last High
Joined: December 2001
Location: London
Posts: 18,506
Blog Entries: 51
Reputation: 3652
Power: 346

Default Re: Print server failover with Windows 2003 standard?

They just search the directory and add the one they want at the moment (highly complicated )

Electronic Punk is offline   Reply With Quote
Old June 5th, 2008 Top | #16
 
isaacg's Avatar
OSNN Junior Addict
Joined: March 2008
Posts: 3
Reputation: 0
Power: 0

Default Re: Print server failover with Windows 2003 standard?

guess i can't attach a file to this post, but i'll include the script that i managed to get working that accomplishes this.
It will ping your primary print server, and if no response, it will change the required reg keys for that logged in user to change existing printer connections for non working print server to alternate print server. It will also grab the current default printer, and set the changed print server's printer to be the new default printer(you lose your default printer when you change the server connection). I tested this and its working for even nonadmin users. A good tool to use to copy print drivers from one server to another is the windows print migrate utility.

please post feedback.

-Isaac

Code:
'--------------------------------------------
' Author: Isaac G
' Date: 4/29/2008
' Script to update users installed printers to
' use secondary print server
'

Option Explicit

Dim PF, StrHostPrintsrv1
Set PF = New PrinterFailover

	StrHostPrintsrv1 = "YOURPRIMARYPRINTSERVERNAME"
	If Ping(StrHostPrintsrv1) = False Then
	PF.PS_PROD = "YOURPRIMARYPRINTSERVERNAME"
	PF.PS_BACKUP = "YOURSECONDARYPRINTSERVERNAME"
	Else
	PF.PS_PROD = "YOURSECONDARYPRINTSERVERNAME"
	PF.PS_BACKUP = "YOURPRIMARYPRINTSERVERNAME"
	End If	
Public Function Ping(strHost)

    		Dim objPing, objRetStatus

    		set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
      		("select * from Win32_PingStatus where address = '" & strHost & "'")

    		for each objRetStatus in objPing
        		if IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 then
    			Ping = False
            		'WScript.Echo "Status code is " & objRetStatus.StatusCode
        		else
            		Ping = True
            		'Wscript.Echo "Bytes = " & vbTab & objRetStatus.BufferSize
            		'Wscript.Echo "Time (ms) = " & vbTab & objRetStatus.ResponseTime
           	 	'Wscript.Echo "TTL (s) = " & vbTab & objRetStatus.ResponseTimeToLive
        		end if
    		next
End Function 	

PF.UpdatePrinters

WScript.Quit


Class PrinterFailover

	
	'Public
	
	Public PS_PROD
	Public PS_BACKUP
	
	' Private
	
	Private oShell
	Private HKEY_CURRENT_USER
	Private HKCU_DEFAULT_PRINTER
	
	Private Sub Class_Terminate()
		Set oShell = Nothing
	End Sub

	Private Sub Class_Initialize()
		Set oShell = WScript.CreateObject("WScript.Shell")
		HKEY_CURRENT_USER = &H80000001	
	
		' Rev2
		HKCU_DEFAULT_PRINTER = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
		' end rev2

	End Sub

	Public Function UpdatePrinters()
	
		Dim v, ar, i, j

		ar = arPrinters()

		Dim retValueNames
		Dim retValueTypes
		
		Dim sKeyPath: sKeyPath = "Printers\Connections\"
		
		Dim RegFullKeyPath
		
		Dim arRegVal()
		
		Dim nName : nName = 0
		Dim nType : nType = 1
		Dim nVal  : nVal  = 2
		
		' rev2
		Dim PrintersUpdated: PrintersUpdated = False	
		Dim DefPrinter: DefPrinter = DefaultPrinter()
		' End rev 2

		For i = 0 to UBound(ar, 1)

			If InStr(ar(i), PS_PROD) > 0 Then
			
				'WScript.Echo "Updating printer key: " &  ar(i)
				
				' rev2
				PrintersUpdated = True
				' end rev2

				RegFullKeyPath = sKeyPath & ar(i)
				
				Call EnumRegVals(RegFullKeyPath, _ 
				                 retValueNames, _
				                 retValueTypes)
				
				ReDim arRegVal(3, UBound(retValueNames))
				
				For j = 0 To UBound(retValueNames) 
				  '  WScript.Echo "Value Name: " & retValueNames(j)  & " : " & oShell.RegRead("HKCU\" & RegFullKeyPath & "\" & retValueNames(j) )
				    
				    arRegVal(nName, j) = retValueNames(j)
				    
				    arRegVal(nType, j) = RegTypeNameFromVal(retValueTypes(j))
				    
				    arRegVal(nVal,  j) = oShell.RegRead("HKCU\" & RegFullKeyPath & "\" & retValueNames(j))
				    
				Next
				
				oShell.RegDelete "HKCU\" & RegFullKeyPath & "\"
				
				For j = 0 to UBound(arRegVal, 2)
					oShell.RegWrite Replace("HKCU\" & RegFullKeyPath & "\" & arRegVal(nName, j), PS_PROD, PS_BACKUP), _
					Replace(arRegVal(nVal, j),PS_PROD, PS_BACKUP), _
					arRegVal(nType, j)
				Next
			
			End If
		Next
		
		' rev2
		' Only update the default printer if we failed over something
		If PrintersUpdated Then
			UpdateDefaultPrinter(DefPrinter)
		End If
		'end rev2
		
	End Function


	Public Sub EnumRegVals(ByVal sKeyPath, _
			       ByRef retValueNames, _
			       ByRef retValueTypes)
	
	' WMI reference
	
	' http://msdn.microsoft.com/en-us/library/aa390387(VS.85).aspx

		Dim sComp: sComp = "."
		Dim i, oReg
		
		Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
		   sComp & "\root\default:StdRegProv")


		oReg.EnumValues HKEY_CURRENT_USER, sKeyPath,_
		   retValueNames, retValueTypes
			
	End Sub
	
	
	Private Function RegTypeNameFromVal(RegType)
		const REG_SZ = 1
		const REG_EXPAND_SZ = 2
		const REG_BINARY = 3
		const REG_DWORD = 4
		const REG_MULTI_SZ = 7
		
		Dim s
		
		Select Case RegType
		Case REG_SZ
		   s =  "REG_SZ"
		Case REG_EXPAND_SZ
		   s = "REG_EXPAND_SZ"
		Case REG_BINARY
		   s = "REG_BINARY"
		Case REG_DWORD
		   s = "REG_DWORD"
		Case REG_MULTI_SZ
		   s = "REG_MULTI_SZ" ' Even though RegWrite won't suppor this type
		End Select
		
		RegTypeNameFromVal = s
		
	End Function
	
	Private Function arPrinters()
	
		Dim sComp: sComp = "."
		Dim sKeyPath : sKeyPath = "Printers\Connections"
		Dim ar, subkey, oReg

		Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
		sComp & "\root\default:StdRegProv")
	
		oReg.EnumKey HKEY_CURRENT_USER, sKeyPath, ar
		
		arPrinters = ar	
	End Function
	
	' rev2
	Private Function DefaultPrinter()
		Dim s
		s = oShell.RegRead(HKCU_DEFAULT_PRINTER)
		DefaultPrinter = s
	End Function
	
	Private Sub UpdateDefaultPrinter(DefPrinter)
		oShell.RegWrite HKCU_DEFAULT_PRINTER, Replace(DefPrinter, PS_PROD, PS_BACKUP)
	End Sub

	' end rev2

End Class
isaacg is offline   Reply With Quote
Old June 28th, 2008 Top | #17
 
isaacg's Avatar
OSNN Junior Addict
Joined: March 2008
Posts: 3
Reputation: 0
Power: 0

Default Re: Print server failover with Windows 2003 standard?

bump...anyone?....
isaacg is offline   Reply With Quote

Reply

Bookmarks

Thread Tools

Posting Rules

Similar Threads
Thread Thread Starter Forum Replies Last Post
Network Shares Problem - Windows Home Server/Server 2003 indyjones Windows Server Systems 5 December 3rd, 2007 12:30am
windows server 2003 standard or slackware linux as server Dark Atheist Benchmarks & Performance 27 July 19th, 2007 1:24am
Service Pack 2 (Beta 1) Released for Windows Server 2003 and Windows XP x64 madmatt Submitted News 1 June 29th, 2006 1:56pm
For Sale: Microsoft Windows 2003 Server Standard Edition w/ 5 CALs kcnychief Garage Sale 13 June 18th, 2006 4:11am
windows server 2003 help SignFreak Windows Desktop Systems 1 March 7th, 2003 7:47pm