VictoriaMetrics 集群部署

集群说明

节点角色分配

IP地址 角色 组件部署 磁盘配置
192.168.174.144 vmselect vmselect  
192.168.174.145 vminsert vminsert  
192.168.174.146 vminsert vminsert  
192.168.174.147 vmstorage  vmstorage 2块 SSD 
192.168.174.148 vmstorage  vmstorage 2块 SSD 

存储规划

# 每块磁盘挂载到不同目录,如 /data/vmstorage/{disk1,disk2}
-storageDataPath=/data/vmstorage/disk1,/data/vmstorage/disk2

创建普通用户

useradd -r -s /bin/false victoriametrics

下载 VictoriaMetrics

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.114.0/victoria-metrics-linux-amd64-v1.114.0-cluster.tar.gz

安装 VictoriaMetrics 组件

mkdir -pv /usr/local/victoria-metrics-v1.114.0 && tar xf victoria-metrics-linux-amd64-v1.114.0-cluster.tar.gz -C /usr/local/victoria-metrics-v1.114.0
ln -sv /usr/local/victoria-metrics-v1.114.0 /usr/local/victoria-metrics

配置 vmstorage 节点

创建 vmstorage 数据目录

mkdir -p  /data/victoriametrics/vmstorage/{disk1,disk2} && chown -R victoriametrics:victoriametrics /data/victoriametrics

vmstorage.service

cat <<EOF | sudo tee /lib/systemd/system/vmstorage.service
[Unit]
Description=VictoriaMetrics Storage
After=network.target

[Service]
User=victoriametrics
Group=victoriametrics
ExecStart=/usr/local/victoria-metrics/vmstorage-prod \
  --envflag.enable=true \
  -storage.minFreeDiskSpaceBytes=100GB \
  -loggerTimezone=Asia/Shanghai \
  -memory.allowedPercent=80 \
  -storageDataPath=/data/victoriametrics/vmstorage/disk1,/data/victoriametrics/vmstorage/disk2 \
  -retentionPeriod=30d \
  -httpListenAddr=:8482 \
  -vminsertAddr=:8400 \
  -vmselectAddr=:8401 \
  -dedup.minScrapeInterval=5s \
  -loggerFormat=json

Restart=always

[Install]
WantedBy=multi-user.target
EOF
envflag.enable=true	允许从环境变量读取配置(需配合 -envflag.prefix 指定前缀)

storage.minFreeDiskSpaceBytes=100GB	当任一 -storageDataPath 目录的磁盘剩余空间 ≤100GB 时,停止接收新数据

loggerTimezone=Asia/Shanghai	日志时间戳使用上海时区

memory.allowedPercent=80	VictoriaMetrics 可占用系统总内存的80%

-storageDataPath**	/data/.../disk1, /data/.../disk2	数据存储到两个独立磁盘路径

retentionPeriod=30d 	数据保留30天后自动删除

httpListenAddr=:8482	开放HTTP端口用于监控和管理(默认无认证)

vminsertAddr=:8400  	接收 vminsert 组件写入的TCP端口

vmselectAddr=:8401  	响应 vmselect 组件查询的TCP端口

dedup.minScrapeInterval=5s  	同一时间序列5秒内的重复样本自动去重

loggerFormat=json   	日志输出为JSON格式

启动 vmstorage 服务

systemctl enable --now vmstorage

部署 vminsert

vminsert.service

sudo bash -c 'cat <<END >/etc/systemd/system/vminsert.service
[Unit]
Description=VictoriaMetrics vminsert service
After=network.target

[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
Restart=always
ExecStart=/usr/local/victoria-metrics/vminsert-prod \
    -httpListenAddr=:8480 \
    -storageNode=192.168.174.147:8400,192.168.174.148:8400 \
    -loggerFormat=json \
    -loggerTimezone=Asia/Shanghai \
    -maxConcurrentInserts=256 \
    -insert.maxQueueDuration=60s \
    -maxLabelsPerTimeseries=50 \
    -remoteWrite.maxDiskUsagePerURL=200GB
    

PrivateTmp=yes
NoNewPrivileges=yes
ProtectSystem=full

[Install]
WantedBy=multi-user.target
END'
-maxConcurrentInserts=224:需根据服务器CPU核心数调整。若CPU为64核,建议设置为64×4=256。

-remoteWrite.maxDiskUsagePerURL=100GB:结合数据保留策略,定期清理旧数据或扩容磁盘。

-insert.maxQueueDuration=30s:在高吞吐场景可延长至60s,但需配合-remoteWrite.flushInterval调整。

-maxLabelsPerTimeseries=50	单时间序列最大标签数超出会导致数据丢弃,需与应用标签生成逻辑对齐

启动 vminsert 服务

systemctl enable --now vminsert

部署 vmselect

创建 vmselect 数据目录

mkdir -p  /data/victoriametrics/vmselect-cache && chown -R victoriametrics:victoriametrics /data/victoriametrics/vmselect-cache

vmselect.service

sudo bash -c 'cat <<END >/etc/systemd/system/vmselect.service
[Unit]
Description=VictoriaMetrics vmselect service
After=network.target

[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
Restart=always
ExecStart=/usr/local/victoria-metrics/vmselect-prod \
    -storageNode=192.168.174.147:8401,192.168.174.148:8401 \
    -cacheDataPath=/data/victoriametrics/vmselect-cache \
    -httpListenAddr=:8481 \
    -search.maxQueryDuration=30s \
    

PrivateTmp=yes
NoNewPrivileges=yes

ProtectSystem=full

[Install]
WantedBy=multi-user.target
END'

启动 vmselect 服务

systemctl enable --now vmselect

查看 vmui

http://<vmselect-host>:8481/select/<account-id>/vmui/
http://192.168.174.144:8481/select/0/vmui/

服务健康检查

vminsert

curl http://192.168.174.146:8480/health
OK

vmselect

curl http://192.168.174.144:8480/health
OK

vmstorage

curl http://192.168.174.148:8480/health
OK

新增 vmstorage

新增节点步骤

1. 新节点的 -retentionPeriod 必须与集群现有节点完全一致。
2. 分批次更新 vmselect 节点,在所有 vmselect 的启动参数 -storageNode 中追加新节点地址。
3. 分批次更新 vminsert 节点,在所有 vminsert 的 -storageNode 列表添加新节点地址。

参考文档

https://docs.victoriametrics.com/cluster-victoriametrics

posted @ 2025-04-03 14:56  小吉猫  阅读(597)  评论(0)    收藏  举报