其他分享
首页 > 其他分享> > victoriametrics 集群架构

victoriametrics 集群架构

作者:互联网

victoriametrics 支持基于模式,同时拆分出了三大组件,vminsert,vmselect,vmstorage

参考图

 

 

从这张图我们可以看到insert 以及select 都是无状态的,只有vmstorage,对于insert 以及select 的扩展很简单,主要是vmstorage

配置说明

官方实际上已经提供了一个简单的基于docker-compose 以及k8s部署的集群(按照三大组件部署),同时文档也有说明扩展的处理,以
下是一个简单的说明

 
version: '3.5'
services:
  prometheus:
    container_name: prometheus
    image: prom/prometheus:v2.17.2
    depends_on:
    - "vminsert"
    - "vmselect"
    ports:
      - 9090:9090
    volumes:
      - promdata:/prometheus
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    restart: always
  grafana:
    container_name: grafana
    image: grafana/grafana:6.7.2
    entrypoint: >
      /bin/sh -c "
      cd /var/lib/grafana &&
      mkdir -p dashboards &&
      sed 's/$${DS_PROMETHEUS}/Prometheus/g' vm.json > dashboards/vm.json &&
      /run.sh"
    depends_on:
      - "prometheus"
    ports:
      - 3000:3000
    restart: always
    volumes:
      - grafanadata:/var/lib/grafana
      - ./provisioning/:/etc/grafana/provisioning/
      - ./../../dashboards/victoriametrics.json:/var/lib/grafana/vm.json
  vmstorage:
    container_name: vmstorage
    image: victoriametrics/vmstorage
    ports:
      - 8482
      - 8400
      - 8401
    volumes:
      - strgdata:/storage
    command:
      - '--storageDataPath=/storage'
    restart: always
  vminsert:
    container_name: vminsert
    image: victoriametrics/vminsert
    depends_on:
      - "vmstorage"
    command:
      - '--storageNode=vmstorage:8400'
    ports:
      - 8480
    restart: always
  vmselect:
    container_name: vmselect
    image: victoriametrics/vmselect
    depends_on:
      - "vmstorage"
    command:
      - '--storageNode=vmstorage:8401'
    ports:
      - 8481:8481
    restart: always
volumes:
  promdata: {}
  strgdata: {}
  grafanadata: {}

集群扩展说明

从上图我们可以看出对于无状态的部分我们可以基于lb提高负载能力(promxy以及trickster,nginx,haproxy 都是不错的选择)

请求以 /insert 路由到vminsert的8480
请求以 /select 路由到vmselect的8481
*  vminsert&&vmselect添加新节点即可
*  vmstorage 添加:启动新的vmstorage,平滑重启vmselect注意需要添加-storageNode 参数,信息为:<new_vmstorage_host>:8401, 平滑重启vminsert
注意需要添加-storageNode 参数,信息为:<new_vmstorage_host>:8401

核心:注意顺序启动新vmstorage,平滑重启vmselect ,平滑重启vminsert

集群可用性

vminsert 重路由请求从不可用vmstorage节点到健康节点
vmselect 持续处理请求服务到至少一个可用的vmstorage节点

集群更新以及重新配置

vminsert&&vmstorage&&vmselect可以通过平滑的更新变动

容量规划

vminsert:

vmstorage:

vmselect:

灾备处理

victoriametrics提供了一些数据备份的方法vmbackup&&vmrestore 都是一些工具

* /snapshot/create 请求创建快照
* <-storageDataPath>/snapshots/<snapshot_name> 目录文档使用vmbackup进行归档
* /snapshot/delete?snapshot=<snapshot_name> 或者 /snapshot/delete_all 删除快照清理部分空间
* 使用 kill -INT 停止vmstorage
* 使用vmrestore 恢复数据到-storageDataPath目录
* 启动vmstorage节点

说明

以上是对于victoriametrics 集群模式的一个简单说明,实际使用还是有好多地方需要踩坑的,总的来说victoriametrics 是一个简单但是高效的
prometheus 方案

标签:vmstorage,架构,vminsert,victoriametrics,grafana,prometheus,集群,vmselect
来源: https://www.cnblogs.com/rongfengliang/p/12793136.html