**Tips:**准备三台虚拟机,配置好主机名、IP地址和redis环境。为了演示方便,利用多个实列的方式在一台主机上运行。
cp /opt/software/redis-7.0.4/redis.conf /etc/redis.conf
cp /opt/software/redis-7.0.4/redis.conf /etc/redis2.conf
vim /etc/redis.conf
#添加以下端口
port 6380
vim /etc/redis.conf
port 6381
#根据不同的配置文件启动redis-server
redis-server /etc/redis.conf
redis-server /etc/redis2.conf
ps -ef | grep redis
#出现7379、6380、6381三个进程即配置成功
mkdir /rediscluster
cp /etc/redis.conf /rediscluster/redis.conf
Tips: 为了演示方便,把redis.conf中的appendonly no,即关闭AOF
[root@serverb rediscluster]# vim redis-6379.conf
include /rediscluster/redis.conf
# 修改端口号
port 6379
# 修改pid文件名
pidfile "/var/run/redis_6379.pid"
# 修改持久化文件名
dbfilename "dump_6379.rdb"
dir "/rediscluster"
[root@serverb rediscluster]# vim redis-6380.conf
include /rediscluster/redis.conf
# 修改端口号
port 6380
# 修改pid文件名
pidfile "/var/run/redis_6380.pid"
# 修改持久化文件名
dbfilename "dump_6380.rdb"
dir "/rediscluster"
[root@serverb rediscluster]# vim redis-6381.conf
include /rediscluster/redis.conf
# 修改端口号
port 6381
# 修改pid文件名
pidfile "/var/run/redis_6381.pid"
# 修改持久化文件名
dbfilename "dump_6381.rdb"
dir "/rediscluster"
[root@serverb rediscluster]# redis-server redis-6379.conf
[root@serverb rediscluster]# redis-server redis-6380.conf
[root@serverb rediscluster]# redis-server redis-6381.conf
[root@serverb rediscluster]# redis-cli -p 6379
[root@serverb rediscluster]# redis-cli -p 6380
[root@serverb rediscluster]# redis-cli -p 6381
127.0.0.1:6379> info replication
127.0.0.1:6380> info replication
127.0.0.1:6381> info replication
这时你会发现,三台都是master,也就是都是服务器。
假设我们希望 6379 是主服务器,而 6380 和 6381 是从服务器,则需要做如下配置。
命令格式:replicaof
注意:此命令代表我要做谁的从服务器
我们分别在 6380 和 6381 客户端中执行如下命令:
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK
注意:
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
测试
127.0.0.1:6380> get k1
1) "v1"
127.0.0.1:6381> get k1
1) "v1"
注意:
当一个 master 宕机后,后面的 slave 可以立刻升为 master,其后面的 slave 不用做任何修 改。
用 slaveof no one 将从机变为主机。
假设主机 6379 宕机了,我们可以在 6380 上执行如下命令来切换为主机:
127.0.0.1:6380> slaveof no one
查看6380,已经变为主机了。
哨兵也叫 sentinel,它的作用是能够在后台监控主机是否故障,如果故障了根据投票数自动将 从库转换为主库。
首先停止三台redis服务
redis-cli shutdown
然后再重新启动三台 Redis 服务器,并实现一主双从。
最后在 /rediscluster 目录下新建 sentinel.conf 文件,文件名称不能写错,必须叫这个名 称。
[root@serverb rediscluster]# vim sentinel.conf
sentinel monitor redismaster 127.0.0.1 6379 1
参数说明:
monitor:监控
redismaster:为监控对象起的服务名称
1:代表至少有多个哨兵同意迁移的数量
[root@serverb rediscluster]# redis-sentinel sentinel.conf
[root@serverb rediscluster]# redis-cli -p 6379
127.0.0.1:6379> shutdown
这时,哨兵就会介入,并进行选举,然后把选举成功的从面切换为主机。
如果我们把 6379 重新启动,则它会变为从机。
[root@serverb rediscluster]# redis-server /rediscluster/redis-6739.conf
[root@serverb rediscluster]# redis-cli -p 6379
127.0.0.1:6379> info replication