1、整体架构
采用双节点主备的方案进行服务的高可用管理,在node1与node2上面均部署Prometheus服务与pushgateway,对外通过vip提供服务,
,采用keepalive进行vip的管理与自动切换,后端数据采用在node1和node2上搭建的VictoriaMetrics集群进行数据存储,保证数据的高可用。
2、主要配置
node1、node2均部署pushgateway,通过keepalive管理vip漂移, 数据均通过vip推送
global_defs {
router_id KMS_HA
script_user root # 指定脚本运行用户
enable_script_security
}
vrrp_script checkserver {
script "/etc/keepalived/checkserver.sh" #检测脚本
interval 1 #监测间隔
weight -11 #失败时,优先级减2
fall 3 # 指定检测脚本连续执行失败次数为3,才进行Failover
rise 1 # 指定检测脚本连续执行成功次数为1,才进行Failback
}
vrrp_instance VI_DB {
state MASTER
interface enp0s8 # 虚拟IP的网卡,与实际网卡一致
virtual_router_id 22
priority 100 # 优先级,主机挂掉后用此值决策哪个备机作为新主机
advert_int 1
authentication {
auth_type PASS
auth_pass 4422
}
virtual_ipaddress {
192.168.56.200 # 虚拟为未被占用的ip地址
}
unicast_src_ip 192.168.56.101 #本机ip
unicast_peer {
192.168.56.102 #对端ip
}
track_script {
checkserver #通过指定上面定义监控脚本来监控服务状态,以完成主备切换
}
}
node1、node2通过vip订阅pushgateway数据
- job_name: 'pushgateway'
honor_labels: true
static_configs:
- targets: ['192.168.56.200:9091']
labels:
instance: pushgateway
后端部署VictoriaMetrics作为远端存储,将replicationFactor设置为2,如果需要配置Grafana进行数据可视化,可通过VictoriaMetrics的vmselect服务查询,ip为vip,即可支持服务自动切换。
VictoriaMetrics服务配置
vim /etc/systemd/system/vmstorage.service
[Unit]
Description=Vmstorage Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmstorage-prod \
-loggerTimezone Asia/Shanghai \
-dedup.minScrapeInterval=30s \
-storageDataPath /tmp \
-httpListenAddr :8482 \
-vminsertAddr :8400 \
-vmselectAddr :8401
[Install]
WantedBy=multi-user.target
vim /etc/systemd/system/vminsert.service
[Unit]
Description=Vminsert Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vminsert-prod \
-httpListenAddr :8480 \
-storageNode=192.168.56.101:8400,192.168.56.102:8400 \
-replicationFactor=2
[Install]
WantedBy=multi-user.target
vim /etc/systemd/system/vmselect.service
[Unit]
Description=Vminsert Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmselect-prod \
-httpListenAddr :8481 \
-selectNode 192.168.56.101:8481,192.168.56.102:8481 \
-dedup.minScrapeInterval=30s \
-storageNode=192.168.56.101:8401,192.168.56.102:8401
[Install]
WantedBy=multi-user.target
三、关于为什么不用Thanos 使用VictoriaMetrics
VictoriaMetrics虽然有三个组件,但是都是单文件且不依赖配置文件,只需启动时参数指定即可,部署与维护都十分方便,对比于thanos的配置十分复杂,参数调优可能比较困难,并且VictoriaMetrics不依赖外部系统,与Grafana完全兼容。