Wednesday, April 26, 2017

vRealize Automation 管理員與客戶端 Blueprint 管理概念



回來扯扯 vRealize Automation 吧
vRA 其中一項功能 Blueprint 算是 vRA 的主要功能
用來幹嘛的 大抵上來說就是
你的整套系統藍圖 包含其中的任何設定 都可以建立在 Blueprint 裡面
然而這已經太多文章講過這些 這邊就不來廢話這些了


一般來說 vRA 導入之後
vRA Admin 都會對 Blueprint 該如何使用
以及內部的 software component, XaaS 該如何寫都會有一定的熟悉度
但是最終還是要讓你的 User 使用這些 Blueprint, 甚至是開始做自己的 Blueprint

然而 一般來說 User 一開始剛開始接觸 vRA 應該不會了解 Blueprint 該如何建立
當然 vRA Admin 可以教 User 怎麼使用 Blueprint
不過不管再怎麼教 當 User 第一手拿到自己的新 Tenant 的時候
Blueprint 一定是一片空白
如果這時候要讓 User 自己設計自己的第一個 Blueprint
而且要等第一個 User 的 Blueprint 設定好之後 User 才能開始開第一個 VM
User 一開始就遇到如此高的門檻絕對會幹在心裡  就算原本再有熱情都會被澆熄

另外就是 公司大都會有自己的 server policy.
例如每個 server 都要安裝防毒軟體 資產管理軟體 OOXX 等等
複雜一點的還會有 Software 管理軟體. 強制 Join AD Domain, DNS..
如果開放給 User 自行設計管理 Blueprint 的話
就算 User 想乖乖 follow policy 可是當遇到這一堆有的沒的公司 Policy 設定 往往也會打退堂鼓
又何況當 User 一多, Tenant 一多
哪天 Policy 更動 vRA Admin 大概也就沒那種美國時間去幫每個 User 一個個更新 Blueprint
久而久之 User 反應不佳, vRA Admin 累得跟狗一樣


後來思考出另一種方式 就來把權責切開吧 如下圖

  • vRA Admin 提供一個基本的 Blueprint
    包含基礎的 VM Template, Network, 以期其他零零種種的基本設定
  • User 可以自己製作自己的 Blueprint
    但是 VM 相關部分 一律用 vRA Admin 提供的 Blueprint 包起來
    後續相關的 User system 安裝程序 全部由 User 處理

這樣的好處是 User 拿到新的 Tenant 時 就立刻有可使用的基本 Blueprint
User 立刻就可以享受到 Self-Service 好處 一個按鈕 立刻就有自己的 VM 可用

而後一旦 Base blueprint 有需要更新
一律由 vRA Admin 處理 並發散到所有 User 端
或是把樣板提供給 User 自行替換

當然 後續如果 User 刻意不用 vRA Admin 提供的 Blueprint 樣板
則是靠安全稽核來做事後控管
或者是跟 User 講明 不用 vRA Admin 提供的 Base Blueprint 當底 則享受不到這些好處
一般來說 User 聽到可以省事 也都會很樂意照此作法處理


過一段時間之後 當 User 比較知道 Blueprint 的設計方式
User 就可以開始自己變出更多玩法 這時候開始就是讓 User 自己發揮了
大部分 User 會玩得比 vRA Admin 還透徹
例如就直接自己變出下面的 3 tiers 架構來玩
Web/AP tier 可以根據需求 scale out/in



話說 圖雖然都是自己畫的 但是小 icon 都是網路抓的
會不會被"吉"啊...XD

Sunday, April 16, 2017

Compellent Auto-Tiering 設計注意事項


這次要廢話的主題回到 Compellent 吧
前面介紹了 Compellent 與其他廠牌 Storage 最大不同
在於他是業界最早導入 Auto-Tiering 機制的 Storage.
而且 Tiering block 細度可以到 4MB, 2MB, 512KB
目前似乎還沒有其他家廠商有做到這個
(不過後來好像也慢慢不是很重要了, 畢竟現在 Storage 廠商也被打得亂七八糟就是了)

這邊就來廢話一下 當要規劃 Compellent Storage with Auto-Tiering 的時候的注意事項

如果是以前傳統 Storage, 很簡單 User 要多少空間 要多少 IOPS
就換算成要多少 Disk, 哪種形態的 Disk, 直接買齊給他就好 (當然 User 出$$的話)
不過當你要把 User 系統放在 Enable Auto-Tiering 的 Compellent 上面的話呢.
建議就要再細部一點 例如
1. 預計 User 每天寫入資料量
2. 預計 User 資料熱門程度
3. 短 中 長期 資料熱門程度以及趨勢分析
4. 中 長期各型態 Disk 空間利用 及 負荷狀況
5. 短期 長期 不同資料型態的升降級

第一項 如果是現有系統的話就很好估算

跑個一段時間的 Dell DPACK 就可以估算到每天的資料寫入量
加個 buffer 50% ~ 200% 不等 (看老闆要給你多少$$) 就可以當成你的 Tier 1 空間

但如果是新系統的話就會比較麻煩
問 User 大概也都會估很鬆 (畫大餅) 出錢的老闆也都知道 這些大餅都是畫的
管 Storage 的 大概就是想辦法取中間值
一般來說 Tier 1 大概是 User 預估資料成長量的 10% ~ 20% 不等


第二項 關於資料的熱門程度

如果你的 Compellent Auto-Tiering 打算分成三層式架構
這項估出來的結果就是 Tier 2 所需的空間及 Disk 型態
不過比較麻煩的是 這部分資料就算是 Dell DPACK 都跑不出來
因為 DPACK 不會知道哪些資料是熱門資料
跟 User 談的話 一般絕對都會想把他們的資料全部放在 Tier 2.
同樣的 Storage Admin 要是膽敢拿 User 提的需求直接去跟老闆要錢 不被殺頭才怪
當然 如果那部分都是 User 自己出錢 當然 Happy Happy 囉

所以無論新舊系統 大概估算都是整體資料量的 20~40%
要是跟老闆提案的時候 當然一定會被要求 先從 20% 開始吧 吧 吧 吧 (回音~~~~)

不過依照經驗 老闆出過一次$$之後 幾乎不可能要求老闆在針對同一件事情花第二次$$
所以 能爭取多少就多少吧
不然哪天就是 Tier 2 空間使用爆炸 User 抱怨效能有些問題
Storage Admin 得想辦法跟老闆多要一點 co co 解決 User 效能問題

第三項 短 中 長期 資料熱門程度與趨勢分析

這又更虛無飄渺了~~
如果是 User 系統已經是一套很穩定的生產系統
這樣的話每天寫入資料量 熱門資料量 應該就是很穩定了

但是很不幸的 在現實面就算是很穩定運作的系統
也可能因為因為一次事件 辦個活動 User Import 資料而改變平衡
例如說 某個 User 明明每天正常寫入量就是 100G, 可是因為 User 一次系統改版
Database 要來改個 Schema, 當天給你來個寫入 2T
更有可能的是 User 要做這件事情也不會事先跟 Storage Admin "告知"
等到 User 發現效能下降的時候才緊急”找“你求救 (幹樵)
你除了發現 Tier 1 空間爆炸 開始把資料直接寫入 Tier 2.
更慘的是 Tier 3 都要開始來幫忙承接資料
你大概也只能頭殼抱著讓他燒吧

該怎麼避免這狀況發生呢
平常多多跟 User "教育" 他們所在的 Storage 需要多一點照顧
平常都處於某種平衡 如果有需要做任何事情 請"記得"找 Storage Admin 先問過
假設 有 User 問說 既然 Compellent 做事情那麼多限制 那為啥還用它咧...
因為很便宜 很便宜 非常便宜啊~~~~~  (很重要 要說三次.)
Auto Tiering 可以讓冷門熱門資料分布在該在的 Disk 上
不用全部採購高規格 SAS15K 甚至 SSD. 就可以提供一樣該有的效能
照顧得好 可以用低很多的成本做到傳統 Storage 做到的事情與效能

另外就是 Storage Admin 可以定期出各個 Tier 空間 負荷趨勢
這樣可以先讓老闆有個心理準備 是否該增加投資了
就算沒有決定增加投資 也可有個準備 是否該 review 該降到全 Tier 3的系統
或是乾脆該下線的系統


第四項 中 長期各型態 Disk 空間利用 及 負荷狀況

一般來說 當 Compellent 規劃出三層架構 大概都會是 WISSD(SLC), SAS 15K, SAS 7K
不過近來因為 RISSD(TLC) 價格越降越多 單位成本已經跟 SAS15K 相同
也開始有以 WISSD(SLC), RISSD (TLC), SAS 7K 為規劃方式
也就是像下圖的規劃方式
Tier 1 Disk 為 SLC SSD, 專門承接寫入的資料
Tier 2 Disk 為 TLC SSD, 專門負擔熱門資料的讀取 以及 SLC 降下來的資料
Tier 3 Disk 為 SAS 7K, 就是空間大 單位成本低 用來負擔比較少需要讀取的資料

上述圖表 依照"完美比例" 各Tier 3%, 26%, 71% 配置
我們只要買全部空間 3%的 SLC SSD, 跟 26%的 TLC SSD 就可提供該有的 Service Level
老闆看到他的 coco 被這樣省著花用不知道會不會來摸摸頭..

觀察重點 最簡單的部分就是各層空間 尤其是 Tier 1 SLC, Tier 2 TLC 最好不要塞好塞滿
因為 SLC 滿了 會開始有 TLC 開始承接原本 SLC 該支援的資料
更慘的是 TLC 也滿了 連 7K disk 都得一起進來支援
這時候就是開始 頭殼抱著燒拉~~~~

最好的方式 就是長期觀察各層 尤其是 Tier 1, 2 的資料成長狀況
將趨勢抓下來 好作為跟老闆提案要求投資的依據
不然也可以開始準備趕人 給 User 各系統也來個劃分階級制度
跟 User 協調 比較不需要高效能空間的系統 可以慢慢限制在只能用下層空間


另外就是傳統 Storage 比較不會去注意到的部分
Compellent 除了各Tier 空間使用率被當成一種資源
Disk IO 也是需要特別去注意

依據之前跟 Compellent Consultant 口頭敘述 數字可能有些誤差 完全憑記憶
各種不同型態Disk 建議可乘載的 IOPS 最大值如下
SLC Read 2000, Write 2000
MLC Read 2000, Write 1000
TLC Read 2000, Write 200
SAS15K Read 200, Write 200
SAS7K Read 80, Write 80

當然 這些 Disk 一定可以乘載更高的數字 但是 Consultant 說明
這數字是在開始出現比較嚴重的 latency 之前的建議上限
當Disk 開始要求提供超過建議上限的 IOPS 時
Disk 就會開始出現較高的 Latency 了

而有了這資料 就是要進去 Compellent 看每個 Disk IO狀況是否有超過上述建議值
當然不是要你一顆一顆去看 通常同一個 Group, 同一個 Type Disk Loading 都會很接近
每個 Disk Group 每一種 Type 挑幾顆看就好
如果超過上述建議 IOPS, 就算該 Tier 還沒滿 也是有可能的
就開始上面的做法吧 請老闆投資 或是開始敢人了


第五項 短期 長期 不同資料型態的升降級

會有這狀況 通常就是上面兩種資源 要馬 Tier 1/2 空間快滿了 要嘛 Disk IOPS超過建議值了
此時老闆要是覺得增加投資來維持原來的 Service Level 不是很有效益
這時候通常就是 Storage Admin 要開始跟 User 談 系統要分階級拉
不大重要的系統 就給我往貧民區 Tier 3 Disk 趕
比較重要的賺錢系統 繼續住在 Tier 1,2,3 VIP套房
這些動作 User 完全不需要針對系統做任何更動 完全由 Storage Admin來處理即可
不過問題通常不是技術面上的問題
你說我的系統要住貧民區 我就答應讓你搬啊

另外一種狀況
有些系統可能一季也才跑那一次 平常閒閒沒事幹 都在睡覺
可是當他要跑的時候 必須要有非常高的效能
這時候 User 跟 Storage Admin 就可以協調 Tiering 的更動
當平常時間 就降到 Tier 3 讓他好好睡覺
當需要開跑前幾天 Storage Admin 就將 Data 先昇到 Tier 1, 2
之後改成 Tier 1,2,3 全Tier
這樣的話一樣可以達成省成本 又符合系統需求的經濟效益


結論

廢話那麼多 總結就是
因為 Compellent Auto-Tiering 的關係
投資 Storage 成本效益上 會比一般傳統 Storage 高上許多
老闆永遠希望 可以用最少成本 達到一樣的目的
不過也因為這特性 要多花一點時間照顧 也最好及早知道 Auto-Tiering 限制或是極限所在

所以... 老闆 我可以把 SAS15K 都換成 SSD TLC 嗎... :p
我想讓 User 通通升級總統套房拉~~~~


Monday, April 10, 2017

MS Failover Cluster 常見設計錯誤


接續上篇 再來就是一般常看到
大家在安裝 MS Failover Cluster 以及安裝於上面的AP 常發生的錯誤

以下列為例


Cluster 也會有一個 Manage Point
Cluster Admin可以透過 Manage Point 管理整個Cluster
Cluster Manage Point 同時間也只會在一個 Server Node 上面

左圖為例 Cluster Manage Point 與 Service Access Point 同時 Active 在 Server Node 1










Cluster Admin 透過 Cluster Manage Point 來管理整座 Cluster
Service User 透過 Service Access Point 來取用服務



但是 假設下列狀況

Service User 不知怎麼得知 改由 Cluster Manage Point access Service.

此時狀況下 Service User 一樣可以取得 Service 的回應 因為 Cluster Manage Point 與 Service Access Point 都在 Service Node 1














但是假設有天 Cluster Manage Point 飄走了 跑到了 Server Node 2.
而 Service 還是停留在 Node 1.



這時候狀況下 Service 還是活著喔
但是 User 卻無論如何都無法取用到 Service
因為 Cluster Manage Point 已經在 Node 2.
而且此時 Node 2 Service 是 Standby 狀況 自然就沒回應
















另外還有一種狀況如下

一個 Cluster 上面同時有兩種 Service
Service 1, Service 2 各自有各自的 AP
(Cluster Manage Point 省略不畫)

一般來說鍋話
Service 1 AP 會用到 Storage 1
Service 2 AP 會用到 Storage 2
各自分開










可是有哪位大哥 在安裝 Service 2 AP 的時候 把資料放在 Storage 1 上面了
當下當然不會有問題 可是哪天呢


Service 2 流浪到另一個Server Node
那就.... Service 2 無法抓到 Storage 1
因為 Storage 1 屬於 Service 1, 目前 Active 在 Node 1.

而 Service 2 正在 Node 2
想抓也抓不到
此時 Service 2 就掛掉了









另外還有一個常見到的設定錯誤 或者一般人比較不會去注意的地方
一般來說各種 Cluster Resource 之間或有相依性
如下圖 Service 1 必須要配置在 Access Point 以及 Storage 上面
有些比較複雜的系統 可能會有多個 Service, 期間也可能有相依性
像下圖 Service 2 就必須要在 Service 1 起來之後 才能夠跑起來
但是大部份時候 這些相依性必須由 Cluster Admin 自行設定
而 Cluster Admin 一般又是由 AP/Service Admin 兼任
這時要是 Service Admin 沒有顧慮到 要設定相依性的話
往往有時候 Cluster Resource 啟動順序沒有照自己所規劃
例如上圖範例 Service 2 比 Service 1 還早啟動
或是 Service 1, 2 沒有等 Storage 啟動完成 就急著啟動
此時就是... 掛掉拉
所以設定 Cluster Resource 相依性 可以強迫限制 Resource 的啟動順序
避免順序錯亂的問題發生



上述幾種狀況 大概是這幾年下來 看過 發生過的案例
這些錯誤的設計 或是設定 往往當下不會發生問題 也不會被發現有問題
大概也是因為大部分系統上線之後 大家都不敢去動 也不敢先做 Drill Failover 測試
往往等到許久 幾個月 甚至三年五年後 真正要 Failover 發生的時候才發現有問題
此時有可能會有幾種結局

知道怎麼改設定的 例如相依性 改改就好
Service Access Point 指錯地方的 去翻翻 AP connection string 看有沒有機會修正回來
Service 檔案裝錯地方的 這大概就要人命了 這時候大家大概不想 也不敢去動它了
正是所謂 假 HA...

下篇原本想講 MS Cluster HA 投票機制
不過...先換換別的口味好了

Wednesday, April 5, 2017

MS Failover Cluster 基本概念


突然想到要插入這篇 MS Failover Cluster 因為好像(最近)會用到
這篇先簡單講概念 下篇再講常看到的設計錯誤

MS Failover Cluster 是常見的AP HA 架構之一
對於必須要維持資料一致性的系統來說 這種架構已經存在十幾年 算相當成熟

一般來說架構如下

一個對最上層 User 提供服務的 AP
有兩台Server Node 1, Node 2 做備援

外部有一個 Access Point 供外部 User 存取
Server Node 1, Node 2 並不直接讓 User 存取
一律經過 Access Point

平常 Access Point host 在 Node 1.
AP 也跑在 Node 1, Storage 由 Node 1 的 AP來存取



當哪天 Server Node 1 掛掉的時候

AP 會立刻在 Server Node 2 跑起來
Access Point 也會立刻由 Node 2 Hosting
Storage 也改由 Server Node 2 AP 來存取





如此一來 可以維持系統的可用度
也可以確保資料的一致性 同一時間 一份資料只會有一台Server 讀寫









說穿了 Server Node 1, Node 2 都有 AP這支程式

在 Node 1 Hosting AP 的狀況下
AP 只有跑在 Node 1, Storage 也只能由 Node 1 Access

Node 2 AP 是關機狀態 Node 2 也無法存取 Storage










而當 AP 切換到 Node 2 的時候
AP 只有跑在 Node 2, Storage 也只能由 Node 2 Access

Node 1 AP 反過來是關機狀態 也無法存取 Storage
















當然 有些時候會希望平常兩台 Server node都可以提供服務 不要處於閒置狀態
如此就會有下列的配置方式

Service 1, Service 2 各自跑在這兩台 Server Node

Service 1 平常跑在 Node 1
Service 2 平常跑在 Node 2

比照上面的架構
Service 1 與 Service 2 有各自的 AP, Storage. 彼此互相不干擾

當哪天 Node 1 掛點的時候
Service 1, Service 2 同時都會跑在 Node 2
此時 Node 2 的 AP全開 Storage 也正好可以同時Access

此時就要很小心 Node 2 要有足夠的能力可以同時撐起 Service 1, 2 不然就是兩個 Services 一起掛點
















當然 除了 MS Failover Cluster 之外 許多有需要存放資料的 HA 架構大概都差不多
後來也有些變形應用 或是設計出現
不過大都維持 同時間只能有一個人(AP) 對同一份資料做讀寫
當然如果有多份 Copy 做 HA, 那也只能提供"讀" 的功能
如果有需要對資料做更動 還是只能回到那唯一一個可以寫入的點去做寫入
如此方可維持資料的一致性

下篇就來聊聊 MS Failover Cluster 常遇到的錯誤設計吧