绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
M3DB集群安装笔记
2022-03-14 15:02:07

介绍

简单的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 &

数据节点

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

  1. coordinator:
  2. listenAddress:
  3. type: "config"
  4. value: "0.0.0.0:7201" # 交互端口
  5. local:
  6. namespaces:
  7. - namespace: default # 数据要存入的表
  8. type: unaggregated # 数据类型
  9. retention: 48h # 数据保存时间
  10. metrics: # coordinator本身的metric
  11. scope:
  12. prefix: "coordinator"
  13. prometheus:
  14. handlerPath: /metrics
  15. listenAddress: 0.0.0.0:7203 # until https://github.com/m3db/m3/issues/682 is resolved
  16. sanitization: prometheus
  17. samplingRate: 1.0
  18. extended: none
  19. tagOptions:
  20. # Configuration setting for generating metric IDs from tags.
  21. idScheme: quoted # 这个必须
  22. db:
  23. logging:
  24. level: info
  25. metrics:
  26. prometheus:
  27. handlerPath: /metrics
  28. sanitization: prometheus
  29. samplingRate: 1.0
  30. extended: detailed
  31. hostID: # 这里实测后,其实可以理解为nodeID
  32. resolver: config # 单机多实例,这里必须设置为config,从文件中读取
  33. value: node1 # 这个实例的Id
  34. config: # config段的配置都是和etcd相关的
  35. service:
  36. env: default_env
  37. zone: embedded
  38. service: m3db # 服务名。可以按照consul中的service进行理解
  39. cacheDir: /data1/m3db/cache
  40. etcdClusters:
  41. - zone: embedded
  42. endpoints:
  43. - 127.0.0.1:2379
  44. listenAddress: 0.0.0.0:9000
  45. clusterListenAddress: 0.0.0.0:9001
  46. httpNodeListenAddress: 0.0.0.0:9002
  47. httpClusterListenAddress: 0.0.0.0:9003
  48. debugListenAddress: 0.0.0.0:9004
  49. client:
  50. writeConsistencyLevel: majority # 写一致性级别
  51. readConsistencyLevel: unstrict_majority
  52. gcPercentage: 100
  53. writeNewSeriesAsync: true
  54. writeNewSeriesLimitPerSecond: 1048576
  55. writeNewSeriesBackoffDuration: 2ms
  56. bootstrap:
  57. bootstrappers: # 启动顺序
  58. - filesystem
  59. - commitlog
  60. - peers
  61. - uninitialized_topology
  62. fs:
  63. numProcessorsPerCPU: 0.125
  64. cache:
  65. series:
  66. policy: lru
  67. postingsList:
  68. size: 262144
  69. commitlog:
  70. flushMaxBytes: 524288
  71. flushEvery: 1s
  72. blockSize: 10m
  73. queue:
  74. calculationType: fixed
  75. size: 2097152
  76. fs:
  77. filePathPrefix: /data1/m3db # m3dbnode数据目录

转载于:https://blog.51cto.com/l0vesql/2358497

分享好友

分享这个小栈给你的朋友们,一起进步吧。

M3DB
创建时间:2022-03-10 15:12:17
M3DB
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~