部署架构:
Master(127.0.0.1:6379) →Slave1(127.0.0.1.6380)→Slave3(127.0.0.1:6383)
→Slave2(127.0.0.1.6381)
环境:
System:ubuntu
Redis:redis-4.0.8
步骤:
1.下载redis安装包,这里用的是redis-4.0.8
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2.解压编译
tar -zxvf redis-4.0.8.tar.gz
3.编译安装
切换到redis的目录下
cd redis-4.0.8
make
make install
4.添加相对应的文件夹
cd ..
mkdir redis-cluster
mkdir -r 6379 6380 6381 6383
5.做相应的配置
将redis.conf 复制到新建的文件下
复制到6379下,命令vim redis.conf,修改master
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379
logfile “/usr/local/redis/redis-4.0.8/log/master_6379.log” # 该项可不设置,默认输出到/dev/null
slave-read-only yes # 表示从库只读,如果设置成no,表示从库也是可以写入的
复制到6380下,命令vim redis.conf ,修改salve1
daemonize yes
pidfile /var/run/redis_6380.pid
port 6380
logfile “/usr/local/redis/redis-4.0.8/log/master_6380.log” # 该项可不设置,默认输出到/dev/null
slave-read-only yes # 表示从库只读,如果设置成no,表示从库也是可以写入的
slaveof 127.0.0.1 6379 #Master
复制到6381下,命令vim redis.conf ,修改salve2
daemonize yes
pidfile /var/run/redis_6381.pid
port 6381
logfile “/usr/local/redis/redis-4.0.8/log/master_6381.log” # 该项可不设置,默认输出到/dev/null
slave-read-only yes # 表示从库只读,如果设置成no,表示从库也是可以写入的
slaveof 127.0.0.1 6379 #Master
复制到6383下,命令vim redis.conf ,修改salve3
daemonize yes
pidfile /var/run/redis_6383.pid
port 6383
logfile “/usr/local/redis/redis-4.0.8/log/master_6381.log” # 该项可不设置,默认输出到/dev/null
slave-read-only yes # 表示从库只读,如果设置成no,表示从库也是可以写入的
slaveof 127.0.0.1 6380 #Master
6.启动redis
redis-server /usr/local/redis/redis-4.0.8/redis-cluster/6379/redis.conf
...
我们用命令看下 是否都启动成功
7.登录master查看,并写一个key
可以看出master下有两个salve,分别监听6380和6381
8.登录slave1,查看主从关系
slave1 下有一个slave,也能get到可以的值
9.现在用shutdown,人为造成宕机,将slave3的主换成slave2
表示slave1已经宕机
slaveof no one: 该命令表示,断开和主的关系,自己成为master
slaveof [ip] [port]: 表示把自己设置成 ip:port 的从Redis
模拟slave1宕机,将slave3的主设置为slave2
上面的过程已经完成了,slave1的宕机,成功切换slave3的主为slave2.
10.将slave2宕机,slave3升级为独立master
slaveof no one: 该命令表示,断开和主的关系,自己成为master
11.主从切换
刚刚将slave3的主宕机,切换了slave3为主机,现在切换回去。