千家信息网

M3DB集群安装笔记

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,介绍最简单的docker方式安装就不介绍了,这里讲一下我在装m3db单机多实例集群时遇到的问题和爬坑过程用途为了搭配exporter + prometheus + grafana使用,promethe
千家信息网最后更新 2025年02月16日M3DB集群安装笔记

介绍

最简单的docker方式安装就不介绍了,这里讲一下我在装m3db单机多实例集群时遇到的问题和爬坑过程

用途

为了搭配exporter + prometheus + grafana使用,prometheus暂不支持分片。使用federate方式来做的话,架构比较复杂

m3db的优点:
  • 可以分片,副本存储,这个比influxdb方案要好很多。
  • 可以数据聚合存储,可以对前期的数据进行抽样聚合压缩降低存储空间
m3db的缺点
  • 刚开源,资料比较少
  • 配置操作比较麻烦。与我接触到的MySQL,Redis, MongoDB安装方式不太一样,但与之前维护的NDIR系统略有相似之处
为甚么不使用其他的方案:
  • timescaleDB依赖PG数据库,安装和维护起来相对于我熟悉的MySQL差距很大。
  • InfluxDB分片功能收费
  • 其他的比较小众或者不同时支持数据读取和写入

架构

这里使用m3db官方网站上的架构图

  • m3db的seedNode和其他数据存储节点的区别在于其内置运行ETCD服务
  • etcd服务用于存储整个集群的元数据,类似于NDIR的zookeeper作用,也可也单独运行
  • coordinator相当于整个集群的入口,类似于NDIR的IndexDispatcher的作用,类似于MongoDB的mongos的作用

安装

架构

元数据

首先我们下载etcd,然后执行就可以,这里我们暂时不使用集群

nohup ./etcd &> /dev/null &
数据节点

这里附上第一个节点的配置文件,需要注意的地方我会在下面用注释的方式指出

coordinator:  listenAddress:    type: "config"    value: "0.0.0.0:7201"          # 交互端口  local:    namespaces:      - namespace: default       # 数据要存入的表        type: unaggregated       # 数据类型        retention: 48h                # 数据保存时间  metrics:                               # coordinator本身的metric    scope:      prefix: "coordinator"    prometheus:      handlerPath: /metrics      listenAddress: 0.0.0.0:7203 # until https://github.com/m3db/m3/issues/682 is resolved    sanitization: prometheus    samplingRate: 1.0    extended: none  tagOptions:    # Configuration setting for generating metric IDs from tags.    idScheme: quoted        # 这个必须db:  logging:    level: info  metrics:    prometheus:      handlerPath: /metrics    sanitization: prometheus    samplingRate: 1.0    extended: detailed  hostID:                           # 这里实测后,其实可以理解为nodeID    resolver: config            # 单机多实例,这里必须设置为config,从文件中读取    value: node1                # 这个实例的Id  config:                           # config段的配置都是和etcd相关的     service:      env: default_env         zone: embedded      service: m3db          # 服务名。可以按照consul中的service进行理解      cacheDir: /data1/m3db/cache      etcdClusters:        - zone: embedded          endpoints:            - 127.0.0.1:2379  listenAddress: 0.0.0.0:9000                     clusterListenAddress: 0.0.0.0:9001  httpNodeListenAddress: 0.0.0.0:9002  httpClusterListenAddress: 0.0.0.0:9003  debugListenAddress: 0.0.0.0:9004  client:    writeConsistencyLevel: majority                       # 写一致性级别    readConsistencyLevel: unstrict_majority  gcPercentage: 100  writeNewSeriesAsync: true  writeNewSeriesLimitPerSecond: 1048576  writeNewSeriesBackoffDuration: 2ms  bootstrap:    bootstrappers:                          # 启动顺序        - filesystem        - commitlog        - peers        - uninitialized_topology    fs:        numProcessorsPerCPU: 0.125  cache:    series:      policy: lru    postingsList:      size: 262144  commitlog:    flushMaxBytes: 524288    flushEvery: 1s    blockSize: 10m    queue:        calculationType: fixed        size: 2097152  fs:    filePathPrefix: /data1/m3db                    # m3dbnode数据目录
0