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 个节点。