1

アプリをローカルのリモート 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_HOSTdev では localhost に設定され (機能しません)、prod では実際のプライベート IP に設定されます (これは機能します)。

4

0 に答える 0