個人介紹:微軟最具價值專家、認證講師、無界工程師、場景式學習倡導者,曾在阿裡O2O倉儲解決方案公司擔任系統架構師一職,目前就職于網際網路企業擔任系統運維工程師,緻力于IT改善生活的實踐之路。
終于到了本系列最後一篇,在上一篇中,我們準備好了各種資源,包括搭建SQL Cluster群集的底層,在釋出了前面四篇後我收到了大量回報,現在集中回答下。
A、 文中采用 iscsi 伺服器作為共享存儲僅僅是為 demo 效果,但是生産環境絕不推薦使用 IAAS 層面的 iscsi 伺服器,那麼究竟什麼樣的架構才可以相對合理( IaaS 層面的 Guest Cluster 沒有絕對合理的架構)呢?我個人建議是這樣的,可以采用 AlwayON 來進行搭建 SQL 高可用(這也是從 SQL Server 2012之後就主推的架構),AlwayON (但是同樣需要安裝 Cluster ,隻是不需要再起 SQL Role,在 SQL Server 2016 Always On 不依賴域)可以無存儲進行搭建,如果确确實實需要搭建 SQL Cluster ,有什麼辦法呢?目前來說,國内大部分公有雲廠商不支援雙挂 NAS 盤的架構, QCloud 實際上底層支援,但是這同樣需要一定的 level (錢)才可以支援這種特殊配置,據我所知,目前客戶群體中不超過兩位數。
B、 那既然 SQL Servr 2012 之後不推崇 SQL Server Failover Cluster 了,為毛你還要寫 SQL Server Failover Cluste r文章?首先寫 SQL Server Failover ClusterC 最主要的目的是給大部分客戶在國内雲廠商上搭建 Failover Cluster (不單單是 SQL Cluster )提供指引,其次也是為了驗證國内雲廠商的可折(tu)騰(cao)性,單從這兩點來看,目前效果還是不錯的,從文章被官方騰雲閣收錄的情況來看,國内雲廠商的容忍度還是比較高的。
C、 後續計劃是怎麼樣的?你們以為就隻有 SQL Cluster 嗎?看過我個人部落格的童鞋應該都知道,我所寫的文章基本都是系列文,而且是平行世界炒雞大的系列文,既然這次系列文反響還不錯,那麼解下來的尿性應該就是《在 QCloud 上建立您的XXXX》的一大堆博文了,最終會跟我 VMCloud 雲平台系列文章做整合,這算是埋下的一個彩蛋,敬請期待。
有些童鞋肯定存在疑問,為什麼做一個 SQL Cluster 需要這麼多 CLB(VIP),這麼多角色有點混亂,現在我們就來捋一捋,涉及到本系列文章其實最重要有三個角色:
Cluster
DTC
SQL Cluster
其中 Cluster 作為 DTC 、 SQL 的基礎群集服務,自然不用多講,那麼 DTC 與 SQL 之間存在什麼關系,我個人是運維內建工程師,并不是專業 DBA ,通過請教 DBA 大師得知, DTC (分布式事務協調器)主要目的是為了實作分布式的事務型任務處理,確定節點間程序通信一緻,如果不做 Cluster 的話 DTC 不需要搭建,如果需要做到群集的話, DTC 就是必要條件之一,目前環境隻存在一個 SQL Cluster ,預設選擇第一個(也是唯一一個) DTC 執行個體作為分布式執行個體(為確定群集完整,這是 SQL Server 2008 之後才有的驗證)。
好了,話痨了這麼久,現在上正菜,涉及架構及相關網絡如下:

編号
伺服器名稱
生産IP
存儲IP
心跳IP
對外VIP
1
Q-DC01
192.168.108.188
無
2
Q-SG01
192.168.108.206
10.11.11.231
3
Q-SQL01
192.168.108.254
10.11.11.
10.10.10.2
ClusterName 192.168.108.99
4
Q-SQL02
192.168.108.114
10.10.10.234
SQLClusterName 192.168.108.99
與 ClusterIP 高可用部署一樣,這裡也需要采用腳本方式(見上一篇)進行判斷是否需要切換,記得把反向區域建立好,避免 nslookup 出現解析錯誤:
2.在 SQL 01、SQL 02 安裝 DTS 角色:
3.确認 SQL01、SQL02 媒體到位,初始化兩個節點的資料盤(我們将 SQL 主程式安裝在資料盤上,避免出問題),開始進行安裝:
4.點選群集管理器将 SQLData01 進行脫機删除(上一篇主要為了測試将共享存儲進行轉換成 CSV 測試轉移):
5.點選 SQLServerSetup 安裝程式,切換到安裝:
6.第一個節點(Q-SQL01)點選新的群集安裝并輸入 License :
7.一路點到安裝故障轉移群集規則檢測,預設會有群集警告(前篇介紹過由于 virio 驅動):
8.功能目錄、執行個體根目錄統一選擇輸入資料盤路徑:
9.輸入之前配置好的群集名稱及輸入執行個體名稱:
10.在檢查群集資源頁上下一步(由于存在仲裁盤及預設 cluster 這裡的 SQL 組不可用是正常的):
11.在群集磁盤頁面選擇 SQL Data01 作為 SQLCluster 共享存儲:
12.配置管理賬戶(這裡標明域管理,後面再添加 SQLAdmin 作為管理賬戶,建議生産環境直接使用 SQLAdmin 域賬戶作為管理賬戶):
13.為確定管理周遊,這裡啟用 SA 賬戶:
14.确認配置後開始安裝:
15.完成搭建,檢查群集狀态:
16.完成第一個節點的建立後,打開群集管理器,點選角色——選中 SQL Server 右鍵——選擇添加資源——分布式事務處理協調器來添加 DTC 進行事務處理:
17.檢查分布式事務處理協調器是否狀态正常,正常後對 SQL01 進行重新開機下。
18.登入 SQL02,打開安裝并選擇:
19.一路下一步就會識别到群集并進行安裝:
至此,完成群集搭建完成,如果應用要使用調用可以直接采用 q-sqlcluster01.q-vmcloud.com(192.168.108.68) 進行通路,當一個 SQL 節點挂了後 Cluster 就會切換到另外一個節點(這裡會存在停機時間1~2s),如果要實作沒有停機時間的群集,可以采用目前推薦使用的 AlwayOn 或者直接采用 PaaS 級别的 CDB (底層其實也是 AlwayOn ),效果如下:
模拟切換:
切換過程中:
切換完成:
關于如何連接配接該群集執行個體 及 安全相關:
直接使用SQL Server Manager Stuio連結,注意使用SQLCluster VIP:192.168.108.68進行連結
連接配接後先添加一個SQL管理者到登入名中并指定相關權限
下批系列預告:
将放出更多基于QCloud的微軟架構文章