如何快速解決叢集異常和機器效能波動

nebulagraph發表於2022-05-30
本文首發於 Nebula Graph Community 公眾號

從叢集效能波動講起

前幾天,我們收到某公司 Nebula 資料庫維護人員小張同學的反饋:發現叢集 A 效能波動,同樣的語句有時查詢快,但是有時慢,幫忙看看是機器還是服務本身的問題呢?

想到了小張同學之前安裝過 Nebula Dashboard 社群版,便推薦他進去檢視監控情況。小張進入平臺後,檢視當前機器的 CPU、記憶體、磁碟、網路情況,發現同之前相比並沒有明顯異常情況,機器們都在正常執行。如下圖所示:

Nebula Dashboard

但,你如果仔細檢視這張圖,會發現叢集 A 個別時間段確實存在網路和 CPU 使用率飆升的問題。

於是,我們繼續讓小張再檢視該叢集的服務執行情況,發現在這段時間內查詢數量會突然激增,而且有周期性。如下圖:

Nebula Dashboard

發現週期性問題之後,我們詢問小張在這個時間段該叢集的使用場景。經排查發現,小張同學在這個時間每天會有定期執行一個資料庫 nGQL 執行指令碼。經他重新 review 指令碼邏輯,發現查詢中涉及多跳查詢並且跳數超過 5 跳。問題定位後,小張建議相關的業務同學對語句指令碼進行了優化解決了資源波動問題。

讓人頭疼的叢集問題

解決了這個問題,小張同學又向我們提出了新問題:我能及時感知叢集內的服務和機器的異常情況嗎?我是不是可以接入告警服務,通過釘釘、微信、簡訊方式告知服務異常?

碰巧的是,另一個公司團隊的小劉也反饋了個異常問題:某個叢集連線不上,不知道是不是服務掛了。而且對外業務流量入口現在已經關閉了,怎麼排查問題呢?由於 Nebula Dashbaord 社群版並未提供檢視叢集狀態管理功能,在我們發現服務的監控查詢數確實都是 0 之後,建議小劉同學挨個檢查機器。小劉檢查之後,反應叢集 A 的機器能正常登入,但挨個檢視發現埠的 graphd 和 storaged 服務並不線上,存在服務異常情況。為了不影響業務正常執行,小劉需要一個個手動啟動服務異常的機器,花費了他不少啟停時間。經過這次之後,小劉說他打算寫個叢集快速啟動指令碼,不然每次手動啟停太麻煩。

無獨有偶,除了上面兩個運維同學反饋的問題之外,其實,我們還收到了這樣的反饋:流量小的情況下,叢集正常執行;一旦流量超過某個閾值,便會發生服務連不上、連線超時、某個查詢服務離線等等問題…一般來說,因為叢集服務比例分佈不合理、分片不均的情況,叢集或存在某臺機器一直處在高負載狀態。以上面這位同學為例,他平時業務流量比較均衡,但最近剛好是某個活動期,參與了多項推廣活動,流量驟升是平時流量的幾百倍。基於這種情況,我們建議他對叢集進行彈性擴容,增加 5 臺服務以應對突發的大流量。這波活動過去之後,再縮容,節省成本。

其實叢集除了彈性擴縮容問題之外,常見以下幾類反饋:

1:如何快速建立叢集,預設 3 節點配置就好?
2:我能看到某臺叢集某個時間段的操作記錄嗎?
3:我能刪除某個叢集,並回收資源嗎?
4:昨天檢視日誌資訊,我發現叢集 B 的儲存服務 storaged2 啟停了一次,能幫忙排查是什麼問題問題造成的嗎?是否後續上生產環境也會出現?
5:graph 服務查不到,怎麼定位問題?
6:叢集的某個服務能查到,但是狀態一直是退出狀態,怎麼快速拉起?

最終解決方案

基於使用者的各種場景反饋,我們計劃打造一款比 Dashboard 社群版更便捷管理 Nebula 資料庫叢集的工具——是的,它便是今天的主角 Nebula Dashboard 企業版,上面提到的那些叢集問題以及效能波動問題,在新發布的 Nebula Dashboard v3.0 面前均不是問題:Nebula Dashboard 企業版,專治叢集的疑難雜症。

為了讓資料庫運維、DBA 同學更方便地管理 Nebula 資料庫叢集,基於社群版的 Nebula Dashboard 我們擴充套件多個功能場景,這裡可以簡單介紹下部分功能,更多資訊可以關注我們下週的 Dashboard v3.0 Demo SHOW 直播和官方介紹喲~

簡化運維

提到簡化操作,肯定得有對快速部署/匯入叢集功能的支援;再者,加上擴縮容,這樣你就不用關心複雜繁瑣的 shell 命令就能完成加減機器操作。最後,加入視覺化元素更直觀地瞭解叢集機器和服務分佈情況。

Nebula Dashboard

科學的監控&告警

此外,企業版 Nebula Dashboard 優化監控總覽,以便更靈活、科學地監控服務。它支援對監控資料規則的自定義配置,並接入異常通知可及時同步異常情況給指定接收人,預設通知平臺提示和郵件通知提供了 Webhooks 用來支援快速對接釘釘、企業微信等第三方通訊平臺;

Nebula Dashboard

Nebula Dashboard

服務/節點的視覺化操作

在企業版 Nebula Dashboard 中還支援對服務/節點視覺化管理,實時顯示服務狀態。此外,Dashboard 企業版還支援快速啟停,再也不用挨個上故障機器手動啟動服務。最後,Nebula Dashboard 企業版結合機器資訊展示了叢集服務的分佈情況、型別,執行路徑等資訊,以便你更好地操作叢集;

Nebula Dashboard

And More...

此外,我們還有許多實用的功能:

  • 叢集診斷:不但可以對問題叢集進行問題定位,還可以對亞健康叢集進行診斷分析,根據報告指定更好的維護計劃;
  • 視覺化大屏:資料投在大螢幕上,實時關注叢集,特別是需要壓測和活動場景時更能直觀感受叢集的執行負載;
  • 檢視叢集後設資料資訊:檢視 leader、partition 分佈,並支援 BALANCE 操作,還有其他服務執行的後設資料資訊展示等;
  • 叢集配置更新:檢測叢集配置,並自定義修改;
  • 賬號和許可權管理體現:邀請多人同時管理,支援多叢集許可權管理;

Nebula Dashboard

最後,慢查詢治理、一鍵資料備份 / 恢復 / Nebula 叢集升級、job 管理、單程式監控、黑匣子等其他功能已在 Nebula Dashboard 企業版迭代計劃中,感興趣同學可以多關注下 Dashboard 企業版的後續版本釋出。

歡迎訪問 https://wj.qq.com/s2/9437467/b3b1/ 申請試用 Nebula Dashboard,並給我們提產品反饋建議,以便更好地完善 Nebula Dashboard 服務大家的叢集運維~ btw,目前 Nebula Dashboard 試用期延長至 30 天,記得來體驗它呀。


交流圖資料庫技術?加入 Nebula 交流群請先填寫下你的 Nebula 名片,Nebula 小助手會拉你進群~~

相關文章