1、安装docker
1、安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

2、配置docker yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装docker

yum install -y docker-ce

4、修改docker配置文件


mkdir /etc/docker -p

sudo tee /etc/docker/daemon.json <<-'EOF'

{

    "registry-mirrors": [

      "https://docker.credclouds.com",

      "https://k8s.credclouds.com",

      "https://quay.credclouds.com",

      "https://gcr.credclouds.com",

      "https://k8s-gcr.credclouds.com",

      "https://ghcr.credclouds.com",

      "https://do.nark.eu.org",

      "https://docker.m.daocloud.io",

      "https://docker.nju.edu.cn",

      "https://docker.mirrors.sjtug.sjtu.edu.cn",

      "https://docker.1panel.live",

      "https://docker.rainbond.cc"

    ],

   "data-root": "/etc/docker"

}

EOF

5、启动docker

systemctl daemon-reload

systemctl enable docker --now

systemctl restart docker

6、安装docker-compose

#下载docker-compose文件

curl -L "https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#给他一个执行权限

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

#查看是否安装成功

docker-compose --version

2、拉取镜像

docker pull redis:latest

3、目录创建

mkdir /data/redis{7001,7002}/{conf,data,logs} -p

chmod -R 777 /data/redis{7001,7002}

4、redis配置文件

redis7001配置:

sudo tee /data/redis7001/conf/redis.conf <<-'EOF'

bind 0.0.0.0

protected-mode no

port 7001

tcp-backlog 511

timeout 0

tcp-keepalive 300

#daemonize yes

#pidfile /var/run/redis-7001.pid

loglevel notice

logfile "/logs/redis-7001.log"

databases 16

always-show-logo no

set-proc-title yes

proc-title-template "{title} {listen-addr} {server-mode}"

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

rdb-del-sync-files no

dir "/data"

masterauth "redis5012##00"

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-diskless-load disabled

repl-disable-tcp-nodelay no

replica-priority 100

acllog-max-len 128

requirepass "redis5012##00"

lazyfree-lazy-eviction no

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

replica-lazy-flush no

lazyfree-lazy-user-del no

lazyfree-lazy-user-flush no

oom-score-adj no

oom-score-adj-values 0 200 800

disable-thp yes

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes


lua-time-limit 5000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096

stream-node-max-entries 100

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit replica 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes

jemalloc-bg-thread yes

EOF

redis7002配置:

sudo tee /data/redis7002/conf/redis.conf <<-'EOF'

bind 0.0.0.0

protected-mode no

port 7002

tcp-backlog 511

timeout 0

tcp-keepalive 300

#daemonize yes

#pidfile /var/run/redis-7002.pid

loglevel notice

logfile "/logs/redis-7002.log"

databases 16

always-show-logo no

set-proc-title yes

proc-title-template "{title} {listen-addr} {server-mode}"

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

rdb-del-sync-files no

dir "/data"

masterauth "redis5012##00"

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-diskless-load disabled

repl-disable-tcp-nodelay no

replica-priority 100

acllog-max-len 128

requirepass "redis5012##00"

lazyfree-lazy-eviction no

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

replica-lazy-flush no

lazyfree-lazy-user-del no

lazyfree-lazy-user-flush no

oom-score-adj no

oom-score-adj-values 0 200 800

disable-thp yes

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

lua-time-limit 5000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096

stream-node-max-entries 100

activerehashing yes

client-output-buffer-limit normal 0 0 0


client-output-buffer-limit replica 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes

jemalloc-bg-thread yes

EOF

5、docker-compose.yml文件编写

sudo tee /data/redis7001/docker-compose.yml <<-'EOF'
version: '3.8'

services:
  redis:
    image: redis:latest
    container_name: redis7001
    command: redis-server /usr/local/etc/redis/redis.conf
    #command: redis-server --requirepass redis5012##00 
#    sysctls:
#      - net.core.somaxconn=1024
    volumes:
      - /data/redis7001/data:/data
      - /data/redis7001/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis7001/logs:/logs
      - /etc/localtime:/etc/localtime
    ports:
      - "7001:7001"
#      - "17001:16379"
    restart: always
    network_mode: host
#    networks:
#      - mynet
#networks:
#  mynet:
#    driver: bridge
EOF
sudo tee /data/redis7002/docker-compose.yml <<-'EOF'
version: '3.8'

services:
  redis:
    image: redis:latest
    container_name: redis7002
    command: redis-server /usr/local/etc/redis/redis.conf
    #command: redis-server --requirepass redis5012##00 
#    sysctls:
#      - net.core.somaxconn=1024
    volumes:
      - /data/redis7002/data:/data
      - /data/redis7002/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis7002/logs:/logs
      - /etc/localtime:/etc/localtime
    ports:
      - "7002:7002"
#      - "17002:16379"
    restart: always
    network_mode: host
#    networks:
#      - mynet
#networks:
#  mynet:
#    driver: bridge
EOF

6、启动redis服务

cd /data/redis7001

docker-compose up -d

docker-compose ps



cd /data/redis7002

docker-compose up -d

docker-compose ps

7、redis集群初始化
进入任意 Redis 容器

docker exec -it redis7001 /bin/sh

执行创建集群

redis-cli -a redis5012##00 --cluster create 192.168.52.15:7001 192.168.52.15:7002 192.168.52.16:7001 192.168.52.16:7002 192.168.52.17:7001 192.168.52.17:7002 --cluster-replicas 1

创建成功后连接任意一个redis节点

redis-cli -a redis5012##00 -c -h 192.168.52.15 -p 7001

查看集群信息

cluster info



cluster nodes
文档更新时间: 2025-07-13 07:48   作者:admin