Redis集群搭建
搭建3组,每组一主一从。一共启动6个redis服务。
6台redis服务的端口从 8001 - 8006
前提你已经安装好了redis
1、创建集群目录
mkdir /usr/local/mysoftware/redis/cluster -p
2、把安装redis后产生的bin目录拷贝放到 /usr/local/mysoftware/redis下
cp 你redis生成后的bin目录 /usr/local/mysoftware/redis -r
3、切换到cluser 目录下
cd /usr/local/mysoftware/redis/cluster
4、在cluster目录下创建每个Redis服务对应的文件夹
mkdir 8001
mkdir 8002
mkdir 8003
mkdir 8003
mkdir 8004
mkdir 8005
mkdir 8006
5、把redis.conf文件拷贝到cluser目录下
cp 你redis.conf ./
6、修改redis.conf文件
vim redis.conf
修改内容如下:
7、把redis.conf 拷贝到8001-8006目录下
cp redis.conf ./8001/
cp redis.conf ./8002/
cp redis.conf ./8003/
cp redis.conf ./8004/
cp redis.conf ./8005/
cp redis.conf ./8006/
8、修改8002-8006文件夹下的redis.conf中的8001 改成自己对应的的800x
以8002为例
vim 8002/redis.conf
然后把所有出现的8001 改成8002,完成之后再保存退出。
同理修改8003、8004、8005、8006下的redis.conf文件
9、编写启动脚本
vim start.sh
内容如下:
#!/bin/bash
/usr/local/mysoftwares/redis/bin/redis-server /usr/local/mysoftwares/redis/cluster/8001/redis.conf
/usr/local/mysoftwares/redis/bin/redis-server /usr/local/mysoftwares/redis/cluster/8002/redis.conf
/usr/local/mysoftwares/redis/bin/redis-server /usr/local/mysoftwares/redis/cluster/8003/redis.conf
/usr/local/mysoftwares/redis/bin/redis-server /usr/local/mysoftwares/redis/cluster/8004/redis.conf
/usr/local/mysoftwares/redis/bin/redis-server /usr/local/mysoftwares/redis/cluster/8005/redis.conf
/usr/local/mysoftwares/redis/bin/redis-server /usr/local/mysoftwares/redis/cluster/8006/redis.conf
10、执行启动脚本
bash start.sh
查看进程
ps -ef | grep redis
11、创建集群
你启动了6个redis服务,此时的每个redis是没有关联的,所以这里需要指定。
cd ../ #先切到到上一级目录
注:如果需要在外部服务器通过代码访问redis集群,那么需要将下面命令的127.0.0.1 改成 服务器实际IP地址
./bin/redis-cli -a luanbu --cluster create 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006 --cluster-replicas 1
注:参数解释
bin/redis-cli --help
-a是指定密码
因为我们一开始的配置文件中指定了密码,所以这里需要加上-a luanbu,不然操作不了。
–cluster
bin/redis-cli --cluster help
cluster有子命令,可以通过上面命令查看
–cluster-replicas 1
最后面的数字是指每个master带有多少个slave从结点。
这里最后的数是1,那就是每个master结点有一个slave从结点。如果最后的数字是2,那么代表每个master对应2个slave从结点。
这里就是建立关联的过程:我们一共是6个redis服务,然后我们配置 每个master对应1个从结点,那么 6 / 2 = 3,那么系统就会为我们分配3组,每组是一个master和一个slave。
12、连接测试
通过下面命令连接集群中的其中一个客户端。
./bin/redis-cli -c -p 8001 -a luanbu
注: -c是以集群模式启动客户端。默认是单机模式去连接redis服务
切记勿漏 -c 和-a参数。
redis集群一共有16384个插槽,我们一共是3组,每组对应5000多个连续插槽,每组在其插槽范围内操作。当我们进行set k v的时候,系统会根据k计算出对应的插槽号,如果插槽号在我们当前的8003中,那么一切ok,但是如果插槽号不在8003所管范围中,那么就会切换到其它例如8002或8001上去处理,如果你不使用-c,那么如果计算出的key插槽号不在我们当前8003所管理的插槽号范围时,且因为我们是非集群模式启动客户端,即此时是单机模式的客户端,此时我们就不能切换到对应的8003或8001上,即此时就会写操作失败。
13、模拟宕机,测试是否自动实现故障转移
8002是主结点,8004是8002的从结点。
这里模拟8002宕机,观察8004是否会自动升级为master结点。
结论:但master结点宕机后,slave结点会升级成master结点
14、模拟假设情况
结论:如果出现假死情况,原本的master 再次活过来后会变成slave。三十年河东、三十年河西,以前的随从变成现在自己的主人
15、查看产生的数据文件。