Groups | Blog | Home
all groups > sql server clustering > april 2007 >

sql server clustering : Default or named instances??


Chris
4/25/2007 10:20:43 AM
I am a little confused on the term "SQL instances" because I found
conflicting documentation on the subject.

The question is, can I install 4 "instances" of SQL 2005 as "default"
instances on a cluster in different resource groups each one having its own
unique IP, "virtual sql name" and physical disks?

Before you answer have in mind that:
By "instance" I mean sql installation. When you start the sql installer its
asking for the sql server name which its the "virtual SQL name", an IP
address and what kind of "instance" you want to install, default or named.

I know that on a single server installation you can only have 1 default and
like 50 named instances depending on what version you are installing. (the
number is not important)

I also know that the client site can access the default instance by using
just the server name and a named instance by using the format
servername\sqlinstancename.

If I cannot install 4 "default" instances on the cluster then what will the
servername be in the format servername\sqlinstancename?

Geoff N. Hiten
4/25/2007 11:46:54 AM
Most SQL documentation on named instances ignores the existance of clusters.
Come to think of it, a lot of SQL documentation doesn't specify exceptons
for clusters where they are clearly warranted, but that is another
discussion.

When it comes to default and named instances on a cluster, you treat the
cluster as you would a single system, that is you get a single default
instance per cluster, nt per node. You can have any number of named
instances on a cluster, bu Microsoft only supports 16 total instances on a
single cluster. Basically, that is as far as they test so beyond there, you
are on your own.

As for the relationship between a virtual server and an instance, this is
always one-to-one. Each SQL Instance has its own virtual server. Each
virtual server has its own disk(s), IP address, and Netowrk Name.

You can use DNS to alias a short name to a named instance, provided you have
locked the port number to a known value on the named instance (this applies
whether the instance is clustered or not).

--
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP


[quoted text, click to view]
Chris
4/25/2007 12:49:25 PM
Thanks for the response.
I will have to disagree with the analogy you gave though about treating the
cluster as a single system and that's exactly what I'm trying to resolve
here.

According to your explanation about the relationship between SQL instance
and virtual server I would change the analogy to say I could treat the
VIRTUAL SERVER as I would a single system.

In this case I could have 4 virtual servers and to my understanding that's
where the rule of "only one default instance" applies. One default instance
for each virtual server. This will answer my last question about the
clients.

The clients can connect to virtual servers name (default) and
virtualserversname\instance if I have more than one instance for that
virtual server.

To sum it up:
1 four node cluster.
4 Virtual SQL servers (default instance)

If we need more instances then virtual server1 for example can have the
first default instance and then the virtual server1\inst1 and virtual
server1/inst2 etc...

I'm I going crazy, or you get my point?

Thanks
Chris


[quoted text, click to view]

John Vandervliet
4/25/2007 1:29:48 PM
Hello Chris,

Geoff is correct the cluster can only have one default instance. However,
treating the virtual server as a single server glosses over a complexity.
The servers in a cluster all support the virtual servers running on them, in
your case this is 4 installations of SQL server, that means 4 virtual
servers with their own IP and DNS server name.

The interesting part is that physically all these installs have to have
their binaries and registry entries put somewhere. Of course that means the
physical servers being used in the cluster.

Now for arguments sake I will assume you have 2 servers each called svrnode1
and srvnode2.

We then install the first instance as the default instance. Name will be
sqlnode1. In the registry for srvnode1 and svrnode2 you will see the
following value for InstalledInstances 'MSSQLSERVER' you can see this under
services as well if you like.

Now for the next installation say the server is sqlnode2, you then need to
pick an instance name, but why? Well because the unique name of MSSQLSERVER
(this is the default instance name) has been taken and the physical
registries of svrnode1 and svrnode2 have that value in them. So if you pick
SQLInstance2 as the name the registry value for InstalledInstances will be
'MSSQLSERVER SQLInance2' separated by spaces for each additional instance.

You would reference the instance from a client perspective as
sqlnode2\SQLInstance2.

I hope that helps


John Vandervliet

[quoted text, click to view]
Geoff N. Hiten
4/25/2007 3:19:00 PM
You are almost there. The limitation that makes it impossible is that each
virtual server can only host a single SQL instance. And it is the cluster,
not the virtual server, that is the entity that is limited to a single
default instance.

So, one cluster (Any number of nodes) gets one default instance.
Each instance (named or default) must have a unique virtual server.

--
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP




[quoted text, click to view]
Chris
4/26/2007 2:05:05 PM
Guys,
thank you all for your response.

So it's an acctual phisical registry limitation.

I've setup the cluster and tried to install the second instance as default
and the installer doesn't let you. It has to be a named instance.

Now I have another question.
For each instance I need a virtual server name and an instance name which
they have to be unique.

My first instance (default) is accessible by the virtual servers' name SQL1.
The second named instance is accessible by the new virtal servers' name \
instance name and it's SQL2\Inst1.

Is it possible to change the named instance to be accessible by using only
SQL2 or only Inst1 or any single name without the "slash"?
If not is it possible to be SQL1\Inst1 instead?

I don't want to end up with

SQL1
SQL2\Inst1
SQL3\Inst1A
SQL4\Inst1B

I'd rather have

SQL1
SQL1\Inst1
SQL1\Inst1A
SQL1\Inst1B

or just single names without "slash"
SQL1
SQL2
SQL3 etc

Thanks
Chris

[quoted text, click to view]

Geoff N. Hiten
4/26/2007 2:57:43 PM
You would need to create a client alias on each client or a DNS SVC record
to alias a short name to a long name.
--
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP

..
[quoted text, click to view]
Chris
4/26/2007 5:14:41 PM
You are the best and I thank you very much!!.

I know how to do the alias on each client but how do I do that using DNS.

I've checked the DNS records and I didn't see any SVC record. I did see an
SRV record though that has predefined services but no SQL.

[quoted text, click to view]

Geoff N. Hiten
4/30/2007 10:14:09 AM
It is the SRV record type that allows you to alias a short name to an
address/port number combination.

GNH

[quoted text, click to view]
Jeff Pancrazio
5/2/2007 10:45:09 AM
I am working with the same issue, The developer would rather have
sql1,sql2,sql3, etc instead of sql1/instance1 /instance2. etc... how do i do
this with SRV records, i didnt see a _sql records, lots of other types..
thanks!



[quoted text, click to view]

Geoff N. Hiten
5/2/2007 11:05:58 AM
The SQL alias name (sql1, sql2, etc.) becomes the service name. Plug in the
ip address and port number. Note that you must hard-set the port numbers on
each instance for this to work.

--
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP




[quoted text, click to view]
AddThis Social Bookmark Button