AIイノベーションズ
Railway/Reference/Errors

ENOTFOUND redis.railway.internal

Railway で発生する「ENOTFOUND redis.railway.internal」エラーの原因と対処法を解説します。

著者: AIイノベーションズ 阿部隼也X / Twitter

Railwayはこちら

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はこちら

PR