對於在生產環境中運行的 Aerospike 叢集,除了基礎的監控與維護,進行深度的效能分析和實施嚴格的安全措施是確保其長期穩定與資料安全的關鍵。本文將作為一份進階維運指南,深入探討如何使用 Aerospike 的專業工具進行效能測試與延遲分析,並詳細闡述如何為您的叢集設定傳輸層加密 (TLS) 與存取控制列表 (ACL)。

基礎設施:設定 Prometheus 監控

在進行任何效能分析之前,一個健全的監控系統是必不可少的。我們推薦使用 Prometheus 作為監控後端,並透過 Aerospike Prometheus Exporter 來收集指標。

部署 Exporter

Exporter 可以作為 systemd 服務直接安裝在節點上,也可以透過 Docker 容器運行,後者在測試和容器化環境中更為便捷。

  • Systemd 方式:
    # 下載並安裝 .deb 或 .rpm 套件
    wget https://download.aerospike.com/artifacts/aerospike-prometheus-exporter/1.9.0/aerospike-prometheus-exporter_1.9.0_amd64.deb
    sudo dpkg -i aerospike-prometheus-exporter_1.9.0_amd64.deb
    # 編輯 /etc/aerospike-prometheus-exporter/ape.toml 設定檔
    sudo systemctl start aerospike-prometheus-exporter
    
  • Docker 方式:
    docker run -d --name aerospike-exporter --net=host \
    -e AS_HOST=127.0.0.1 \
    -e AS_PORT=3000 \
    aerospike/aerospike-prometheus-exporter:1.14.0
    

部署完成後,即可在 Prometheus 中設定對 http://<node-ip>:9145/metrics 的抓取任務。

第一部分:深度效能分析

僅僅觀察儀表板是不夠的,我們需要主動測試和分析系統的效能極限。

1. 負載生成 (asbench)

asbench 是 Aerospike 官方提供的效能測試工具,能夠模擬各種真實世界的工作負載。

範例:模擬 50% 讀取、50% 更新的混合工作負載

asbench -n test -o 'B1000000' -w RU,50 -k 100 -t 120

指令解說:

  • -n test: 指定操作的 namespace。
  • -o 'B1000000': 定義一個大小為 1MB 的 bin。
  • -w RU,50: 設定工作負載 (Workload) 為讀取 (Read) 和更新 (Update) 各佔 50%。
  • -k 100: 限制操作的主鍵 (Key) 數量在 100 個以內。
  • -t 120: 測試持續時間為 120 秒。

2. 深度延遲分析 (asloglatency)

asloglatency 是一個強大的工具,用於解析 Aerospike 伺服器日誌中的延遲直方圖 (latency histogram),提供比 Prometheus 指標更精細的延遲分佈視圖。

圖表解說:效能測試與分析流程

此活動圖展示了如何結合 asbenchasloglatency 進行一次完整的效能分析。

@startuml
!theme _none_
skinparam dpi auto
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam minClassWidth 100
skinparam defaultFontSize 16
title 效能測試與延遲分析活動圖

start
:1. 啟用微基準測試;
note right: asinfo -v 'set-config:context=namespace;id=test;enable-benchmarks-read=true'
:2. 使用 `asbench` 產生負載;
:3. 從伺服器收集日誌檔案;
note right: docker logs aerospike > hist.log
:4. 使用 `asloglatency` 解析日誌;
note right: asloglatency -l hist.log -h "{test}-read"
:5. 分析延遲分佈圖;
:6. 根據分析結果調整組態;
stop
end note

end note

end note

@enduml

核心流程:

  1. 啟用微基準測試: 透過 asinfo 開啟特定操作的詳細日誌記錄。
  2. 產生負載: 使用 asbench 對系統施加壓力。
  3. 收集與分析: 從伺服器收集日誌,並使用 asloglatency 解析出詳細的延遲分佈資料,例如 P99、P99.9 等,以找出效能瓶頸。

第二部分:強化安全實踐

在生產環境中,保護資料的傳輸與存取安全至關重要。

1. 傳輸加密 (TLS)

Aerospike 支援使用 TLS 來加密客戶端與伺服器之間,以及叢集節點之間的通訊。

  • 產生證書: 使用 openssl 等工具產生自簽名或由 CA 簽署的證書和私鑰。
  • 設定 Aerospike: 在 aerospike.confnetwork 區塊中,設定 TLS 相關的參數,指定證書、私鑰和加密協定版本。

2. 存取控制 (ACL)

Aerospike 的企業版提供了強大的存取控制列表 (ACL) 功能,可以精細地管理使用者權限。

  • 使用者與角色: 系統中可以建立多個使用者,並為每個使用者分配一或多個角色。
  • 權限: 角色可以被授予對特定 namespace 或 set 的讀、寫、管理等權限。
  • 啟用: 在 aerospike.confsecurity 區塊中啟用 enable-security: true

圖表解說:安全的 Aerospike 部署架構

此部署圖展示了一個同時啟用 TLS 和 ACL 的安全 Aerospike 叢集架構。

@startuml
!theme _none_
skinparam dpi auto
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam minClassWidth 100
skinparam defaultFontSize 16
title 安全的 Aerospike 部署架構

node "Aerospike 叢集" as Cluster {
  node "Node 1" as N1
  node "Node 2" as N2
  
  artifact "aerospike.conf" as Conf {
    file "security {\n  enable-security: true\n}" as ACL
    file "network {\n  tls-name ...\n  tls {\n    ...cert-file...\n  }\n}" as TLS
  }
}

actor "應用程式客戶端" as Client

Client ..> N1 : (TLS 加密連線)
note on link: 需提供使用者名稱/密碼

N1 <--> N2 : (TLS 加密連線)
note on link: Fabric / Heartbeat

@enduml

透過結合深度的效能分析工具和嚴格的安全實踐,您可以確保 Aerospike 叢集不僅運行高效,更能安全地保護您的核心資料資產。