Un précédent article paru en novembre 2010 présente l'installation silencieuse d'une instance SQL Server 2008 R2 : Microsoft SQL Server 2008 R2 - Installation silencieuse ».
Cet article s'attarde à présent sur les paramètres spécifiques aux installations silencieuses d'un cluster SQL Server 2008 R2 en mode failover sur Windows 2003 SP2 64 bits.
Le schéma du cluster SQL Server 2008 est donné ci-dessous :

Cet article ne s'attarde pas sur l'installation des ressources du cluster (Quorum + MSDTC), seule l'installation de MS SQL Server 2008 R2 en mode silencieux sur les 2 nœuds PAR1DB1-144 et PAR1DB1-145 est décrite. Les caractéristiques de l'installation sont les suivantes :
Quelles sont les différences entre SQL Server 2008 et SQL Server 2005 sur Windows 2003 lors de l'installation d'un cluster MS SQL Server en mode failover ?
Avant d'aborder l'installation silencieuse de SQL Server 2008 R2 en mode silencieux sur un cluster, apprenons à naviguer sommairement dans un cluster avec l'utilitaire cluster.exe. Cette introduction a pour objectif de se familiariser également avec la terminologie employée autour du cluster : groupes de ressources, ressources, etc...
En se connectant sur PARDCOR100 avec RDP (Remote Desktop Protocol), la connexion est réalisée sur le nœud actif d'un cluster. Ici, PAR1DB1-144 est le noeud actif.
cluster.exe permet de lister les caractéristiques d'un cluster. Il est disponible dans une simple commande DOS. Pour connaître les options de cet utilitaire :
PARDCOR100 - C:\> cluster /?
L'option /LIST permet de lister les clusters existants dans un domaine :
PARDCOR100 - C:\> cluster /LIST
Cluster Name --------------- MCS-MOSS-MTE PARAPRN101 PARAPRN302 PARDCOR100 PARDMOS104 PARDMOS301 PARDMOS304
L'option NODE liste les noeuds (machines physiques) dans le cluster courant (PARDCOR100) ainsi que le statut de chaque nœud :
PARDCOR100 - C:\> cluster NODE
Listing status for all available nodes: Node Node ID Status -------------- ------- --------------------- PAR1DB1-144 1 Up PAR1DB1-145 2 Up
Le cluster PARDCOR100 contient 2 nœuds PAR1DB1-144 et PAR1DB1-145 et chaque nœud est "up".
L'option GROUP liste les groupes de ressources dans le cluster
PARDCOR100 - C:\> cluster GROUP
Listing status for all available resource groups: Group Node Status -------------------- --------------- ------ MSDTC PAR1DB1-144 Online Cluster Group PAR1DB1-144 Online Group 0 PAR1DB1-144 Online Group 1 PAR1DB1-144 Online
La commande cluster GROUP montre ici que PAR1DB1-144 est le nœud actif pour 4 groupes de ressources :
L'option RES liste plus finement les ressources du cluster
PARDCOR100 - C:\> cluster RES
Listing status for all available resources: Resource Group Node Status -------------------- -------------------- --------------- ------ Adresse IP MS DTC MSDTC PAR1DB1-144 Online Nom réseau MS DTC MSDTC PAR1DB1-144 Online Disk M: MSDTC PAR1DB1-144 Online Ressource MSDTC MSDTC PAR1DB1-144 Online Cluster IP Address Cluster Group PAR1DB1-144 Online Cluster Name Cluster Group PAR1DB1-144 Online Disk Q: Cluster Group PAR1DB1-144 Online Disk D: Group 0 PAR1DB1-144 Online Disk E: Group 0 PAR1DB1-144 Online Disk G: Group 1 PAR1DB1-144 Online Disk H: Group 1 PAR1DB1-144 Online
cluster RES est de loin la commande qui nous intéresse le plus.
Pour détailler les propriétés générales d'une ressource d'un groupe :
cluster res "nom de la ressource" /prop
PARDCOR100 - C:\> cluster RES "Cluster Name" /prop
Listing properties for 'Cluster Name': T Resource Name Value -- -------------------- ------------------------------ ----------------------- SR Cluster Name Name Cluster Name S Cluster Name Type Network Name ... D Cluster Name LooksAlivePollInterval 5000 (0x1388) D Cluster Name IsAlivePollInterval 60000 (0xea60) D Cluster Name RestartAction 2 (0x2) D Cluster Name RestartThreshold 3 (0x3) D Cluster Name RestartPeriod 900000 (0xdbba0) D Cluster Name RetryPeriodOnFailure 4294967295 (0xffffffff) D Cluster Name PendingTimeout 180000 (0x2bf20) D Cluster Name LoadBalStartupInterval 300000 (0x493e0) D Cluster Name LoadBalSampleInterval 10000 (0x2710) D Cluster Name LoadBalAnalysisInterval 300000 (0x493e0) D Cluster Name LoadBalMinProcessorUnits 0 (0x0) D Cluster Name LoadBalMinMemoryUnits 0 (0x0)
Pour détailler les propriétés privées et spécifiques d'une ressource d'un groupe :
cluster res "nom de la ressource" /priv
PARDCOR100 - C:\> cluster RES "Cluster Name" /priv
Listing private properties for 'Cluster Name':
T Resource Name Value
-- -------------------- ------------------------------ -----------------------
...
S Cluster Name Name PARDCOR100
...
Les options /prop et /priv permettent de retrouver toutes les informations indispensables sur les ressources (adresses IP, noms réseaux etc...).
Pour retrouver les nœuds possibles pour une ressource donnée :
cluster res "nom de la ressource" /listowners
PARDCOR100 - C:\> cluster RES "Ressource MSDTC" /listowners
Listing possible owners for resource 'Ressource MSDTC': Possible Owner Nodes -------------------- PAR1DB1-144 PAR1DB1-145
4 ressources pour le groupe MSDTC (Microsoft Distribution Transaction Coordinator).
3 ressources pour le groupe Cluster Group ou Quorum.
La distribution d'installation de MS SQL 2008 R2 est posée dans le répertoire SQL_2008_ENT_R2 du disque F:\ de la machine physique PAR1DB1-144 (nœud actif).
Pour obtenir un fichier de configuration modèle de l'installation du premier nœud en mode FAILOVER, lancer setup.exe et suivre les étapes graphiques jusqu'à l'étape "Ready to Install". Finalement cliquer sur "Cancel" pour annuler l'installation effective.
Le fichier modèle ConfigurationFile.ini est généré dans C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\AAAAMMJJ_HHMMSS\ConfigurationFile.ini.
L'installation silencieuse du premier nœud est alors déclenchée avec la ligne de commande ci-dessous :
PARDCOR100 - F:\> start /wait SQL_2008_ENT_R2\setup.exe /configurationfile=ConfigurationFile.ini
/q
/IACCEPTSQLSERVERLICENSETERMS
/SAPWD="motdepasse"
/SQLSVCPASSWORD="motdepasse"
/AGTSVCPASSWORD="motdepasse"
/FTSVCPASSWORD="motdepasse"
Chaque installation génère les fichiers de logs dans un répertoire ayant pour nomenclature C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\AAAAMMJJ_HHMMSS\
Voici les éléments notables dans le fichier ini concernant l'installation du premier nœud :
type ConfigurationFile.ini
;SQLSERVER2008 Configuration File [SQLSERVER2008] ACTION="InstallFailoverCluster" FEATURES=SQLENGINE,REPLICATION,FULLTEXT INSTANCEID="MSSQLSERVER" INSTANCENAME="MSSQLSERVER" INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server" INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" INSTANCEDIR="C:\Program Files\Microsoft SQL Server" FAILOVERCLUSTERDISKS="Disk D:" "Disk E:" FAILOVERCLUSTERGROUP="Group 0" FAILOVERCLUSTERNETWORKNAME="PARDCOR101" FAILOVERCLUSTERIPADDRESSES="IPv4;10.128.132.183;LAN;255.255.255.0" AGTSVCACCOUNT="domain\zzsqlserver" AGTDOMAINGROUP="domain\ad.FR.Servers.CORE.ClusterServices" FILESTREAMLEVEL="0" SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" SQLDOMAINGROUP="domain\ad.FR.Servers.CORE.ClusterServices" SQLSVCACCOUNT="domain\zzsqlserver" SQLSYSADMINACCOUNTS="domain\zzsqlserver" SECURITYMODE="SQL" INSTALLSQDATADIR="E:\\" SQLBACKUPDIR="D:\MSSQL10_50.MSSQLSERVER\MSSQL\Backup" SQLUSERDBLOGDIR="D:\MSSQL10_50.MSSQLSERVER\MSSQL\Data" FTSVCACCOUNT="domain\zzsqlserver"
| Paramètre | Description |
|---|---|
| ACTION="InstallFailoverCluster" | L'option InstallFailoverCluster indique l'installation d'un premier nœud en mode Failover. |
| FEATURES=SQLENGINE,REPLICATION,FULLTEXT | L'interface graphique ne permet pas de désélectionner les fonctionnalités REPLICATION et FULLTEXT. Par précaution, ces fonctionnalités sont également installées, notamment la fonctionnalité FULLTEXT, les spécifications données par les éditeurs étant généralement pauvres et superficielles. |
| INSTANCEID="MSSQLSERVER" INSTANCENAME="MSSQLSERVER" |
INSTANCEID et INSTANCENAME ont pour valeur MSSQLSERVER dans le cas
d'une instance par défaut. Dans le cas d'une instance nommée, INSTANCENAME est le nom de l'instance nommée. INSTANCEID permet de personnaliser l'identifiant de l'instance (clés de registres, répertoires d'installations...) afin d'écraser la valeur INSTANCENAME utilisée par défaut. |
| FAILOVERCLUSTERNETWORKNAME="PARDCOR101" | Adresse logique réseau du cluster MS SQL Server avec laquelle les applications clientes se connecteront. Cette adresse sera ajoutée dans le DNS au cours de l'installation. |
| FAILOVERCLUSTERIPADDRESSES ="IPv4;10.128.132.183;LAN;255.255.255.0" |
Propriétés réseau de l'adresse logique PARDCOR101. Le format est : <IP Type>;<adresse IP>;<network name>;<subnet mask>. Les types d'IP supportés sont DHCP, IPv4 et IPv6. L'adresse IP mentionnée doit être une IP non utilisée. Elle sera réservée dans le DNS à l'issue de l'installation. ! Bug : Le paramètre FAILOVERCLUSTERIPADDRESSES n'est pas généré dans le fichier ConfigurationFile. Il doit être ajouté à la main. |
| FAILOVERCLUSTERGROUP="Group 0" | Groupe de ressources dans le cluster à utiliser pour MS SQL Server.
Ici c'est le groupe "Group 0" contenant les disques D et E qui est
sélectionné. ! Interdiction d'utiliser les groupes de ressource utilisés pour MS DTC et le Quorum. |
| FAILOVERCLUSTERDISKS="Disk D:" "Disk E:" | Disques à utiliser dans le groupe de cluster. Il est possible de définir finement les disques utilisables par MS SQL Server dans un groupe de ressources cluster contenant plusieurs disques. |
| SQLDOMAINGROUP ="domain\ad.FR.Servers.CORE.ClusterServices" AGTDOMAINGROUP ="domain\ad.FR.Servers.CORE.ClusterServices" |
Groupe dans le domaine préalablement créé par l'administrateur du
domaine AD et contenant comme membres le(s) compte(s) de service du
domaine AD démarrant les services SQL du cluster (MS SQL, SQL Agent,
Analysis Services,...). Ce groupe est utilisé pour contrôler l'accès
aux clés de registre, fichiers, objets SQL Server et autres ressources
du cluster. Le compte de service domain\zzsqlserver démarrant SQL
Server et l'agent SQL Server est dans le groupe
domain\ad.FR.Servers.CORE.ClusterServices. Ce groupe ne doit pas être partagé par plusieurs applications et clusters. La spécification d'un groupe est spécifique à Windows Server 2003. Pour Windows Server 2008 : les services SIDs sont recommandés et par défaut (non abordé dans cet article). |
| INSTALLSQLDATADIR="E:\\" | Répertoire racine par défaut d'installation du moteur SQL Server
(bases systèmes etc...). ! Bug : Le fichier ini généré contient INSTALLSQLDATADIR="E:". Rajouter \\ sinon l'installation est en échec avec le message "E:MSSQL10_50.MSSQLSERVER\MSSQL\DATA is malformed or not absolute". |
L'ajout d'un nœud dans un système Cluster SQL Server est très simple.
Le cluster est constitué de 2 nœuds : PAR1DB1-144 et PAR1DB1-145 (cluster node). La machine PAR1DB1-144 est installée pour MS SQL Server et dans l'état actuel, seule la machine PAR1DB1-144 est le propriétaire possible de la ressource MS SQL Server.
Pour ajouter le nœud PAR1DB1-145 comme un autre propriétaire possible de la ressource MS SQL Server, setup.exe est lancé sur PAR1DB1-145 avec l'option /ACTION=addNode pour l'instance par défaut MSSQLSERVER créée précédemment.
La distribution d'installation de MS SQL 2008 R2 est posée dans le répertoire SQL_2008_ENT_R2 du disque F:\ de la machine physique PAR1DB1-145 (nœud passif) et la ligne de commande ci-dessous suffit à ajouter PAR1DB1-145 comme nœud :
PAR1DB1-145 - F:\SQL_2008_ENT_R2>setup.exe /q /ACTION=AddNode
/IAcceptSQLServerLicenseTerms
/INSTANCENAME="MSSQLSERVER"
/SQLSVCACCOUNT="domain\zzsqlserver"
/SQLSVCPASSWORD="motdepasse"
/AGTSVCACCOUNT="domain/zzsqlserver"
/AGTSVCPASSWORD="motdepasse"
/FTSVCACCOUNT="domain/zzsqlserver"
/FTSVCPASSWORD="motdepasse"
Seuls les comptes de service pour MS SQL Server (SQL), SQL Agent (AGT) et Full Text (FT) de l'instance par défaut MSSQLSERVER sont donnés avec leurs mots de passe. Le compte de service Full Text est optionnel si la fonctionnalité FULLTEXT n'a pas été sélectionnée dans l'installation.
Lorsqu'il s'agit d'une instance nommée, bien entendu, INSTANCENAME est le nom de l'instance nommée.
Les nouvelles ressources pour MS SQL Server en mode failover créées dans le group "Group 0" du cluster sont les suivantes après l'installation :
PARDCOR100 - C:\> cluster RES
Listing status for all available resources:
Resource Group Node Status
-------------------- -------------------- --------------- ------
...
Disk D: Group 0 PAR1DB1-144 Online
Disk E: Group 0 PAR1DB1-144 Online
...
SQL Network Name (PARDCOR101) Group 0 PAR1DB1-144 Online
SQL IP Address 1 (PARDCOR101) Group 0 PAR1DB1-144 Online
SQL Server Group 0 PAR1DB1-144 Online
SQL Server Agent Group 0 PAR1DB1-144 Online
Les options /prop, /priv, /listowners etc... de la commande cluster res "Resource Name" permettent de retrouver les caractéristiques définies lors de l'installation.
Par exemple, les paramètres IP de PARDCOR101, adresse logique réseau de la ressource MS SQL Server :
PARDCOR100 - C:\> cluster res "SQL IP Address 1 (PARDCOR101)" /priv
Listing private properties for 'SQL IP Address 1 (PARDCOR101)': T Resource Name Value -- -------------------- ------------------------------ ----------------------- S SQL IP Address 1 (PARDCOR101) Network LAN S SQL IP Address 1 (PARDCOR101) Address 10.128.132.183 S SQL IP Address 1 (PARDCOR101) SubnetMask 255.255.255.0 ...
Les noeuds comme propriétaires possibles pour une ressource SQL Server :
PARDCOR100 - C:\> cluster res "SQL IP Address 1 (PARDCOR101)" /listowners
Listing possible owners for resource 'SQL IP Address 1 (PARDCOR101)': Possible Owner Nodes -------------------- PAR1DB1-144 PAR1DB1-145
L'instance MS SQL Server créée est attaquée par les clients avec l'adresse logique réseau PARDCOR101 (FAILOVERCLUSTERNETWORKNAME). Bien entendu, la variable T-SQL @@servername est PARDCOR101, il ne s'agit jamais du nom physique de la machine qui héberge la ressource MS SQL Server (PAR1DB1-144 ou PAR1DB1-145).
D:> sqlcmd -Usa -SPARDCOR101 -P<mot de passe> 1> select @@servername 2> go
PARDCOR101
La commande cluster avec l'option moveTo permet de vérifier le bon comportement de la bascule d'un nœud vers un autre nœud pour un groupe de ressources donné. Pour déplacer le group Group 0 contenant SQL Server du nœud PAR1DB1-144 vers le nœud PAR1DB1-145
PARDCOR100 - C:\> cluster group "Group 0" /MoveTo:PAR1DB1-145 /wait:120
L'option /wait indique le "timeout" en secondes avant d'annuler bascule.
La commande cluster res doit montrer le nœud PAR1DB1-145 à l'issue de la bascule :
PARDCOR100 - C:\> cluster res
Listing status for all available resources: Resource Group Node Status -------------------- -------------------- --------------- ------ ... Disk D: Group 0 PAR1DB1-145 Online Disk E: Group 0 PAR1DB1-145 Online ... SQL Network Name (PARDCOR101) Group 0 PAR1DB1-145 Online SQL IP Address 1 (PARDCOR101) Group 0 PAR1DB1-145 Online SQL Server Group 0 PAR1DB1-145 Online SQL Server Agent Group 0 PAR1DB1-145 Online
La commande cluster avec l'option moveTo met le groupe "Group 0" offline et le met online sur l'autre nœud spécifié.
La suppression d'un nœud est très simple en lignes de commande, elle est également réalisée avec le binaire setup et l'option /ACTION=RemoveNode. Par exemple pour supprimer le nœud PAR1DB1-145 comme propriétaire possible de l'instance MSSQLSERVER :
PAR1DB1-145 - F:\> start /wait SQL_2008_ENT_R2\setup.exe
/q
/ACTION=RemoveNode
/INSTANCENAME="MSSQLSERVER"
Lorsqu'il s'agit d'une instance nommée, INSTANCENAME est le nom de l'instance nommée.
Pour désinstaller complètement une instance SQL Server 2008 en mode failover, l'action RemoveNode est exécutée sur chaque nœud.
| Version | Date | Commentaires |
|---|---|---|
| 1.0 | 02/2011 | Version initiale |
Microsoft : SQL Server 2008
Failover Clustering Whitepaper
Microsoft MSDN : SQL Server
2005 - Domain Groups for Clustered Services