Cloud SQL for SQL Server維運作業

Workshop Agenda

  • LAB 1: Cloud SQL for SQL Server 各項管理功能(creating an instance, Network connection, HA function on the instance, Creating and managing SQL server users, Exporting/Importing Using BAK/dump files, Creating backup, Configure DB flags, )
  • LAB 2: Configure Replication for Cloud SQL for SQL
  • LAB 3: Daily operation tasks(用Managed Microsoft AD 做Cloud SQL login與 使用跳板機服務)

先講目前Cloud SQL for SQL server不support的部分。連結在此

Notes: General features unavailable for Cloud SQL

對比Azure SQL,GCP提供Managed instance的single instance(加上HA & Replication instance功能).GCP的租賃方式是根據該DB insatnce的大小與額外的insatnce(HA and/or Replication)來決定.而Instance 的SLA為99.95%(monthly uptime).

LAB 1: Cloud SQL for SQL Server Qwik start

Step 1: GCP console搜尋欄key cloud SQL, 選擇SQL

圖一

Step 2: Create DB instance

圖二

Step 3: 選擇要哪一種DB Engine

圖三

GCP Cloud SQL High availability架構.真實的failover發生時,整個轉移過程需要費時三分鐘左右,所以這與我們的Instance 維護時間也會相關聯,還有在這三分鐘內Application要怎麼handel前端來的request也相對重要.

Step 4: 填入DB insatnce 的所需相關資訊.例如 Instance ID, Password(可以變更Password Policy), DB的版本, 什麼場景使用(Production or Development如圖五),要建在哪一個Region, 是不是多個AZ設定(高可用度,但會加錢)

圖四
圖五
圖六

任務二: 使用SSMS 測試連接DB insatnce並建立簡單的資料

Step 1: 使用Internet的方式連接(檢視instance public IP如下圖七),修改Cloud SQL的防火牆規則(選擇該DB insatnce 點選Edit, 如圖八),新增一筆source IP(如圖九).

圖七
圖八
圖九

若SSMS tools在VPC內則在Server Name輸入Private IP,login欄位則輸入sqlserver,密碼則是我們在建立DB insatnce時會填入的資訊.

連接成功就會看到以下畫面

Step 2: 連接之建立Database與簡單的table

任務三:調整DB insatnce 各項資源

Step 1:首先選擇該DB insatnce後,點選Edit(如下圖)

Option1 : 讓VPC 內的機器可以走內網的方式連結DB insatnce

在Connection這一欄點選Private IP

需要分配IP給Cloud SQL的DB insatnce, 如下示意圖(目前不支援IPv6).給Cloud SQL 的IP range是要跟原來VPC網段沒有的IP(就是沒有IP衝突),GCP支援service producer(如Cloudd SQL)最小是 /24網段.但Google建議給到 /16(也就是會有65,536個IP address).但如果我們懶惰或沒有需要考慮到未來的網路架構則可以交給GCP來自動保留一段IP address rang給Cloud SQL的instance使用.

Private services access ranges
選擇我們要掛在哪一個VPC
啟用Networking API
給Cloud SQL一段IP range(可自行定義或由GCP決定)
成功後就會看到Private IP

Option 2: 修改Instance大小(如下圖). 一但修改所有的DB insatnce都會重新開機要特別注意(通常需要幾分鐘的時間才能完成修改,Instance越大時間越久)

修改Insatnce大小,甚至客製化

Option 3: 修改Storage大小

基本上建議使用小的初始值,然後開啟自動擴容

Option 4: 備份作業

Option 5: 修改DB instance 維護區間.這會讓服務短暫失效,因為failover需要時間.

Option 6: 匯出/入資料.不管是哪一種我們手動匯出(export時是執行full back)或匯入資料都要有一個Cloud Stroage的bucket.目前 Cloud SQL for MS-SQL有一些限制.

  • 不支援SQL dump檔案的匯出
  • 目前支援CDC(change data capture)的版本只有 2017/2019 Standard與Enterprise的版本.當我們匯入一個是有CDC的DB時,我們需要在這個Database開啟CDC (EXEC msdb.dbo.gcloudsql_cdc_enable_db '[DATABASE_NAME]')
匯入資料
匯出資料

Option 7: 修改DB flag

新增一個FLAG
選擇需要的參數

另外我們也可以保存SQL Server的稽核資料.這一類的log是server-level and database-level 的events. 在進階設定中有兩個選項,一個是log要保存多久(預設是7天),另一個是SQL server要多久將log上傳一次(預設是每10分鐘).在bucket中的資料可以import 到另一台Windows Sever或Bigquery進行分析.

LAB 2: Configure Replication for Cloud SQL for SQL

增加Read replica節點.此設定需要是Production(如圖五)且SQL server 版本需要是2017/2019 Enterprise版本.

新增Read replica節點

若Read Replica是在另一個Region, 哪我們在相同的Region也要有VPC or VPC subnet

Read Replica節點可在同一個Region或 Cross Region
跨Region Read Replica 於VPC的狀態
Read replica instance 的細部設定
可以將Read replica提升為獨立的Instance
確認將Replica提升為獨立的instance

Clone instance的作業等同製作一個read replica然後將Read insatnce提升為獨立的insatnce,差別在於資料的時間點.clone屬於Point-in-time的資料時間.

create clone instance

LAB 3: Daily operation tasks

3.1 使用GCP的Managed Microsoft AD管理 cloud SQL -SQL server 的帳號驗證管理

啟用Managed Microsoft AD,首先在搜尋欄位搜尋Managed Microsoft AD

然後” Create New AD Domain”,將所有相關的資訊填入.

建立Cloud SQL for SQL server的驗證整合機制.我們要 create一個 service accoun 給SQL server這個服務使用.使用以下CLI方式

gcloud beta services identity create --service=sqladmin.googleapis.com \
--project=[project ID]

若成功,我們會看到GCP會給我們一個service account資訊

service-[我們的PROJECT_NUMBER]@gcp-sa-cloud-sql.iam.gserviceaccount.com

接著我們要給予這個 service account整合SQL server驗證的權限

gcloud projects add-iam-policy-binding [PROJECT名稱] \
--member=serviceAccount:service-[PROJECT_NUMBER]@gcp-sa-cloud-sql.iam.gserviceaccount.com \
--role=roles/managedidentities.sqlintegrator

成功就會出現如下畫面

接著不論是create New DB insatnce或修改既有的instance.我們都可以看見如下於Authentication設定畫面,會有網域清單可以讓我們選擇.但是我們必須選擇到正確的VPC private IP要關聯的VPC,才可以看到網域清單.

3.2使用IAP(Identity-Aware Proxy)方式來操作GCP內的VM

這一個服務類似Azure Bastion.通常我們在GCP如果是要連結WIndows VM,最簡單的方法就是讓這一台 VM有public IP.然後設立firewall 規則(source :可能是辦公室的固定IP, destination:就是該台VM ).但這樣做其實還是有很大的資安疑慮,這意味著只要是在特定的IP位置跟該台電腦帳密就可以連線了.所以我們需要類似跳板機的機制來幫我們集中控管.

在建立IAP機制之前我們要進行IAP for TCP forwarding的前置作業

Step 1: 設定防火牆規則,這個規則跟我們一般的設定沒有兩樣.就是source ip(可能是辦公室), destination(可能是在整個 VPC中的Windows VM).我們要將35.235.240.0/20 這一個GCP的IAP網段allow, port number設定22 and 3389。

Step2: 我們要設定哪一個使用者或群組可以使用IAP TCP forwarding來連接哪一個 VM要被連接的權限.所以需要設定IAM。在給予Users/groups “IAP-Secured Tunnel User”這一個權限。

Step 3: 開啟OAuth consent screen. 由於我們沒有使用GCP orgnaization所以選擇external

Step 4: 在identity-aware proxy的右邊設定頁面,設定哪一個使用者或群組可以使用這個服務.(PS需要設定IAP相關防火牆規則)

Step 5: 下載IaP desktop軟體(only windows version).使用這種方式所有的VM都不需要有Public IP並且稽核紀錄可以在GCP operation logs中可以找到.

開啟後會看到我們需要用GCP帳號登入
選擇我們要用哪一個帳號登入
接下來選擇哪一個Project的VM我們要access
選擇我們要RDP的VM

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet