2 つの異なる流入プロセスがデータベースを共有する EFS (NFS に似たエラスティック ファイル ストレージ) を使用して、AWS で influxdb 用の単純なクラスターをセットアップしようとしています。独自の influxdb プロセスを実行する 2 つの EC2 インスタンス (名前: EC2_1、EC2_2) があります。両方の EC2 インスタンスは、/opt/efs の「efs」と呼ばれる共通の EFS ディレクトリでマウントされます。両方の ec2 インスタンスで influxdb.conf を変更して、データ用の共通/opt/efs/influxdb/dataディレクトリ、wal 用の /opt/efs/influxdb/wal、メタ ディレクトリ用の/opt/efs/influxdb/metaを指すようにしました。
これによって私が達成しようとしているのは、EC2_1 流入プロセスがデータベースに何かを書き込んだときに、EC2_2 の流入プロセスによってすぐに読み取ることができるということです。
これを達成するために、別のプロセスがディスクから直接読み取ることができるように、WALを無効にするか、ディスクへの書き込みを非常に頻繁に(1回/秒)行うことができる設定を見つけようとしています。読み取り/書き込みのパフォーマンスやデータの損失は、今のところ大きな問題ではありません。
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 の influxdb プロセスが再起動されない限り、EC2_2 にクエリを実行してもそのデータは表示されません。