要確保 Aerospike 叢集在生產環境中高效、穩定地運行,一套清晰的管理與維運策略至關重要。本文將作為一份實戰手冊,從核心設定檔 aerospike.conf 的解析開始,逐步深入介紹如何使用 Aerospike 提供的各種命令列工具 (asinfo, asadm, aql, asbackup) 來執行日常的管理、監控、資料操作及備份還原等關鍵任務。
第一部分:核心組態詳解 (aerospike.conf)
Aerospike 的所有行為都由其設定檔定義。理解其中的核心區塊是管理叢集的第一步。
1. 網路 (network)
此區塊定義了節點間如何通訊。
service: 用於客戶端應用程式連接的服務位址。fabric: 用於叢集內節點間資料同步與重新平衡的通訊。heartbeat: 用於節點間互相偵測存活狀態。在不支援多播 (multicast) 的雲端環境中,必須使用mesh模式,並明確列出種子節點 (seed nodes) 的位址。heartbeat { mode mesh mesh-seed-address-port 10.0.0.123 3002 mesh-seed-address-port 10.0.0.124 3002 # ... 其他種子節點 port 3002 interval 150 timeout 10 }
2. 命名空間 (namespace)
Namespace 是資料的邏輯分區,類似於關聯式資料庫中的 “database”。每個 namespace 都有自己獨立的儲存策略。
namespace test {
replication-factor 2
memory-size 4G
storage-engine memory
}
replication-factor: 資料副本數。設定為 2 表示每筆資料在叢集中都有一份主副本和一份備份。memory-size: 此 namespace 可使用的最大記憶體量。storage-engine: 儲存引擎類型。最常用的是device(混合式儲存,索引在記憶體,資料在 SSD),效能最佳的是memory(所有資料和索引都在記憶體)。
第二部分:動態管理與監控 (asinfo & asadm)
Aerospike 的一大優勢是支援在不重啟服務的情況下動態修改部分設定。
1. asinfo: 單節點操作工具
asinfo 用於對單一節點發送命令。
- 查詢設定:
asinfo -v 'get-config:context=namespace;id=test' -l | grep memory-size - 動態修改設定:
asinfo -v 'set-config:context=namespace;id=test;memory-size=2G'
注意: 動態修改的設定在節點重啟後會遺失,因此務必同步更新 aerospike.conf 檔案。
2. asadm: 叢集級管理工具
asadm 提供一個互動式 shell,能同時對叢集中所有節點執行命令,是日常監控的首選。
- 進入互動式 shell:
asadm - 查看叢集摘要:
Admin> info - 監控即時延遲:
Admin> show latencies -v - 查看統計資料:
Admin> show statistics like client
圖表解說:Aerospike 管理工具架構
此組件圖展示了各種管理工具如何與 Aerospike 叢集進行互動。
@startuml
!theme _none_
skinparam dpi auto
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam minClassWidth 100
skinparam defaultFontSize 16
title Aerospike 管理工具生態系
package "管理工具" {
[asadm]
[asinfo]
[aql]
[asbackup]
}
node "Aerospike 叢集" as Cluster {
node "Node 1" as N1
node "Node 2" as N2
}
asadm -- Cluster : (叢集級操作)
asinfo -- N1 : (單節點操作)
aql -- Cluster : (資料操作)
asbackup -- Cluster : (備份/還原)
@enduml第三部分:資料操作與檢視 (aql)
AQL (Aerospike Query Language) 是一個類 SQL 的命令列工具,非常適合在開發或除錯時快速地對資料進行增刪改查。
- 插入資料:
aql> INSERT INTO test.demo (PK, foo, bar) VALUES ('key1', 123, 'abc'); - 查詢資料:
aql> SELECT * FROM test.demo WHERE PK = 'key1'; - 顯示中繼資料 (TTL, generation):
aql> SET RECORD_PRINT_METADATA true aql> SELECT * FROM test.demo WHERE PK = 'key1';
第四部分:備份與還原 (asbackup & asrestore)
資料的備份與還原是生產環境維運的必要環節。
圖表解說:備份與還原活動圖
此活動圖清晰地展示了使用 asbackup 和 asrestore 進行資料庫備份與還原的標準流程。
@startuml
!theme _none_
skinparam dpi auto
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam minClassWidth 100
skinparam defaultFontSize 16
title Aerospike 備份與還原流程
start
:<b>1. 執行備份</b>;
note right: asbackup -n <namespace> -o <備份檔案>
:等待備份完成;
:<b>2. (可選) 清空 Namespace</b>;
note right: asadm -e "manage truncate ns <namespace> set <set>"
:等待清空完成;
:<b>3. 執行還原</b>;
note right: asrestore -i <備份檔案>
:等待還原完成;
:<b>4. 驗證資料</b>;
note right: 使用 aql 查詢驗證資料是否已還原
stop
end note
end note
end note
end note
@enduml核心指令:
- 執行備份:
asbackup --namespace test --output-file test_backup.asb - 執行還原:
asrestore --input-file test_backup.asb
重要注意事項: asrestore 預設不會還原記錄的 generation (世代) 數。如果目標叢集中已存在相同主鍵 (PK) 的記錄,還原時可能會發生版本覆蓋問題。可以使用 --unique 或 --replace 等參數來控制衝突的解決策略。
透過熟練運用這些工具與概念,系統管理員和 DevOps 工程師便能有效地設定、監控、維護及保護 Aerospike 叢集,確保其在生產環境中的高效與穩定。