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

浙公网安备 33010602011771号