如何使用持久数据扩展docker服务中的XDB 我做了什么?

如何使用持久数据扩展docker服务中的XDB 我做了什么?,docker,docker-swarm,influxdb,Docker,Docker Swarm,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在swarm模式下运行。

已安装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在swarm模式下运行。通过发出以下命令启动XDB docker服务

# 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
docker service scale influxdb=5
然后,我在XDB中创建了一个虚拟数据库,并在其中插入了虚拟数据。从XDB获取计数是一致的,因为它是单个服务和单个数据源(装入的卷)。一切都好

放大 使用以下命令将XDB服务扩展到运行5个实例

# 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
docker service scale influxdb=5

现在,当我插入新数据时,它会得到负载平衡,并分别插入到所有五个实例中如何在XDB的所有5个实例中拥有一致的数据?

Docker卷与创建它们的计算机紧密耦合,因此它们不能扩展到分布式应用程序。这仍然是docker ro中缺少的一项功能,因为它有一个分布式存储后端。你可以解决这个问题 问题在于卷在其中存储数据的网络存储(如NFS)

有一些项目试图妥善处理这个问题。最明显的是,他中止了这个项目


总之,当涉及到扩展数据库时,docker帮不了什么忙。您需要以不使用Docker的方式处理数据库的扩展。

的确如此。您必须使用数据库的缩放系统。不要尝试从不同的容器装载卷,因为这样会损坏整个数据库。