Fix Redis 'ERR This instance has cluster support disabled' When Running CLUSTER Commands

intermediate๐Ÿ”ด Redis2026-05-05| Redis 4.xโ€“7.x, any OS (Linux/macOS/Windows WSL), standalone Redis instance

Error Message

ERR This instance has cluster support disabled
#redis#cluster#standalone#config#cluster-enabled

The situation

You run CLUSTER INFO or CLUSTER NODES against your Redis instance โ€” maybe debugging, checking cluster status, or running a migration script โ€” and get this:

(error) ERR This instance has cluster support disabled

Your app or script breaks. The annoying part? The command is perfectly valid Redis syntax. Redis just refuses to run it because cluster mode was never enabled on this instance.

Why this happens

Redis runs in one of two modes: standalone or cluster. Every instance defaults to standalone. In that mode, all CLUSTER * commands are rejected at the protocol level โ€” no attempt to execute, just an immediate error.

A few common ways this bites people:

  • A library that auto-runs CLUSTER INFO to detect topology on startup โ€” Lettuce, ioredis, and Jedis all do this when initialized with a cluster client
  • A migration or deployment script written for a cluster environment, accidentally run against a dev/staging standalone Redis
  • A cluster-aware client pointed at the wrong host โ€” standalone on port 6379 instead of the cluster endpoint on 7000+
  • Manually running CLUSTER MYID or CLUSTER SLOTS while debugging

Quick diagnosis

Confirm what mode Redis is actually running in:

redis-cli -h 127.0.0.1 -p 6379 INFO server | grep redis_mode

You'll get one of two answers:

redis_mode:standalone
# or
redis_mode:cluster

If it says standalone, that's your culprit. No cluster commands will work on this instance, period.

Double-check the config value too:

redis-cli CONFIG GET cluster-enabled
1) "cluster-enabled"
2) "no"

Fix 1: You need standalone โ€” fix the client

If your Redis is intentionally standalone (single node, no sharding), the problem isn't Redis โ€” it's the client sending the wrong commands. Swap your cluster client for a regular one.

ioredis (Node.js) โ€” using new Redis.Cluster([...]) when you should use new Redis(...):

// Wrong โ€” cluster client against standalone Redis
const redis = new Redis.Cluster([
  { host: '127.0.0.1', port: 6379 }
]);

// Correct โ€” standalone client
const redis = new Redis({
  host: '127.0.0.1',
  port: 6379
});

Jedis (Java) โ€” replace JedisCluster with JedisPool:

// Wrong
JedisCluster jedis = new JedisCluster(new HostAndPort("127.0.0.1", 6379));

// Correct
JedisPool pool = new JedisPool("127.0.0.1", 6379);
Jedis jedis = pool.getResource();

Lettuce (Java/Spring) โ€” RedisClient instead of RedisClusterClient:

// Wrong
RedisClusterClient clusterClient = RedisClusterClient.create("redis://127.0.0.1:6379");

// Correct
RedisClient client = RedisClient.create("redis://127.0.0.1:6379");

redis-py (Python):

# Wrong
from redis.cluster import RedisCluster
r = RedisCluster(host='127.0.0.1', port=6379)

# Correct
import redis
r = redis.Redis(host='127.0.0.1', port=6379)

Fix 2: You need cluster mode โ€” enable it in Redis config

Actually need clustering? Data sharding, horizontal scaling, high availability across nodes? Then you have to enable cluster mode in redis.conf and build the cluster properly.

Step 1 โ€” Edit /etc/redis/redis.conf:

# Enable cluster mode
cluster-enabled yes

# Each node needs its own state file โ€” don't share this between instances
cluster-config-file nodes.conf

# How long (ms) before a node is considered unreachable
cluster-node-timeout 5000

Step 2 โ€” Restart Redis:

sudo systemctl restart redis
# or
redis-server /etc/redis/redis.conf

Step 3 โ€” Redis requires at least 3 master nodes to form a cluster. With 3 instances running on ports 7000โ€“7002:

redis-cli --cluster create \
  127.0.0.1:7000 \
  127.0.0.1:7001 \
  127.0.0.1:7002 \
  --cluster-replicas 0

Type yes at the prompt to confirm slot allocation across the 3 nodes.

Fix 3: Wrong endpoint โ€” check your ports

Running both a standalone and cluster Redis? Easy to point a cluster client at port 6379 by mistake. Check what's actually listening:

# Check what's listening
ss -tlnp | grep redis
# or
netstat -tlnp | grep redis
tcp  LISTEN  0  128  0.0.0.0:6379  # standalone
tcp  LISTEN  0  128  0.0.0.0:7000  # cluster node 1
tcp  LISTEN  0  128  0.0.0.0:7001  # cluster node 2
tcp  LISTEN  0  128  0.0.0.0:7002  # cluster node 3

Your cluster client needs to point at a cluster port (7000+), not 6379.

Verify the fix

Switched to a standalone client? Run a basic round-trip and confirm no cluster error:

redis-cli SET test_key "hello"
redis-cli GET test_key
# Expected: "hello"

Enabled cluster mode? Check that the cluster is healthy before trusting it with real traffic:

redis-cli -p 7000 CLUSTER INFO | grep cluster_state
# Expected: cluster_state:ok

redis-cli -p 7000 CLUSTER NODES
# Expected: 3 lines, each with a node ID and its slot range (0-5460, 5461-10922, 10923-16383)
redis-cli -c -p 7000 SET foo bar
redis-cli -c -p 7000 GET foo
# The -c flag tells redis-cli to follow MOVED redirects automatically

Watch out: enabling cluster mode deletes your data

You cannot switch a live standalone instance to cluster mode without wiping it. Redis stores data differently in each mode โ€” there's no in-place migration.

Before making the switch, dump everything first:

redis-cli --rdb dump.rdb

Then restore into the new cluster once it's up. Skip this step and you lose whatever was in the standalone instance.

Related Error Notes