我正在尝试使用 EFS(类似于 NFS 的弹性文件存储)在 AWS 上为 influxdb 设置一个简单的集群,其中 2 个不同的流入进程将共享数据库。我有 2 个 EC2 实例(名为:EC2_1、EC2_2)运行它们自己的 influxdb 进程。两个 EC2 实例都使用位于 /opt/efs 的名为“efs”的通用 EFS 目录挂载。我在两个 ec2 实例上修改了 influxdb.conf,使其指向通用的/opt/efs/influxdb/data 数据目录,/opt/efs/influxdb/wal为 wal,/opt/efs/influxdb/meta为元目录。
我试图通过这个实现的是,当 EC2_1 流入进程向数据库写入一些内容时,它可以立即被 EC2_2 上的流入进程读取。
为了实现这一点,我试图找出一个可以禁用 WAL 或使写入磁盘非常频繁(一次/秒)的设置,以便另一个进程可以直接从磁盘读取。读/写性能或数据丢失现在不是我主要关心的问题。
我尝试更改以下设置,希望它会使 WAL 刷新频繁,但它没有按我预期的方式工作:
# CacheSnapshotMemorySize is the size at which the engine will
# snapshot the cache and write it to a TSM file, freeing up memory
# cache-snapshot-memory-size = 26214400
cache-snapshot-memory-size = 2
# CacheSnapshotWriteColdDuration is the length of time at
# which the engine will snapshot the cache and write it to
# a new TSM file if the shard hasn't received writes or deletes
# cache-snapshot-write-cold-duration = "1h"
cache-snapshot-write-cold-duration = "1s"
如果 EC2_1 向 influxdb 写入内容,则查询 EC2_2 不会显示该数据,除非 EC2_2 上的 influxdb 进程重新启动,反之亦然。