InfluxDB 如何做 Clustering,当然,只是曾经这样做

查看原文

InfluxDB 在 1.4 以后 Clustering 变为商业版才能用,但我们可以在之前的版本中看到它原本的设计意图:使用 3 个节点加入 raft cluster 成为 raft peers 选举领导,剩下的节点只做为数据节点不参与领导选举。

  • 在理解了这样的设计之后,要想启动 Clustering,就需要按顺序启动前三个节点。前三个节点在三台主机上运行,各自有不同的 conf,最重要的配置是设置 bind 的地址。
    • 第一个节点正常启动: service influxdb start
    • 第二个节点需要设置环境变量:INFLUXD_OPTS="-join hostname_1:port_1" service influxdb start
    • 第三个节点类似:启动节点的时候设置环境变量 INFLUXD_OPTS="-join hostname_1:port_1,hostname_2:port_2"
  • 可以使用 show servers 查看启动的 raft cluster nodes 的状态。
  • 确定集群正常后,就可以继续启动数据节点了。启动方法同第三个节点一样,但加入时是以普通数据节点,而不像第三个节点参与选举。

衍生思考:设计一个分布式系统可以学习这种设计思路,只使用前 3 个节点但主要还是考虑到性能问题,毕竟越多节点参与领导选举,一致性达成的时间也就越多。事实上,像 etcd 也只推荐最多使用 5 个节点。