AIイノベーションズ ブログ

【Railway】ENOTFOUND redis.railway.internal

最終更新日:
阿部隼也
阿部 隼也
AIイノベーションズ 代表取締役社長 | x.com/ai_abe_shunya
リアルタイムアンケートツール: LiveQ

お悩み相談AIチャット: AI相談.com

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

ENOTFOUND redis.railway.internal

このエラーは、アプリケーションがRailwayのプライベートネットワーク上でRedisサービスを見つけられない場合に発生します。

このエラーの意味

アプリケーションがredis.railway.internalというホスト名でRedisに接続しようとしましたが、DNS解決に失敗しました。これは、ネットワーク設定の問題や、サービス間の接続の問題を示しています。

このエラーが発生する原因

  • プライベートネットワーキングの問題: アプリケーションとRedisサービスが同じプライベートネットワーク上で正しく通信できていない。
  • Redisサービス名の不一致: Redisサービスの内部DNS名が、デフォルトのredis.railway.internalと異なる名前に変更されている。
  • クライアントライブラリの設定: 使用しているRedisクライアントライブラリが、RailwayのIPv6ベースのプライベートネットワークと互換性がないか、特別な設定が必要な場合があります。

解決策

ioredis

Node.jsでioredisライブラリを使用している場合、IPv6アドレスを正しく解決するために、接続オプションでfamily: 0を指定する必要があります。

const Redis = require("ioredis");
 
const redis = new Redis(process.env.REDIS_URL, { family: 0 });

別のプロジェクトにあるRedisデータベース

アプリケーションとRedisデータベースが異なるRailwayプロジェクトにある場合、プライベートネットワーク経由で直接通信することはできません。この場合、RedisサービスのTCPプロキシを有効にし、提供されたパブリックなホストとポートを使用して接続する必要があります。

Redisデータベースへのローカル接続

ローカルマシンからRailway上のRedisデータベースに接続する場合も、TCPプロキシを使用する必要があります。railway connect CLIコマンドを使用すると、簡単に接続できます。

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

リアルタイムアンケートツール: LiveQ

お悩み相談AIチャット: AI相談.com