アプリをローカルのリモート Redis クラスターに接続するのに問題があります。単一のノード/接続を使用すると、非常に簡単です。
ssh -f -N -L6379:localhost:6379 user@{{ remote_ip }}
そして、redis はローカル ポート 6379 を介して直接接続できます。
ただし、マルチノード クラスターのセットアップでは同じことは機能しません。すべてのノードに対して上記のコード行を使用して各ポートを転送しようとしまし6379, 6380, 6381, etc.
たが、クラスター接続を確立できません。これは、クラスター ノードの構成が必然的にリモート サーバーの実際のプライベート IP を参照するため、ローカル ポートを相互に接続できないためだと思います。
これは私がredisに接続する方法です:
var Redis = require('ioredis');
var host = ENV.MARKET_REDIS_HOST;
var ports = [ 0, 1, 2 ];
var nodes = [];
ports.forEach((port)=>{
nodes.push({
port: 6379 + port,
host: ENV.MARKET_REDIS_HOST,
});
});
var ms_redis = new Redis.Cluster(nodes);
ENV.MARKET_REDIS_HOST
dev では localhost に設定され (機能しません)、prod では実際のプライベート IP に設定されます (これは機能します)。