M3DB集群安装笔记
admin
2023-02-06 20:00:04
0

介绍

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

用途

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

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

架构

这里使用m3db官方网站上的架构图
M3DB集群安装笔记

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

安装

架构

M3DB集群安装笔记

元数据

首先我们下载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数据目录

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...