【Redis集群实战】Redis Cluster 部署
Redis Cluster 基本说明
首先,Redis Cluster 必须有三个以上 master 才能创建出来。
我们先设置三组 master服务。
配置步骤
服务器 | 端口 | 角色 |
---|---|---|
192.168.1.220 | 6379 | master |
192.168.1.220 | 7379 | slave |
192.168.1.221 | 6379 | master |
192.168.1.221 | 7379 | slave |
192.168.1.222 | 6379 | master |
192.168.1.222 | 7379 | slave |
配置方面
master 的
port 6379
cluster-enabled yes #要打开集群开关
cluster-config-file nodes-cluster.conf #配置配置文件 无需维护
cluster-node-timeout 5000
appendonly yes
daemonize no
protected-mode no
pidfile /var/run/redis-cluster.pid
cluster-announce-ip 192.168.1.220 #对外ip。【你可以理解为选择哪个网络】
slave 的
port 7379
cluster-enabled no #这里关闭
appendonly yes
daemonize no
protected-mode no
pidfile /var/run/redis.pid
slaveof 192.168.1.220 6379
docker-compose
version: '3.7'
x-image:
&default-image
image: redis:5.0.7
services:
redis-master-cluster:
<<: *default-image
container_name: redis-master-cluster
command:
["redis-server", "/home/redis/cluster/redis.conf"]
volumes:
- ./master-cluster.conf:/home/redis/cluster/redis.conf
- ./master-data:/data
ports:
- 6379:6379
- 16379:16379 #cluster 默认通信端口是 redis端口 + 10000,所以这个接口也要打开
redis-slave-cluster:
<<: *default-image
container_name: redis-slave-cluster
command:
["redis-server", "/home/redis/cluster/redis.conf"]
volumes:
- ./slave.conf:/home/redis/cluster/redis.conf
- ./slave-data:/data
ports:
- 7001:7379
然后 使用 docker-compose 开启容器
docker compose up -d
最后开启 cluster
我们要使用 redis-cli 来配置 cluster。
1、先进入一个主节点
docker exec -it your_master_container_name /bin/bash
-i 表示交互式输入【interactive】,作用是保持标准输入打开,使得用户可以通过终端向容器内部进程发送消息
-t 表示分配伪终端,可以让容器内的进程在一个类似终端的环境中运行有了伪终端,容器内的命令行界面会更加友好,例如可以支持彩色输出、正确处理终端控制字符(如退格# 键、箭头键等)。如果没有-t选项,在容器内执行一些需要终端支持的命令可能会出现问题。
2、连接三台服务器
redis-cli --cluster create 192.168.1.220:6379 192.168.1.221:6379 192.168.1.222:6379 --cluster-replicas 0
--cluster-replicas 0 最后的 0 表示 一个主master 创建的 副本节点数量。我们这里做测试所以不需要。
测试
用客户端连接测试
> set k1 hahaha
MOVED 12706 192.168.1.222:6379
> set k2 heiheihei
OK
> set k3 wuwuwu
OK
> set k4 haohaohao
MOVED 8455 192.168.1.221:6379
这里发现 第一次输入的被移到 222 服务器上了。
而 k2, k3 则正常。