Introduction
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 SRVWINFR1 et SRVWINFR2 est décrite. Les caractéristiques de l’installation sont les suivantes :
- Les ressources du cluster Quorum et la ressource MSDTC sont déjà créées et écoutent respectivement sur les adresses logiques FRDCOR100 et COREMSDTC.
- Le groupe de disques SAN est déjà prêt et s’appelle Group 0 dans les ressources du cluster : ce groupe contient 2 volumes. 1 volume pour les fichiers de données (E:\) et 1 volume pour les journaux de transactions (D:\).
- L’installation est réalisée avec un compte administrateur du domaine (
domain\zzsqlserver
) en mesure de manipuler l’AD (Active directory LDAP) et le DNS (Domain Name System), notamment pour réserver une adresse IP et créer l’adresse logique FRDCOR101. Ce point est très discutable mais il s’agit d’une technologie Windows (…). - Les 2 nœuds à installer sont SRVWINFR1 et SRVWINFR2. Ces 2 machines sont installées avec Windows Server 2003 64 bits Service Pack 2 : ce point est important car avec Windows Server 2008, l’installation est quelque peu différente (utilisation des SIDs recommandée).
- L’instance SQL Server 2008 R2 installée en mode failover n’est pas une instance nommée et seul le moteur base de données est installé. Les composants annexes Analysis Services, Reporting Services… ne sont pas installés en mode failover dans cette architecture.
- Le groupe
domain\ad.FR.Servers.CORE.ClusterServices
pour les services Cluster est déjà créé dans l’annuaire AD (Active Directory) par l’administrateur du domaine. Le compte de servicedomain\zzsqlserver
utilisé pour l’installation et les services MS SQL Server, SQL Agent… est ajouté dans ce groupe. - La nouveauté FILESTREAM de SQL Server 2008 n’est pas sélectionnée dans cette architecture.
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 ?
- SQL Server 2008 n’effectue plus l’installation sur d’autre(s) nœud(s) en même temps que le nœud actif contrairement à SQL Server 2005. L’ajout d’un nœud est désormais gouverné par l’administrateur.
- Avec SQL Server 2008, le nom logique réseau de l’instance SQL Server (FRDCOR101) ne s’appelle plus Virtual Server Name (VS) mais SQL Server Network Name (
FAILOVERCLUSTERNETWORKNAME
).
Caractéristiques du cluster FRDCOR100, navigation avec cluster.exe
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 FRDCOR100 avec RDP (Remote Desktop Protocol), la connexion est réalisée sur le nœud actif d’un cluster. Ici, SRVWINFR1 est le nœud 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 :
FRDCOR100 - C:\> cluster /?
cluster /LIST
L’option /LIST
liste les clusters existants dans un domaine :
FRDCOR100 - C:\> cluster /LIST
Cluster Name --------------- FRAPRN101 FRAPRN302 FRDCOR100 FRDMOS104 FRDMOS301 FRDMOS304
cluster NODE
L’option NODE
liste les nœuds (machines physiques) dans le cluster courant
(FRDCOR100) ainsi que le statut de chaque nœud :
FRDCOR100 - C:\> cluster NODE
Listing status for all available nodes: Node Node ID Status -------------- ------- --------------------- SRVWINFR1 1 Up SRVWINFR2 2 Up
Le cluster FRDCOR100 contient 2 nœuds SRVWINFR1 et SRVWINFR2 et
chaque nœud est "up
".
cluster GROUP
L’option GROUP
liste les groupes de ressources dans le cluster
FRDCOR100 - C:\> cluster GROUP
Listing status for all available resource groups: Group Node Status -------------------- --------------- ------ MSDTC SRVWINFR1 Online Cluster Group SRVWINFR1 Online Group 0 SRVWINFR1 Online Group 1 SRVWINFR1 Online
La commande cluster GROUP
montre ici que SRVWINFR1 est le nœud actif
pour 4 groupes de ressources :
- Le groupe MSDTC pour Microsoft Distribution Transaction Coordinator (installation non évoquée ici).
- Le groupe Cluster Group pour le Quorum (installation non évoquée ici).
- Le groupe Group 0 : groupe de ressources contenant 2 disques SAN (D:\ et E:\). Ce groupe sera utilisé pour installer MS SQL Server en failover
- Le groupe Group 1: groupe de ressources contenant 2 disques SAN (G:\ et H:\). Ce groupe n’est pas utilisé ici.
cluster RES (options /priv, /prop, /listowners)
L’option RES
liste plus finement les ressources du cluster
FRDCOR100 - C:\> cluster RES
Listing status for all available resources: Resource Group Node Status -------------------- -------------------- --------------- ------ Adresse IP MS DTC MSDTC SRVWINFR1 Online Nom réseau MS DTC MSDTC SRVWINFR1 Online Disk M: MSDTC SRVWINFR1 Online Ressource MSDTC MSDTC SRVWINFR1 Online Cluster IP Address Cluster Group SRVWINFR1 Online Cluster Name Cluster Group SRVWINFR1 Online Disk Q: Cluster Group SRVWINFR1 Online Disk D: Group 0 SRVWINFR1 Online Disk E: Group 0 SRVWINFR1 Online Disk G: Group 1 SRVWINFR1 Online Disk H: Group 1 SRVWINFR1 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
FRDCOR100 - 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
FRDCOR100 - C:\> cluster RES "Cluster Name" /priv
Listing private properties for 'Cluster Name': T Resource Name Value -- -------------------- ------------------------------ ----------------------- ... S Cluster Name Name FRDCOR100 ...
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
FRDCOR100 - C:\> cluster RES "Ressource MSDTC" /listowners
Listing possible owners for resource 'Ressource MSDTC': Possible Owner Nodes -------------------- SRVWINFR1 SRVWINFR2
MSDTC
4 ressources pour le groupe MSDTC (Microsoft Distribution Transaction Coordinator).
- Adresse IP MS DTC : 10.129.132.186
- Nom réseau MS DTC : COREMSDTC
- Disk M : disque sur lequel est installé MSDTC
- Ressource MSDTC : Distributed Transaction Coordinator
Cluster Group - Quorum
3 ressources pour le groupe Cluster Group ou Quorum.
- Cluster IP Address : 10.129.132.182
- Cluster Name : FRDCOR100 (adresse logique réseau du Quorum)
- Disk Q : disque sur lequel est installé le Quorum
Installation silencieuse du premier nœud en mode cluster FAILOVER (SRVWINFR1)
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 SRVWINFR1 (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 :
FRDCOR100 - 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 :
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="FRDCOR101"
FAILOVERCLUSTERIPADDRESSES="IPv4;10.129.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="FRDCOR101" |
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.129.132.183;LAN;255.255.255.0" |
Propriétés réseau de l’adresse logique FRDCOR101. 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 ". |
Ajout d’un nœud (SRVWINFR2)
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 : SRVWINFR1 et SRVWINFR2 (cluster node). La machine SRVWINFR1 est installée pour MS SQL Server et dans l’état actuel, seule la machine SRVWINFR1 est le propriétaire possible de la ressource MS SQL Server.
Pour ajouter le nœud SRVWINFR2 comme un autre propriétaire possible
de la ressource MS SQL Server, setup.exe
est lancé sur SRVWINFR2 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 SRVWINFR2 (nœud passif) et la ligne de commande ci-dessous suffit à ajouter SRVWINFR2 comme nœud :
SRVWINFR2 - 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 ressources créées dans le cluster après l’installation
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 :
FRDCOR100 - C:\> cluster RES
Listing status for all available resources: Resource Group Node Status -------------------- -------------------- --------------- ------ ... Disk D: Group 0 SRVWINFR1 Online Disk E: Group 0 SRVWINFR1 Online ... SQL Network Name (FRDCOR101) Group 0 SRVWINFR1 Online SQL IP Address 1 (FRDCOR101) Group 0 SRVWINFR1 Online SQL Server Group 0 SRVWINFR1 Online SQL Server Agent Group 0 SRVWINFR1 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 FRDCOR101, adresse logique réseau de la ressource MS SQL Server :
FRDCOR100 - C:\> cluster res "SQL IP Address 1 (FRDCOR101)" /priv
Listing private properties for 'SQL IP Address 1 (FRDCOR101)': T Resource Name Value -- -------------------- ------------------------------ ----------------------- S SQL IP Address 1 (FRDCOR101) Network LAN S SQL IP Address 1 (FRDCOR101) Address 10.129.132.183 S SQL IP Address 1 (FRDCOR101) SubnetMask 255.255.255.0 ...
Les nœuds comme propriétaires possibles pour une ressource SQL Server :
FRDCOR100 - C:\> cluster res "SQL IP Address 1 (FRDCOR101)" /listowners
Listing possible owners for resource 'SQL IP Address 1 (FRDCOR101)': Possible Owner Nodes -------------------- SRVWINFR1 SRVWINFR2
L’instance MS SQL Server créée est attaquée par les clients avec l’adresse
logique réseau FRDCOR101 (FAILOVERCLUSTERNETWORKNAME
). Bien entendu, la
variable T-SQL @@servername
est FRDCOR101, il ne s’agit jamais du nom physique
de la machine qui héberge la ressource MS SQL Server (SRVWINFR1 ou
SRVWINFR2).
sqlcmd -Usa -S FRDCOR101 -P<mot de passe>
select @@servername go
FRDCOR101
Test de bascule, déplacement vers un nœud : cluster moveTo
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 SRVWINFR1 vers le nœud SRVWINFR2
FRDCOR100 - C:\> cluster group "Group 0" /MoveTo:SRVWINFR2 /wait:120
L’option /wait
indique le "timeout" en secondes avant d’annuler bascule.
La commande cluster res
doit montrer le nœud SRVWINFR2 à l’issue de
la bascule :
FRDCOR100 - C:\> cluster res
Listing status for all available resources: Resource Group Node Status -------------------- -------------------- --------------- ------ ... Disk D: Group 0 SRVWINFR2 Online Disk E: Group 0 SRVWINFR2 Online ... SQL Network Name (FRDCOR101) Group 0 SRVWINFR2 Online SQL IP Address 1 (FRDCOR101) Group 0 SRVWINFR2 Online SQL Server Group 0 SRVWINFR2 Online SQL Server Agent Group 0 SRVWINFR2 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é.
Suppression d’un nœud
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 SRVWINFR2 comme propriétaire
possible de l’instance MSSQLSERVER :
SRVWINFR2 - 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.