M3DB集羣安裝筆記

介紹

最簡單的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數據目錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章