好消息!好消息!今天我們有一個令人激動的好消息要宣布!
雖然開局的文風看着有些“震驚黨”,但是希望大家不要介意。因為從今天開始,TDengine終於正式推出了基於K8s上的部署方案。
這么久以來,我們時常看到用戶問什么時候才能看到TDengine在K8s上的部署方案——現在,這一天終於來了。
Kubernetes是一個用於自動化部署、擴展和管理容器化應用程序的開源系統。作為該領域的事實標准,K8s可以促進完善組件和工具的生態系統,以減輕應用程序在公有雲或私有雲中部署和運維的負擔。
因此,有了K8s的助力,TDengine的性能和輕便性以及強大的資源利用能力都會如虎添翼。
所以,我們着實有必要“震驚”一下。
(圖二來自於:K8s官方文檔)
另一方面,IDC(國際數據中心)的研究報告稱:到2022年,90%的新應用將具有微服務架構,這些架構可提高設計、調試、更新和利用第三方代碼的能力,35%的生產應用將是雲原生的。
因此,在雲原生的場景處理海量的數據是未來的大勢所趨。而容器化,作為基礎設施和微服務的實踐者,能夠實現產品的快速部署迭代,靈活擴容縮容,隔離應用。它的這些特征,正是雲原生重要的組成部分。
如今,TDengine終於也正式踏入了這一領域。
眾所周知,除了時序數據庫之外,TDengine還提供緩存、消息隊列、訂閱、流式計算等功能,為物聯網、工業互聯網大數據的處理提供全棧的技術方案。所以,如果TDengine能得到容器化的加成,對於使用舊有大數據體系工具的用戶來說,這樣的替換無異於“鳥槍換炮”,使用體驗和維護難度都會得到質變級別的優化。
為此,濤思數據提供了一組Docker鏡像,並使用這組鏡像分別實現了TDengine在minikube及rancher rk2 環境下的部署和測試,初步實現了Helm Chart支持(Chart名稱:tdengine, 當前版本 0.1.0,Chart地址:https://github.com/taosdata/TDengine-Operator/raw/main/helm/tdengine-0.1.0.tgz)。
Docker構建流程及Helm源代碼托管在 TDengine-Operator 倉庫中;初步的中英文文檔使用GitHub Pages發布在:https://taosdata.github.io/TDengine-Operator/ 。
中文文檔見:https://taosdata.github.io/TDengine-Operator/zh/index.html ;
英文文檔見 https://github.com/taosdata/TDengine-Operator/en/index.html 。
在部署過程中,由於數據庫節點間存在主從關系之類的獨立特征,並不是單純一模一樣的數據節點,即每個節點都是“有狀態”的。因此我們選用的是statefulset(“有狀態應用”的控制器)來部署集群。它能提供給pod以穩定的順序,穩定的網絡,穩定的存儲。這樣可以保證數據庫節點在恢復后不論是數據狀態還是網絡狀態都可以維持原樣,從而保護TDengine集群的穩定性和易維護性。
接下來,利用Docker的entrypoint 特性,我們每次在增加pod的副本數時,都會通過腳本自動連接firstEP(即是第一個創建的pod),然后執行“create dnode +新節點的fqdn+端口”。由於statefulset特性使得pod的創建具有順序性,名字具有唯一性,所以我們用這些特性來區分不同TDengine節點的地址信息。
綜上邏輯,因此在操作的時候,我們只需要在控制器的yaml中指定副本(replica)數量,就可以直接得到一個相等數量的數據庫集群,從而完成TDengine集群的快速搭建。
示范如下:
與之類似,我們只需按照文檔操作,在線調整副本數就可以方便的動態擴容和縮容,十分便捷。但因為文章篇幅有限,不能贅述太多。所以,如果想了解更多其他TDengine在K8s上的部署方式和實現,歡迎大家閱讀:https://taosdata.github.io/TDengine-Operator/並自己實操一番。該文檔對一些錯誤操作和部署時需要留意的細節也做了說明。
附上本方案作者、濤思數據工程師霍琳賀想對大家說的話:
“為了支持TDengine在Kubernetes上的部署,特編寫此文檔。此文檔完全開源,源碼托管在 taosdata/TDengine-Operator,並歡迎所有人對此文檔進行修改,您可以直接提交Pull Request,也可以添加 Issue,任何一種方式都將是我們的榮幸。TDengine完善離不開社區的共同努力,謝謝!
在本文檔中,我們將從部署一套Kubernetes環境開始,介紹如何啟動Kubernetes,並在Kubernetes上從頭部署TDengine集群,簡單介紹如何在K8s環境中進行TDengine集群的擴容和縮容,其中我們未能完整支持的地方也會有說明,可能出現問題的操作也作了簡要的提示。
如果在實際操作過程中遇到問題,您總是可以通過官方微信 tdengine 聯系到我們。”
如您所見,TDengine還在不斷地優化自己的生態和性能,感謝大家一路以來的支持與陪伴。