如何在持久数据的Docker服务中扩展InfluxDB

我做了什么?

有docker安装,版本细节如下:

Server: Version: 17.11.0-ce API version: 1.34 (minimum version 1.12) Go version: go1.8.3 Git commit: 1caf76c Built: Mon Nov 20 18:36:09 2017 OS/Arch: linux/amd64 Experimental: false 

Docker以群模式运行。 通过发出以下命令启动influxdb泊坞窗服务。

 # create network docker network create influxdb-network --driver overlay # create the service docker service create --name 'influxdb' --network 'influxdb-network' --mount type=volume,source=influxdb-volume,destination=/var/lib/influxdb influxdb:1.4 

然后,我在influxdb中创build了一个虚拟数据库,并在其中插入了虚拟数据。 从influxdb获取计数与其单个服务和单个数据源(挂载的卷)一致。 都好。

放大

通过使用以下命令,扩大influxdb服务以运行5个实例。

 docker service scale influxdb=5 

现在,当我插入新的数据时,它将得到Load均衡并分别插入到所有五个实例中。 如何在influxdb的所有5个实例中获得一致的数据?

Docker卷紧密地耦合到创build它们的机器上,因此它们不会扩展到分布式应用程序。 这仍然是一个缺乏docker rofunction的分布式存储后端。 您可以通过使用networking存储(如NFS)来解决这个问题。

有一些项目试图正确处理这个问题。 最值得注意的是RexRay和Tyhe停止了Flocker项目。

总之,在扩展数据库的时候,docker并没有什么帮助。 你需要处理扩展数据库的方式,而不使用Docker。