之前我们已经安装过redis了,现在我们来搭建一个redis cluster集群与分区。由于并没有这么多服务器,所以搭建的是一个三主三从伪集群。集群的ip地址统一为:192.168.0.160,端口分别为:7001-7006
配置文件修改
7001节点配置
1、进入到redis安装目录,创建配置文件
cd /usr/local/redis-5.0.3
mkdir -p cluster/7001
cd cluster/7001/
cp ../../redis.conf ./
2、修改配置文件
vim redis.conf
修改配置信息如下
#注释掉redis的监听地址,使其可以使用其他地址访问
#bind 127.0.0.1
#不开启保护模式
protected-mode no
#修改redis端口
port 7001
#redis后台运行
daemonize yes
#修改pid文件,使pid文件唯一
pidfile /var/run/redis_7001.pid
#开启集群功能
cluster-enabled yes
其他的暂时不修改
7002节点配置
1、复制7001节点配置
cd ../
cp -r 7001/ 7002
2、修改7002节点配置
vim 7002/redis.conf
修改内容如下
port 7002
pidfile /var/run/redis_7002.pid
其他节点配置
其他节点配置参照7002节点配置,修改相应的端口,pid文件名即可,创建完,目录如下
启动服务
1、编写启动脚本
vim start.sh
内容如下
cd 7001/
redis-server ./redis.conf
cd ../7002/
redis-server ./redis.conf
cd ../7003/
redis-server ./redis.conf
cd ../7004/
redis-server ./redis.conf
cd ../7005/
redis-server ./redis.conf
cd ../7006/
redis-server ./redis.conf
2、修改启动脚本权限
chmod u+x start.sh
3、启动
sh start.sh
启动集群
1、启动脚本
redis-cli --cluster create 192.168.0.160:7001 192.168.0.160:7002 192.168.0.160:7003 192.168.0.160:7004 192.168.0.160:7005 192.168.0.160:7006 --cluster-replicas 1
说明:
- --cluster: 指定操作的是集群
- create: 创建集群
- 192.168.0.160:7001 192.168.0.160:7002等等:指定集群节点的地址与ip
- --cluster-replicas:指定每个主节点带一个从节点
2、启动选择
输入: yes 创建集群
集群操作
1、连接集群
redis-cli -h 192.168.0.160 -p 7001 -c
说明:redis地址可以指定集群中任意可用的节点,对数据库进行操作,会切换到对应的主节点
-c: 指定连接集群
2、查看集群信息
cluster info
3、查看集群节点
cluster nodes
3、查看主从
4、操作数据
set name:1 test
客户端自动move连接到7003这个端口的主节点
添加一主一从节点
1、主节点配置
参照配置文件修改章节,添加7007节点配置文件,修改配置文件内容。修改的内容如下
port 7007
pidfile /var/run/redis_7007.pid
2、启动主节点
cd 7007
redis-server ./redis.conf
3、主节点加入集群
redis-cli --cluster add-node 192.168.0.160:7007 192.168.0.160:7004
说明:
--cluster:集群操作
add-node: 增加节点操作
192.168.0.160:7007: 新增节点的地址端口
192.168.0.160:7004:要加入集群的节点地址端口(集群中任意可以节点地址端口)
4、连接到集群,查看节点信息
redis-cli -h 192.168.0.160 -p 7001 -c
cluster nodes
说明 7007已经作为主节点加入集群了
5、为7007节点分配槽点
只有为节点分配了槽点,节点才能储存数据
redis-cli --cluster reshard 192.168.0.160:7001
说明:
--cliuster: 集群操作
reshard: 重新分区
192.168.0.160:7001:集群中任意可用节点地址端口
此处的3000指定要重新分区的槽点数(redis总计槽点16384)
指定接收槽点的节点,这里指定7007节点的运行id
指定槽点的源节点,all指定全部主机节点(只有主机节点存储槽点)。或者一个一个指定要从哪些主节点分配,输入完成后输入done
输入 yes 执行重新分区
6、再次查看集群节点信息
7007节点已分配槽点
7、从节点配置
参照配置文件修改章节,添加7008节点配置文件,修改配置文件内容。修改的内容如下
port 7008
pidfile /var/run/redis_7008.pid
8、启动从节点
cd 7008
redis-server ./redis.conf
9、从节点加入集群
redis-cli --cluster add-node 192.168.0.160:7008 192.168.0.160:7001 --cluster-slave --cluster-master-id b395d49fdb0e3675770723cd4948c0861a816577
说明:
--cluster: 集群操作
add-node: 添加节点
192.168.0.160:7008: 新增节点
192.168.0.160:7001: 集群中可用节点
--cluster-slave 添加的为从节点
--cluster-master-id: 为从节点指定主节点
b395d49fdb0e3675770723cd4948c0861a816577: 主节点运行编号
10、查看集群节点信息
redis-cli -p 7001 -c
cluster nodes
7008节点已加入集群,并且作为7007的从节点
高可用性与容灾
1、模拟节点7007宕机
2、查看集群节点信息
7007已经连接断开,7008(之前7007的从节点)变成了主节点
3、操作集群
集群可用
4、再次启动7007
5、查看集群信息
7007加入了节点,并且成为了7008的从节点
6、模拟7007、7008都宕机了
7、再次查看集群信息
某个分片的节点都宕机了,对redis操作,提示集群宕机了
8、重启7007
9、再次查看
虽然从节点起来了,但是集群还是宕机的
10、启动7008
11、查看集群
此时集群已经可以用了