Clustering SQL Server Tom Pullen Senior DBA, RM Education
Agenda Why Cluster? Is it worth the hassle and expense? How does it compare to other HA technologies? How to Cluster plan prepare execute test/monitor
Why Cluster? High availability requirements – 24X7, patching, hotfixes Cost and Benefit Requirements: hardware, software, licenses Alternatives: comparing clustering with other HA technologies Limitations – what does clustering not protect you from? Combining clustering with other HA technologies – log shipping, mirroring, offloading reporting load
How to cluster Plan Prepare Execute Test
Plan 1.Consult your users/boss/finance director! 2.Design your cluster: Nodes, Instances, Storage 3.Write a plan for build 4.Write a plan for migration/go-live 5.Think of everything! 6.Get your plans and design peer-reviewed 7.Think about failure – how to go back? 8.Plan decision points – when/if to proceed, or give up & the points of no return
Prepare Do everything you can in advance - create security accounts - obtain/reserve IP addresses - obtain install media – and SP install files - ensure you accurately estimate the time requirements – be conservative! - plan downtime, advertise downtime, arrange holding pages - think about all the other things you normally need on a new server: logins, jobs, configs, SPs, backup software, backup location, tapes?, database mail, alerts etc!
Execute Print your plan Follow it Mark your progress Give yourself incentives! Publicise your progress Get help if you encounter problems Be willing to give up if necessary
Steps in clustering Build servers, OS, AD, networking, SAN/LUN presentation [or have this done for you] – check everything! Install/configure MSDTC Install clustering Create cluster groups Cluster MSDTC Test failover Install SQL Server instance(s) Service Pack/Hotfix/Cumulative Update(s) Configure Do all the other normal things! (Jobs, logins etc) Test failover and failure
MSDTC MSDTC – Under Windows 2003, it is a pain MSKB docs can be misleading How to enable network DTC How to cluster MSDTC Enable network DTC on each node and set permissions BEFORE clustering Under Windows 2008/SQL Server 2008, things are much improved! If you get into a tangle clustering MSDTC, it is sometimes quicker to strip everything out ( cluster.. /forcecleanup ) and start again! Clustering itself is easier than getting MSDTC right!
Cluster! Shut down all but the first node Cluster Administrator → new cluster Enter name, IP, Quorum disk Switch on other server(s) and add them to the cluster Configure heartbeat network Create cluster groups and disk resources ready for SQL Server to install into
Cluster Administrator
A group before SQL Server is installed
cluster.exe command example CLUSTER /CLUSTER:SQLCLUS01 GROUP "BACKUP1" /CREATE CLUSTER /CLUSTER:SQLCLUS01 GROUP "BACKUP1" /ONLINE CLUSTER /CLUSTER:SQLCLUS01 GROUP "BACKUP1" /SETOWNERS:SQL05 CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "LUN U_BAK" /CREATE /GROUP:"BAK_SHARE" /TYPE:"Physical Disk" /PRIV DRIVE="U:" /OFFLINE CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "LUN U_BAK" /ONLINE CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "Backup IP Address Public" /CREATE /GROUP:"BACKUP1" /TYPE:"IP Address" /PRIV ADDRESS=" " /PRIV SUBNETMASK=" " /PRIV NETWORK="Public" /OFFLINE CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "Backup Network Name Public" /CREATE /GROUP:"BACKUP1" /TYPE:"Network Name" /PRIV NAME="SQLCLUS01BAK" /OFFLINE CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "Backup Network Name Public" /ADDDEPENDENCY:"Backup IP Address Public" CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "Backup Network Name Public" /PRIV RequireKerberos=0 CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "Backup_Share" /CREATE /GROUP:"BACKUP1" /TYPE:"File Share" /PRIV SHARENAME="BACKUPS1" /PRIV PATH="U:\" /OFFLINE CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "Backup_Share" /ADDDEPENDENCY:"Backup Network Name Public" CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "Backup_Share" /ADDDEPENDENCY:"LUN U_BAK" CLUSTER /CLUSTER:SQLCLUS01 RESOURCE "Backup_Share" /PRIV Security="Everyone",set,C:security CLUSTER /CLUSTER:SQLCLUS01 GROUP "BACKUP1" /OFFLINE CLUSTER /CLUSTER:SQLCLUS01 GROUP "BACKUP1" /ONLINE
Install SQL Server Instance(s) Run setup! Do you like unattended installs/batch files? SQL Server 2005 runs multiple times automatically on each node using Task Scheduler SQL Server 2008 must be installed on each node Interactive install of SQL Server requires you to specify:- Components to install Instance Name, Virtual Server Name + IP, Cluster Group, Cluster Node Configuration Setup account info Service account Domain group for cluster services Authentication mode Collation Error usage & reporting Unattended install requires you to specify all of these in the config file Do it all over again for each instance! Service pack – does each engine instance on each node. Must be run from active node. Don’t forget to Service Pack Tools, Shared Components, SSIS, SSNAC/connectivity, etc
Install SQL Server Instance(s)
Now make your instance like you normally would! Configure! RAM especially. Think about min, max, what can be where? MAXDOP? Max worker threads? Logins Jobs Alerts Database Mail SPs in system DBs? Startup SPs Trace Flags Auditing Maintenance Sysmessages? Static data? Resize system DBs? Move/split tempdb files? Any other things that are particular to your environment
Test! Test failover Test failure Fix issues Run each instance on every Node it can exist on and check it is ok
Migrate Get your User DBs on – migrate or create? Populate (Re)point your apps Test your apps Anything else? (Replication?) Reporting services? Analysis Services?
Monitor Enable alerts Failover – startup SP? Monitor performance Monitor availablility Monitor disk space Monitor your monitor!
Some real-world clusters
Summary Failing to plan is planning to fail Write your plan – and follow it! Don’t be scared of clustering Know where to find help Practice if you can with test servers Don’t panic! But feel free to curse MSDTC...
Good Resources How to cluster Windows How to cluster SQL Server MSDN Clustering Blog Windows 2008 Clustering Step-By-Step Windows 2003 Microsoft White Paper (comprehensive!)