k8s

redis集群部署

axing
2025-08-13 / 0 评论 / 2 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2025年08月13日,已超过10天没有更新,若内容或图片失效,请留言反馈。

一、关闭防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld

二、修改配置文件

[root@rabbit2 redis]# cat docker-compose.yaml 
version: '3.3'
services:
  redis6001:
    image: redis:6.2.6
    container_name: redis6001
    restart: always
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./6001/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./6001/data:/data
    ports:
      - "6001:6001"
      - "16001:16001"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis6002:
    image: redis:6.2.6
    container_name: redis6002
    restart: always
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./6002/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./6002/data:/data
    ports:
      - "6002:6002"
      - "16002:16002"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis6003:
    image: redis:6.2.6
    container_name: redis6003
    restart: always
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./6003/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./6003/data:/data
    ports:
      - "6003:6003"
      - "16003:16003"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis6004:
    image: redis:6.2.6
    container_name: redis6004
    restart: always
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./6004/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./6004/data:/data
    ports:
      - "6004:6004"
      - "16004:16004"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis6005:
    image: redis:6.2.6
    container_name: redis6005
    restart: always
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./6005/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./6005/data:/data
    ports:
      - "6005:6005"
      - "16005:16005"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai
    logging:
      options:
        max-size: '100m'
        max-file: '10'

  redis6006:
    image: redis:6.2.6
    container_name: redis6006
    restart: always
    command:
      ["redis-server", "/usr/local/etc/redis/redis.conf"]
    volumes:
      - ./6006/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./6006/data:/data
    ports:
      - "6006:6006"
      - "16006:16006"
    environment:
      # 设置时区为上海,否则时间会有问题
      - TZ=Asia/Shanghai
    logging:
      options:
        max-size: '100m'
        max-file: '10'
        
networks:
  app_net:
    external: true

[root@rabbit2 redis]# cat redis-cluster.tmpl 
# redis端口
port ${PORT}
#redis 访问密码 
requirepass 7hGtW#eCx5#Pu#FXRf#gFHSo
#redis 访问Master节点密码
masterauth 7hGtW#eCx5#Pu#FXRf#gFHSo
# 关闭保护模式
protected-mode no
# 开启集群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP
cluster-announce-ip 192.168.30.25
# 集群节点端口,bus-port比port大1000
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
# 开启 appendonly 备份模式
appendonly yes
# 每秒钟备份
appendfsync everysec
# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no
# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100
# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 64mb

# 日志配置
# debug:会打印生成大量信息,适用于开发/测试阶段
# verbose:包含很多不太有用的信息,但是不像debug级别那么混乱
# notice:适度冗长,适用于生产环境
# warning:仅记录非常重要、关键的警告消息
loglevel notice
# 日志文件路径
logfile "/data/redis.log"


[root@rabbit2 redis]# cat redis-cluster-config.sh 
for port in `seq $1 $2`; do \
  mkdir -p ./${port}/conf \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done

三、加入集群

[root@rabbit2 redis]# bash ./redis-cluster-config.sh  6001 6006
[root@rabbit2 redis]# ls
6001  6002  6003  6004  6005  6006  docker-compose.yaml  redis-cluster-config.sh  redis-cluster.tmpl
[root@rabbit2 redis]# chmod -R +777 ./6001
[root@rabbit2 redis]# chmod -R +777 ./6002
[root@rabbit2 redis]# chmod -R +777 ./6003
[root@rabbit2 redis]# chmod -R +777 ./6004
[root@rabbit2 redis]# chmod -R +777 ./6005
[root@rabbit2 redis]# chmod -R +777 ./6006
[root@rabbit2 redis]# ls
6001  6002  6003  6004  6005  6006  docker-compose.yaml  redis-cluster-config.sh  redis-cluster.tmpl
[root@rabbit2 redis]# vi redis-cluster.tmpl 
[root@rabbit2 redis]# port ${PORT}
-bash: port: command not found
[root@rabbit2 redis]# vi docker-compose.yaml 
[root@rabbit2 redis]# vi redis-cluster.tmpl 
[root@rabbit2 redis]# docker-compose down
[root@rabbit2 redis]# docker-compose up -d
[+] Running 6/7
 ⠋ Network redis_default  Created                                                                                                                                                                                               1.1s 
 ✔ Container redis6001    Started                                                                                                                                                                                               0.8s 
 ✔ Container redis6003    Started                                                                                                                                                                                               1.0s 
 ✔ Container redis6002    Started                                                                                                                                                                                               1.0s 
 ✔ Container redis6005    Started                                                                                                                                                                                               0.5s 
 ✔ Container redis6004    Started                                                                                                                                                                                               0.9s 
 ✔ Container redis6006    Started                                                                                                                                                                                               0.8s 
[root@rabbit2 redis]# docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED             STATUS          PORTS                                                                                                    NAMES
5b8722bbcb37   redis:6.2.6                 "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes    0.0.0.0:6004->6004/tcp, [::]:6004->6004/tcp, 0.0.0.0:16004->16004/tcp, [::]:16004->16004/tcp, 6379/tcp   redis6004
e1e91fded2ad   redis:6.2.6                 "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes    0.0.0.0:6005->6005/tcp, [::]:6005->6005/tcp, 0.0.0.0:16005->16005/tcp, [::]:16005->16005/tcp, 6379/tcp   redis6005
f9010b959cd1   redis:6.2.6                 "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes    0.0.0.0:6001->6001/tcp, [::]:6001->6001/tcp, 0.0.0.0:16001->16001/tcp, [::]:16001->16001/tcp, 6379/tcp   redis6001
258f08b79453   redis:6.2.6                 "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes    0.0.0.0:6003->6003/tcp, [::]:6003->6003/tcp, 0.0.0.0:16003->16003/tcp, [::]:16003->16003/tcp, 6379/tcp   redis6003
04d79831176e   redis:6.2.6                 "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes    0.0.0.0:6006->6006/tcp, [::]:6006->6006/tcp, 0.0.0.0:16006->16006/tcp, [::]:16006->16006/tcp, 6379/tcp   redis6006
ef30d93d3223   redis:6.2.6                 "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes    0.0.0.0:6002->6002/tcp, [::]:6002->6002/tcp, 0.0.0.0:16002->16002/tcp, [::]:16002->16002/tcp, 6379/tcp   redis6002
f1bdda1a4069   redis:6.2.6                 "docker-entrypoint.s…"   12 minutes ago      Up 12 minutes   6379/tcp                                                                                                 relaxed_mayer
b4dab98879a6   rabbitmq:3.9.0-management   "docker-entrypoint.s…"   About an hour ago   Up 59 minutes                                                                                                            rabbitmq
[root@rabbit2 redis]# docker run -it --rm --network host redis:6.2.6 \
  redis-cli -a '7hGtW#eCx5#Pu#FXRf#gFHSo' --cluster create \
  192.168.30.25:6001 192.168.30.25:6002 192.168.30.25:6003 \
  192.168.30.25:6004 192.168.30.25:6005 192.168.30.25:6006 \
  --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.30.25:6005 to 192.168.30.25:6001
Adding replica 192.168.30.25:6006 to 192.168.30.25:6002
Adding replica 192.168.30.25:6004 to 192.168.30.25:6003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 50654b9d91a28d7ed8e9327cbd218b40d05e0135 192.168.30.25:6001
   slots:[0-5460] (5461 slots) master
M: ee12edf412044f81ce55b93b686505c300e121f7 192.168.30.25:6002
   slots:[5461-10922] (5462 slots) master
M: 1fe3b80e312eea1fec18c41712295f5d623debd7 192.168.30.25:6003
   slots:[10923-16383] (5461 slots) master
S: 95301b0852b5239991119c10dd06b1bf0d96268f 192.168.30.25:6004
   replicates ee12edf412044f81ce55b93b686505c300e121f7
S: d0d9ebbddd63acc4675634f67358ee0e214598dc 192.168.30.25:6005
   replicates 1fe3b80e312eea1fec18c41712295f5d623debd7
S: 8a62664439a5be16439d3b293f5a9ca2b7be09a7 192.168.30.25:6006
   replicates 50654b9d91a28d7ed8e9327cbd218b40d05e0135
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 192.168.30.25:6001)
M: 50654b9d91a28d7ed8e9327cbd218b40d05e0135 192.168.30.25:6001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 8a62664439a5be16439d3b293f5a9ca2b7be09a7 192.168.30.25:6006
   slots: (0 slots) slave
   replicates 50654b9d91a28d7ed8e9327cbd218b40d05e0135
M: ee12edf412044f81ce55b93b686505c300e121f7 192.168.30.25:6002
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 1fe3b80e312eea1fec18c41712295f5d623debd7 192.168.30.25:6003
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: d0d9ebbddd63acc4675634f67358ee0e214598dc 192.168.30.25:6005
   slots: (0 slots) slave
   replicates 1fe3b80e312eea1fec18c41712295f5d623debd7
S: 95301b0852b5239991119c10dd06b1bf0d96268f 192.168.30.25:6004
   slots: (0 slots) slave
   replicates ee12edf412044f81ce55b93b686505c300e121f7
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@rabbit2 redis]# 
[root@rabbit2 redis]# 
[root@rabbit2 redis]# docker run -it --rm redis:6.2.6 redis-cli -a '7hGtW#eCx5#Pu#FXRf#gFHSo' -h 192.168.30.25 -p 6001 cluster info
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:539
cluster_stats_messages_pong_sent:531
cluster_stats_messages_sent:1070
cluster_stats_messages_ping_received:526
cluster_stats_messages_pong_received:539
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:1070
0

评论 (0)

取消