
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]
📢 大家好,我是 WeiyiGeek,一名深耕安全运维开发(SecOpsDev)领域的技术从业者,致力于探索DevOps与安全的融合(DevSecOps),自动化运维工具开发与实践,企业网络安全防护,欢迎各位道友一起学习交流、一起进步 🚀,若此文对你有帮助,一定记得倒点个关注⭐与小红星❤️,收藏学习不迷路 😋 。
使用二进制方式部署 victoriaMetrics 集群
使用二进制方式部署 victoriaMetrics 集群也非常简单,实际上就是将单机实例中的三个组件(,
vmstorage ,
vminsert)分别部署到集群机器节点中,此外还需与 vmauth、vmagent 组件配合使用,以实现高可用、访问认证以及指标数据的采集、转发和查询等功能。
vmselect
本小节将手把手教你如何部署一套生产级别、高可用(HA)的 VictoriaMetrics 集群,确保监控系统自身具备容错、可扩展与持久化,乃至安全认证能力。
参考文档:https://docs.victoriametrics.com/quick-start/#starting-vm-cluster-from-binaries
环境说明:
VictoriaMetrics 集群至少需要三个节点,每个节点上都要运行这三个组件,这里同样使用安全加固后 系统进行演示。
OpenEuler 24.03 LTS-SP1 Linux
# 节点
node1 10.20.172.212
node2 10.20.172.213
node3 10.20.172.214
# 组件端口
vmstorage 8482
vmselect 8481 / 集群内部通信 8401
vminsert 8480 / 集群内部通信 8400
# 负载均衡器
10.20.172.212:8427
# 认证配置
metrics:weiyigeek.top
操作步骤:
步骤 01.从 Github 中下载集群版本的 VictoriaMetrics 压缩包。
# 代理下载
DOWN_PROXY="https://gh.wygk.eu.org"
# 固定版本(2025年11月6日 11:03:32 最新版本)
VERSION=v1.129.1
# 最新版本
LAST_VERSION=$(curl -s "https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/tags" | grep '"name":' | grep -v 'beta|alpha|rc' | head -n 1 | awk -F '"' '{print $4}')
# 若未获取到最新版本,则使用固定版本
VM_VERSION=${LAST_VERSION:-$VERSION}
# 下载
wget -L "${DOWN_PROXY}/https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/${VM_VERSION}/victoria-metrics-linux-amd64-${VM_VERSION}-cluster.tar.gz"
步骤 02.将下载的压缩包复制到三台节点主机上,并解压集群版本的压缩包,你会得到三个二进制文件:,
vminsert-prod, 和
vmselect-prod。
vmstorage-prod
$ tar -zxvf victoria-metrics-linux-amd64-v1.129.1-cluster.tar.gz -C /usr/local/bin
vminsert-prod
vmselect-prod
vmstorage-prod
步骤 03.在每个节点上创建数据存储目录 和 VictoriaMetrics 用户,并为目录设置正确的权限。
# 创建用户
sudo useradd -M -U -s /usr/sbin/nologin victoriametrics
# 创建配置、数据、缓存目录
sudo mkdir -p /etc/victoriametrics
sudo mkdir -p /app/vmstorage/data
sudo mkdir -p /app/vmselect/cache
# 权限赋予
sudo chown -R victoriametrics:victoriametrics /app
# 目录结构
$ tree /app/
/app/
├── vmselect
│ └── cache
└── vmstorage
└── data
步骤 04.在每个节点上创建 vmstorage 组件配置文件和服务文件。
# vmstorage 配置文件:
tee /etc/victoriametrics/vmstorage.conf <<'EOF'
httpListenAddr=:8482
vminsertAddr=:8400
vmselectAddr=:8401
storageDataPath=/app/vmstorage/data
retentionPeriod=7d
dedup_minScrapeInterval=15s
loggerTimezone=Asia/Shanghai
loggerLevel=INFO
loggerFormat=default
EOF
# vmstorage 服务文件:
tee /usr/lib/systemd/system/vmstorage.service <<'EOF'
[Unit]
Description=VictoriaMetrics vmstorage service
After=network.target
[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
Restart=always
EnvironmentFile=/etc/victoriametrics/vmstorage.conf
ExecStart=/usr/local/bin/vmstorage-prod -envflag.enable
WorkingDirectory=/app/vmstorage
PrivateTmp=yes
ProtectHome=yes
NoNewPrivileges=yes
ProtectSystem=full
[Install]
WantedBy=multi-user.target
EOF
步骤 05.在每个节点上创建 vminsert 组件配置文件和服务文件。
# vminsert 配置文件:
tee /etc/victoriametrics/vminsert.conf <<'EOF'
httpListenAddr=:8480
storageNode=10.20.172.212:8400,10.20.172.213:8400,10.20.172.214:8400
replicationFactor=2
loggerTimezone=Asia/Shanghai
loggerLevel=INFO
loggerFormat=default
EOF
# vminsert 服务文件:
tee /usr/lib/systemd/system/vminsert.service <<'EOF'
[Unit]
Description=VictoriaMetrics vminsert service
After=network.target
[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
Restart=always
EnvironmentFile=/etc/victoriametrics/vminsert.conf
ExecStart=/usr/local/bin/vminsert-prod -envflag.enable
PrivateTmp=yes
ProtectHome=yes
NoNewPrivileges=yes
ProtectSystem=full
[Install]
WantedBy=multi-user.target
EOF
步骤 06.在每个节点上创建 vmselect 组件配置文件和服务文件。
# vmselect 配置文件:
tee /etc/victoriametrics/vmselect.conf <<'EOF'
httpListenAddr=:8481
storageNode=10.20.172.212:8401,10.20.172.213:8401,10.20.172.214:8401
cacheDataPath=/app/vmselect/cache
vmui_defaultTimezone=Asia/Shanghai
loggerTimezone=Asia/Shanghai
loggerLevel=INFO
loggerFormat=default
EOF
# vmselect 服务文件:
tee /usr/lib/systemd/system/vmselect.service <<'EOF'
[Unit]
Description=VictoriaMetrics vmselect service
After=network.target
[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
Restart=always
EnvironmentFile=/etc/victoriametrics/vmselect.conf
ExecStart=/usr/local/bin/vmselect-prod -envflag.enable
PrivateTmp=yes
ProtectHome=yes
NoNewPrivileges=yes
ProtectSystem=full
[Install]
WantedBy=multi-user.target
EOF
步骤 07.在每个节点上启动并自启用服务,并检查服务是否已成功启动。
# 重启守护进程,以重新加载新的服务文件
sudo systemctl daemon-reload
# 自启动 vmstorage 服务
sudo systemctl enable vmstorage --now
sudo systemctl status vmstorage
11月 06 16:32:29 weiyigeek-top vmstorage-prod[1801056]: 2025-11-06T16:32:29.205+0800 info VictoriaMetrics/lib/vminsertapi/server.go:82 accepting vminsert conns at 0.0.0.0:8400
11月 06 16:32:29 weiyigeek-top vmstorage-prod[1801056]: 2025-11-06T16:32:29.206+0800 info VictoriaMetrics/lib/vmselectapi/server.go:155 accepting vmselect conns at 0.0.0.0:8401
11月 06 16:32:29 weiyigeek-top vmstorage-prod[1801056]: 2025-11-06T16:32:29.206+0800 info VictoriaMetrics/lib/httpserver/httpserver.go:145 started server at http://0.0.0.0:8482/
# 自启动 vminsert 服务
sudo systemctl enable vminsert --now
sudo systemctl status vminsert
# 自启动 vmselect 服务
sudo systemctl enable vmselect --now
sudo systemctl status vmselect
步骤 08.在每个节点上配置防火墙规则,限制允许访问 VictoriaMetrics 组件的端口的主机,生产环境中建议做限制。
# vmstorage 端口 8482 以及 集群内部通信端口 8400 、8401 只允许节点内部主机访问,外部无法访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.212/32" port protocol="tcp" port="8482" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.213/32" port protocol="tcp" port="8482" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.214/32" port protocol="tcp" port="8482" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.212/32" port protocol="tcp" port="8400" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.213/32" port protocol="tcp" port="8400" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.214/32" port protocol="tcp" port="8400" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.212/32" port protocol="tcp" port="8401" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.213/32" port protocol="tcp" port="8401" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.172.214/32" port protocol="tcp" port="8401" accept'
# vminsert 端口: 8480
# vmselect 端口: 8481
firewall-cmd --permanent --add-port=8480/tcp --add-port=8481/tcp
# 重载配置
firewall-cmd --reload
步骤 09.在任意一台节点上访问 VictoriaMetrics 的内置 UI,默认情况下,VictoriaMetrics 监听端口 上的HTTP请求,请求地址
8481, 若为多租户环境,则需要替换为对应的租户路径,例如
http//<ip_or_hostname>:8481/select/vmui/vmui
/select/accountID:projectID/vmui

温馨提示:此时还没有配置抓取指标,所以暂时看不到任何数据,在后续章节中作者会实践讲解,这里不用着急。
步骤 10.VictoriaMetrics 提供了原生的 vmauth 组件(缺省端口:8427),用于处理 VictoriaMetrics 集群的路由负载、认证和授权。在生产环境中,强烈建议启用此功能以增强安全性,此处我在 node1 节点上演示如何安装配置 vmauth。
安装解压
# 代理下载
DOWN_PROXY="https://gh.wygk.eu.org"
# 固定版本(2025年11月6日 11:03:32 最新版本)
VERSION=v1.129.1
# 最新版本
LAST_VERSION=$(curl -s "https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/tags" | grep '"name":' | grep -v 'beta|alpha|rc' | head -n 1 | awk -F '"''{print $4}')
# 最终版本
VM_VERSION=${LAST_VERSION:-$VERSION}
TMP_DIR=$(mktemp -d)
# 下载工具包
echo"正在下载 vmutils 版本: $VM_VERSION 到 ${TMP_DIR} 目录下"
wget -L -c ${DOWN_PROXY}/https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/${VM_VERSION}/vmutils-linux-amd64-${VM_VERSION}.tar.gz -O ${TMP_DIR}/vmutils.tar.gz
# 仅解压工具包中 vmauth 组件到 /usr/local/bin 目录下
tar -xzf ${TMP_DIR}/vmutils.tar.gz -C /usr/local/bin vmauth-prod
# 查看版本
/usr/local/bin/vmauth-prod --version
vmauth-20251104-104931-tags-v1.129.1-0-g5e98e0cff5
创建 vmauth 配置文件以及 systemd 服务文件
# vmauth 用户认证及高可用配置文件
tee /etc/victoriametrics/vmauth.yml <<'EOF'
# 启用认证
users:
- username: "metrics"
password: "weiyigeek.top"
url_map:
- src_paths:
- "/insert/.*"
url_prefix:
- "http://10.20.172.212:8480/"
- "http://10.20.172.213:8480/"
- "http://10.20.172.214:8480/"
- src_paths:
- "/select/.*"
- "/admin/.*"
url_prefix:
- "http://10.20.172.212:8481/"
- "http://10.20.172.213:8481/"
- "http://10.20.172.214:8481/"
EOF
# 创建 vmauth 服务文件
cat > /etc/victoriametrics/vmauth.conf <<'EOF'
ARGS=-httpListenAddr :8427 --auth.config=/etc/victoriametrics/vmauth.yml -loggerTimezone=Asia/Shanghai --loggerLevel=INFO --loggerFormat=default
EOF
# vmauth 服务配置文件示例:
cat > /etc/systemd/system/vmauth.service <<EOF
[Unit]
Description=vmauth is an HTTP proxy,which can authorize route and load balance
Documentation=https://docs.victoriametrics.com
After=network.target
[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
StartLimitBurst=5
StartLimitInterval=0
Restart=on-failure
RestartSec=5
EnvironmentFile=-/etc/victoriametrics/vmauth.conf
ExecStart=/usr/local/bin/vmauth-prod $ARGS
ExecStop=/bin/kill -s SIGTERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
StandardOutput=journal
StandardError=journal
SyslogIdentifier=vmauth
PrivateTmp=yes
ProtectHome=yes
NoNewPrivileges=yes
ProtectSystem=strict
ProtectControlGroups=true
ProtectKernelModules=true
ProtectKernelTunables=yes
[Install]
WantedBy=multi-user.target
EOF
设置自启动并验证服务状态,使用浏览器访问 查看内置 UI 页面。
http://主机IP:8427/select/vmui/vmui
sudo systemctl daemon-reload
sudo systemctl enable vmauth --now
sudo systemctl status vmauth

温馨提示:若启动服务报错请检查配置文件是否有语法错误,例如,缩进问题等,或者查看 日志。
tail -f /var/log/messages
温馨提示:vmauth 组件某些功能社区版本是不支持的,例如 过滤赛选只有企业版支持,此处不做演示。
IP filters
官方文档:https://docs.victoriametrics.com/victoriametrics/vmauth/#load-balancer-for-victoriametrics-cluster

END
加入:作者【全栈工程师修炼指南】知识星球
『 全栈工程师修炼指南』星球,主要涉及全栈工程师(Full Stack Development)实践文章,包括但不限于企业SecDevOps和网络安全等保合规、安全渗透测试、编程开发、云原生(Cloud Native)、物联网工业控制(IOT)、人工智能Ai,从业书籍笔记,人生职场认识等方面资料或文章。
Q: 加入作者【全栈工程师修炼指南】星球后有啥好处?
✅ 将获得作者最新工作学习实践文章以及网盘资源。
✅ 将获得作者珍藏多年的全栈学习笔记(需连续两年及以上老星球友,也可单次购买)
✅ 将获得作者专门答疑学习交流群,解决在工作学习中的问题。
✅ 将获得作者远程支持(在作者能力范围内且合规)。

获取:作者工作学习全栈笔记
作者整理了10年的工作学习笔记(涉及网络、安全、运维、开发),需要学习实践笔记的看友,可添加作者微信或者回复【工作学习实践笔记】,当前价格¥299,除了获得从业笔记的同时还可进行问题答疑以及每月远程技术支持,希望大家多多支持,收获定大于付出!

知识推荐 往期文章
🔥【最新】VictoriaMetrics | 云原生监控新宠: 10倍性能碾压Prometheus?单机一键部署实战
🔥【最新】DBA | 告别数据泵!Oracle 推荐的物理备份神器 RMAN 快速入门指南
🔥【最新】DBA | Oracle RMAN 实战:物理备份与数据恢复全解析
💡【相关】告别杂乱Windows安全日志!VictoriaLogs+Grafana构建企业级审计日志分析平台实战
💡【相关】告别Nginx原始日志!VictoriaLogs+Grafana构建企业级应用日志分析平台实战
💡【相关】无缝迁徙:从 Prometheus 到 VictoriaMetrics 的零停机数据迁移指南
若文章对你有帮助,请将它转发给更多的看友,若有疑问的小伙伴,可在评论区留言你想法哟 💬!
















暂无评论内容