基本上的安裝可以參考我上述的安裝步驟進行,但是有一點需要特別注意的事,那就是IP與網段的設定,在EC2上由於私有IP的設定都需要綁定在網卡上,所以無法像在自已的環境中先行配置與保留,所以在一開始的IP設定與網段設定,非常的重要,因為這一部份如果沒有先行規劃好的話,後面你要更改非常的麻煩,這也是我重新安裝的原因之一。
首先我先將我目前主機的規劃整理如下。
預期架構:
目前希望架設三個節點,二個節點為同步模式,另一個節點為非同步模式,並且可以進行唯讀讀取的動作。
主機資訊:
Host Name | OS Version | SQL Version |
Cary-AD | Windows 2012 R2 | |
Cary-SQLN1 | Windows 2012 R2 | SQL Server 2012 SP2 |
Cary-SQLN2 | Windows 2012 R2 | SQL Server 2012 SP2 |
Cary-SQLN3 | Windows 2012 R2 | SQL Server 2012 SP2 |
IP配置(很重要):
Host Name | Public IP | Private IP | Cluster IP | Listener IP | Subnet |
Cary-AD | 52.88.0.0 | 172.31.33.5 | 172.31.32.0 | ||
Cary-SQLN1 | 54.185.0.0 | 172.31.24.231 | 172.31.24.232 | 172.31.24.233 | 172.31.16.0 |
Cary-SQLN2 | 52.87.0.0 | 172.31.42.72 | 172.31.42.73 | 172.31.42.74 | 172.31.32.0 |
Cary-SQLN3 | 54.185.0.0 | 172.31.13.11 | 172.31.13.12 | 172.31.13.13 | 172.31.0.0 |
1、在Amazon EC2上,建議先將上述的IP先配置好,然後再進行後續的動作,詳細的流程可以參考下列的安裝步驟,裡面有詳細關於Private IP配置的方式。
https://media.amazonwebservices.com/AWS_WSFC_SQL_Server_AlwaysOn.pdf
2、安裝完Failover Clustering之後,由於我是沒有透過iSCSI進行,所以建議在AD上建立一個分享目錄藉以進行Heartbeat,方法上可以透過介面進行,或是透過下列的PowerShell語法進行建立。
set-clusterquorum -NodeAndFileShareMajority "Cary-AD\Witness"
PS:建議在建立前可以先附予分享的目錄讓叢集名稱可以有讀寫的權限。
參考說明:
Set-ClusterQuorum
3、安裝完成後,由於預設是透過DHCP進行,可以看到服務是offline,需再將預期配置的Cluster IP也設定上去,設定完成後,再將服務設定成Online即可完成,再如下圖所示。
相關的說明可以參考下列的連結,解決方法只需要修改二個參數即可。
先開啟PowerShell視窗,輸入下列的指令確認目前的參數為何。
a. Import-Module FailoverClusters
b. Get-ClusterResource
確認目前叢集的資源有那些,其中需確認你目前的Listener的完整名稱,通常名稱都是Cluster Name + Listener Name,知道名稱後,再透過下列的指定捉取Listener的參數值。
c. Get-ClusterResource cary-cluster_cary-listener | get-clusterparameter
列出參數值後,需特別注意二個參數值,HostRecordTTL與RegisterAllProvidersIP,需分別進行更改。
d. Get-ClusterResource cary-cluster_cary-listener | Set-ClusterParameter -Name HostRecordTTL -Value 120
e. Get-ClusterResource cary-cluster_cary-listener | Set-ClusterParameter -Name RegisterAllProvidersIP -Value 0
當完成上述的設定後,需要再重新啟動Listener才會生效,可以透過下列的指令進行。
ALTER AVAILABILITY GROUP cary-cluster RESTART LISTENER 'cary-listener';
PS:此段指令是放在SQL Server中進行執行。
Connection Timeouts in Multi-subnet Availability Group
http://blogs.msdn.com/b/alwaysonpro/archive/2014/06/03/connection-timeouts-in-multi-subnet-availability-group.aspx
最後一個問題是針對Readonly Routing的問題,我目前測試發現可能暫時無解,我也確認在相關的Readonly設定無誤,但發現由於節點的IP只能有一個唯一的是Online,所以就算您透過sys.availability_read_only_routing_lists查出有多個路由順序的設定,但仍然只能連到Primary Node,目前的作法我是直接設定一組DNS然後搭配ApplicationIntent=readonly;的參數直接連到第三個節點,當然如果有其他較佳的作法,也歡迎提出分享。
參考連結:
- Implementing Microsoft Windows Server Failover Clustering (WSFC) and SQL Server 2012 AlwaysOn Availability Groups in the AWS Cloud
https://media.amazonwebservices.com/AWS_WSFC_SQL_Server_AlwaysOn.pdf - Set-ClusterQuorum
https://technet.microsoft.com/en-us/library/ee461013.aspx - Connection Timeouts in Multi-subnet Availability Group
http://blogs.msdn.com/b/alwaysonpro/archive/2014/06/03/connection-timeouts-in-multi-subnet-availability-group.aspx
關鍵字:Amazon、AlwaysOn、Readonly Routing、EC2、Connection Timeouts、WSFC
請問是否就不需要再設定DTC的角色呢?
回覆刪除