如果看了官方介紹的話,VictoriaMetrics 對於集群的處理只有vmstorage 是有狀態的,其他節點(vmselect,vminsert都是無狀態的)
但是一些細節上的目前官方沒有很清晰的說明,以下是一些簡單的說明
vmselect 以及vminsert 的storagenode 配置
VictoriaMetrics 集群模式在設計的時候區分了寫以及讀(當然很大程度上和prometheus remote protocol 有關系)
默認:8400 為寫入地址(即vminsert的網絡存儲連接端口),:8401 為讀取地址(即vmselect的網絡存儲連接端口)
實際上這個文檔都是有寫到的,而且cli 的幫助也有提示
vmstorage 數據寫入的處理
目前目前看到的是支持多存儲,直接配置多個就可以了,實際上數據的寫入是有規則的
大致的流程是基於一致性hash算法,同時當出現存儲故障的時候也會嘗試寫入可用的存儲,數據的存儲是結合用戶以及項目id還有label
基於xxhash 算法選擇后端存儲,整體的一個原則就是可以保證有可用后端存儲的時候數據是可以寫入的
vmstorage 數據讀取的處理
這個如果按照包含故障的模式就稍有復雜了,因為可能存在存儲不可能的時候的數據查詢處理,但是vmselect簡化了查詢,獲取查詢發送到所有可用的vmstorage節點,然后合並去重,這樣就簡單好多了
參考資料
https://github.com/VictoriaMetrics/VictoriaMetrics/blob/cluster/app/vminsert/netstorage/insert_ctx.go#L169
https://github.com/VictoriaMetrics/VictoriaMetrics/blob/cluster/app/vmselect/README.md