always on, multi-site design considerations

29
John Q Martin Sales Engineer Multi-Site Always On Design Considerations

Upload: john-martin

Post on 06-Jan-2017

339 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Always On, Multi-Site Design Considerations

John Q MartinSales Engineer

Multi-Site Always On Design Considerations

Page 2: Always On, Multi-Site Design Considerations

About Me John Q Martin Sales Engineer for SQL Sentry

Over ten years experience with SQL Server

Previously worked as a DBA, SQL Dev, BI Dev

Worked as a SQL Server Premier Field Engineer (PFE) for Microsoft in the UK

Twitter : @SQLDiplomatEmail : [email protected] : http://blogs.sqlsentry.com/author/JohnMartin/

Page 4: Always On, Multi-Site Design Considerations

Book a Demo with me:http://SQLSentry.com/BookJohn

Page 5: Always On, Multi-Site Design Considerations

What is Always On? Always On is a set of features

Failover Cluster Instances (FCI)

Availability Groups

Page 6: Always On, Multi-Site Design Considerations

Availability Groups Database Level Protection

Local Storage

Multiple Replicas

Page 7: Always On, Multi-Site Design Considerations

Failover Cluster Instances Instance Level Protection

Shared Storage

Single Database Replica

Page 8: Always On, Multi-Site Design Considerations

Why Multi-site?Improved Resilience

High Availability and Disaster Recovery

Service Versatility & Flexibility

RPO and RTO requirements

Page 9: Always On, Multi-Site Design Considerations

Multi-site HA Vs DR

Before you start on the multi-site road, understand what your

objective is. Are you looking for Multi-Site High Availability or a

Disaster Recovery option.

Page 10: Always On, Multi-Site Design Considerations

Multi-Site Considerations

Storage LayoutNetwork ConnectivitySoftware Versions in useClient Application Design

Page 11: Always On, Multi-Site Design Considerations

Storage Configurations

Failover Cluster Instances• SAN Replication

Failover Cluster Instance

Image Source: Windows Server 2008 Multi-Site Clustering Technical Decision-Maker White Paper, November 2007

Page 12: Always On, Multi-Site Design Considerations

Storage Configurations

Availability Groups• Local Storage

Image Source: Overview of AlwaysOn Availability Groups (SQL Server) [MSDN]

Page 13: Always On, Multi-Site Design Considerations

Network Connectivity Latency Can Hurt

Multiple IP SubnetsClustering Network Config

Page 14: Always On, Multi-Site Design Considerations

Network Connectivity Latency Can Hurt

Multiple IP SubnetsClustering Network Config

Site 1 Site 2

Update

Transaction Log Transaction Log

Page 15: Always On, Multi-Site Design Considerations

Network Connectivity Latency Can Hurt

Multiple IP SubnetsClustering Network Config

Site 1 Site 2

Transaction Log Transaction Log

Update

Page 16: Always On, Multi-Site Design Considerations

Network Connectivity Latency Can Hurt

Multiple IP SubnetsClustering Network Config

Site 1 Site 2

Transaction Log Transaction Log

Update

Page 17: Always On, Multi-Site Design Considerations

Network Connectivity Latency Can Hurt

Multiple IP SubnetsClustering Network Config

Site 1 Site 2

Transaction Log Transaction Log

Update

Page 18: Always On, Multi-Site Design Considerations

Network Connectivity Latency Can Hurt

Multiple IP SubnetsClustering Network Config

Site 1 Site 2

Transaction Log Transaction Log

Update

Page 19: Always On, Multi-Site Design Considerations

Network Connectivity Latency Can Hurt

Multiple IP SubnetsClustering Network Config

Site 1 Site 2

Transaction Log Transaction Log

Local Latency

Remote Latency

Update

Page 20: Always On, Multi-Site Design Considerations

Network Connectivity Latency Can Hurt

Multiple IP SubnetsClustering Network Config

Site 1 Site 2

Transaction Log Transaction Log

Local Latency

Remote Latency

UpdateCommit

Page 21: Always On, Multi-Site Design Considerations

Cluster Network Configuration

What and where to change.

Page 22: Always On, Multi-Site Design Considerations

Demo Code: Cluster DNS Config

## // Set Parameters for the network name you want to modify the DNS behavior for$clusterName = "sqllabcl01"$clusterGroupName = "SqlLabAg01"$clusterResourceType = "Network Name"

## // 0 / False = Register only the active IP Address for the network name## // 1 / True = Register all possible IP Addresses for the network name$ipRegistrationSetting = $false

## // Set reduced TTL (seconds) for DNS Records to use when not registering all network IP addresses$ttlValue = 30

## // If reverting to use all IP addresses then revert TTL for DNS to defaultif($ipRegistrationSetting){ $ttlValue = 1200}

## // Set the Register All Providers IP Address parameterGet-Cluster -Name $clusterName | ` Get-ClusterGroup -Name $clusterGroupName | ` Get-ClusterResource | Where-Object {$_.ResourceType -eq $clusterResourceType} | ` Set-ClusterParameter -Name RegisterAllProvidersIP -Value $ipRegistrationSetting

Page 23: Always On, Multi-Site Design Considerations

Demo Code: Cluster DNS Config (cont.)

## // Set the Register All Providers IP Address parameterGet-Cluster -Name $clusterName | ` Get-ClusterGroup -Name $clusterGroupName | ` Get-ClusterResource | Where-Object {$_.ResourceType -eq $clusterResourceType} | ` Set-ClusterParameter -Name RegisterAllProvidersIP -Value $ipRegistrationSetting

## // Set the TTL value appropriately for the configurationGet-Cluster -Name $clusterName | ` Get-ClusterGroup -Name $clusterGroupName | ` Get-ClusterResource | Where-Object {$_.ResourceType -eq $clusterResourceType} | ` Set-ClusterParameter -Name HostRecordTTL -Value $ttlValue

## // Stop the network name resourceGet-Cluster -Name $clusterName | ` Get-ClusterGroup -Name $clusterGroupName | ` Get-ClusterResource | Where-Object {$_.ResourceType -eq $clusterResourceType} | ` Stop-ClusterResource

## // Start the network name resourceGet-Cluster -Name $clusterName | ` Get-ClusterGroup -Name $clusterGroupName | ` Get-ClusterResource | Where-Object {$_.ResourceType -eq $clusterResourceType} | ` Start-ClusterResource

Page 24: Always On, Multi-Site Design Considerations

Demo Code: Cross-Subnet settings

# PowerShell Code# Specify the cluster name you want to set the values for$clusterName = "SqlLabCL01"# Specify values$crossSubDelay = 1000 # Min: 250, Max 4000$crossSubThreshold = 5 # Min: 2, Max 120

## Calculation for how long a node can be disconnected."Network Failure Tolerance: " + (($crossSubDelay/1000) * $crossSubThreshold).ToString() + " seconds."

$cluster = Get-Cluster -Name $clusterName

# Frequency that heartbeat is sent in ms$cluster.CrossSubnetDelay = $crossSubDelay# Number of missed heartbeats$cluster.CrossSubnetThreshold = $crossSubThreshold

## Current valuesget-cluster |` select CrossSubnetDelay, CrossSubnetThreshold, SameSubnetDelay, SameSubnetThreshold | ` Format-List

Page 25: Always On, Multi-Site Design Considerations

Quorum Configurations

It Depends

Page 26: Always On, Multi-Site Design Considerations

Software Versions Windows Server

• 2008 SP2 & Above*

SQL Server Enterprise Ed.• 2012 & Above

Page 27: Always On, Multi-Site Design Considerations

Application Design Allow for Latency

• Caching, Queuing etc.

Unreliable Connections• Retry Logic

Page 28: Always On, Multi-Site Design Considerations

More Information & Resources

SQL Performance www.sqlperformance.com

Team Blogs http://blogs.sqlsentry.com

Plan Explorer [Free] http://sqlsentry.com/products/plan-explorer

Get in contact with us Twitter : @SQLSentry Facebook : facebook.com/sqlsentry LinkedIn : SQL Sentry, LLC

Page 29: Always On, Multi-Site Design Considerations

Questions