Redis高可用集群模式
![](https://img.haomeiwen.com/i20671991/1858c9d30b433f27.png)
redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵·也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到上万个节点(官方推荐不超过1000个节点)。redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单
文件组织格式
redis-cluster
├── redis-config
│ ├──6379
│ │ └── redis.conf
│ ├──6380
│ │ └── redis.conf
│ ├──6381
│ │ └── redis.conf
│ ├──6382
│ │ └── redis.conf
│ ├──6383
│ │ └── redis.conf
│ ├──6384
│ │ └── redis.conf
└── └── docker-compose.yml
修改redis.conf配置文件
(1)daemonize no #当redis.conf配置文件中daemonize参数设置的yes,这使得redis是以后台启动的方式运行的,由于docker容器在启动时,需要任务在前台运行,否则会启动后立即退出,因此导致redis容器启动后立即退出问题。所以redis.conf中daemonize必须是no
(2)port 6379#分别对应每个机器的端口号进行设置6379 6380 6381 6382 .......
(3)pidfile /var/run/redis.pid /#把pid进程号写入pidfile配置的文件
(4)dir "/data"
(5)cluster‐enabled yes#启动集群模式
(6)cluster‐config‐file nodes.conf/*集群节点信息文件*/
(7)cluster‐node‐timeout 10000
(8)#bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通 过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
(9)protected‐mode no #关闭保护模式
(10)appendonly yes #开启aof
#如果要设置密码需要增加如下配置:
(11)requirepass 123321 #设置redis访问密码
(12)masterauth 123321 #设置集群节点间访问密码,跟上面一致
编写docker-compose.yml文件搭建redis-cluster集群
version: '3'
services:
# redis1配置
redis1:
image: redis:5.0
container_name: redis-1
environment: # 环境变量
- PORT=6379 # 会使用config/nodes-${PORT}.conf这个配置文件
- TZ=Asia/Shanghai
ports:
- 6379:6379
- 16379:16379
stdin_open: true # 标准输入打开
tty: true # 后台运行不退出
privileged: true # 拥有容器内命令执行的权限
volumes:
- /data/redis/redis-cluster/redis-config/6379/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis-data/6379:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
# redis2配置
redis2:
image: redis:5.0
container_name: redis-2
environment: # 环境变量
- PORT=6380 # 会使用config/nodes-${PORT}.conf这个配置文件
- TZ=Asia/Shanghai
ports:
- 6380:6380
- 16380:16380
stdin_open: true # 标准输入打开
tty: true # 后台运行不退出
privileged: true # 拥有容器内命令执行的权限
volumes:
- /data/redis/redis-cluster/redis-config/6380/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis-data/6380:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
# redis3配置
redis3:
image: redis:5.0
container_name: redis-3
environment: # 环境变量
- PORT=6381 # 会使用config/nodes-${PORT}.conf这个配置文件
- TZ=Asia/Shanghai
ports:
- 6381:6381
- 16381:16381
stdin_open: true # 标准输入打开
tty: true # 后台运行不退出
volumes:
- /data/redis/redis-cluster/redis-config/6381/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis-data/6381:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
# redis4配置
redis4:
image: redis:5.0
container_name: redis-4
environment: # 环境变量
- PORT=6382 # 会使用config/nodes-${PORT}.conf这个配置文件
- TZ=Asia/Shanghai
ports:
- 6382:6382
- 16382:16382
stdin_open: true # 标准输入打开
tty: true # 后台运行不退出
volumes:
- /data/redis/redis-cluster/redis-config/6382/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis-data/6382:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
# redis5配置
redis5:
image: redis:5.0
container_name: redis-5
environment: # 环境变量
- PORT=6383 # 会使用config/nodes-${PORT}.conf这个配置文件
- TZ=Asia/Shanghai
ports:
- 6383:6383
- 16383:16383
stdin_open: true # 标准输入打开
tty: true # 后台运行不退出
volumes:
- /data/redis/redis-cluster/redis-config/6383/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis-data/6383:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
# redis6配置
redis6:
image: redis:5.0
container_name: redis-6
environment: # 环境变量
- PORT=6384 # 会使用config/nodes-${PORT}.conf这个配置文件
- TZ=Asia/Shanghai
ports:
- 6384:6384
- 16384:16384
stdin_open: true # 标准输入打开
tty: true # 后台运行不退出
volumes:
- /data/redis/redis-cluster/redis-config/6384/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis-data/6384:/data
command: sh -c "redis-server /usr/local/etc/redis/redis.conf"
- 生成启动Redis集群容器
docker-compose up -d
- 进入其中一个节点中
docker exec -it 容器Id bash
#进入容器后运行:
redis-cli
#如果设置了验证密码: (本人上面redis.conf中设置的验证密码是123456)
123321
#创建集群 命令里的1代表为每个创建的主服务器节点创建一个从服务器节点
redis‐cli ‐a 123321 ‐‐cluster create ‐‐cluster‐replicas 1 192.168.1.201:6379 192.168.1.201:6380 192.168.1.201:6382 192.168.1.201:6383192.168.1.201:6384 192.168.1.201:6385
- 验证集群
(1)redis‐cli ‐a 123321‐c ‐h 192.168.1.201 ‐p 63**
(2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
(3)进行数据操作验证
网友评论