linux centos 7安装redis并且配置主从复制和哨兵模式。一主二从三哨兵

1、VMware准备三台虚拟机(不会安装的自行百度,再次不做赘述),我的配置如图。三台虚拟机(centos 7),IP分别为192.168.124.19,192.168.124.20,192.168.124.21,其中20作为master(主服务器)。19和21为slave(从服务器)。主服务器可以读写,从服务器只读不能写。三台服务器上分别安装redis,我的redis版本为4.0.11

tar xzvf redis-4.0.11.tar.gz

cd redis-4.0.11

make

make install

安装gcc 
yum -y install gcc automake autoconf libtool make 

2、redis安装好了之后,三台服务器分别把相关的文件拷贝到/usr/redis目录下。先新建此目录,然后在redis安装目录下的src目录下面复制redis-server、redis-cli、redis-benchmark三个文件到/usr/redis。再从redis安装目录下复制redis.conf、sentinel.conf两个文件到/usr/redis目录下面。复制完之后,/usr/redis文件夹目录如下,只有这5个文件

3、进入到/usr/redis目录,修改两个从服务器(也就是192.168.124.19,192.168.124.21这两个)的redis.conf文件

# bind 127.0.0.1   #把这一行注释掉
protected-mode no # 把保护模式设置为no,如果这里是yes,那么修改为no
port 6379 #端口号6379保持不变
daemonize no #这里修改为no,表示redis服务可以后台运行
slaveof 192.168.124.20 6379 #由于是从服务器,所以要配置其主服务器,配置格式:
slaveof 主IP 主端口号

4、修改主服务器(192.168.124.20)的redis.conf文件,因为是主服务器,所以不配置slaveof,其他相同

# bind 127.0.0.1   #把这一行注释掉
protected-mode no # 把保护模式设置为no,如果这里是yes,那么修改为no
port 6379  #端口号6379保持不变
daemonize no  #这里修改为no,表示redis服务可以后台运行

5、关于redis的其他配置可以参考这个博客 https://www.cnblogs.com/zxtceq/p/7676911.html

6、修改完了配置之后,可以挨个启动redis服务。这里启动一点要带上redis.conf,否则的话,redis会用默认配置,那刚才配置的就没用了,所以要带上redis.conf

redis-server redis.conf

这时候三个服务器的redis服务就已经全部启动了,可以用info命令查看redis信息

redis-cli info

先看主服务器192.168.124.20,如图。可以看到角色role是master,也就是主服务器,有两个slave,slave0和slave1,说明配置正确

再看从服务器的信息info,在从服务器上执行redis-cli info命令,如图。可以看到角色role是slave,也就是从服务器。master_link_status:up这说明主服务状态正在运行,这里如果为down,那可能是主机的防火墙的原因,可以关闭防火墙,systemctl stop firewalld

7、试一试redis的读写,在主服务器上面可以写,也就是set,在20上面执行,可以读可以写

在从服务器上,19上面,可以看到没有写的权限,只有读的权限。可以在 主服务器上面写,然后在从服务器上面读取

8、到此,redis的主从复制已经搭建完成,然后再搞一下哨兵。其实哨兵也就是一个进程,用来监视这个redis集群。这里遵从一主二从三哨兵模式。这里有三台主机192.168.124.19,192.168.124.20,192.168.124.21,可以在这上面分别启动一个哨兵进程。注意:哨兵进程和redis进程没有关系,可以在一台主机上面启动。(最开始学这里的时候我也是懵逼的,后来懂的),还记得开始的时候拷贝的几个文件么,其中有一个就是sentinel.conf ,这个文件就是哨兵的配置文件。三个哨兵监控这个redis集群,如果主服务器挂了,那么三个哨兵就从从服务器里选一台作为主服务器,选举机制一会在配置文件里面表明。

9、三台服务器上的哨兵配置相同的,这里写一个,其他两个都一样的,修改配置文件sentinel.conf

protected-mode no  #关闭保护模式

port 26379  #端口号

dir "/tmp"   #目录

sentinel parallel-syncs mymaster 1 #故障迁移的时候,复制的从服务器的个数

sentinel failover-timeout mymaster 180000 #故障迁移所需时间,也就是主服务器挂了之后,选举新服务器的时间,如果这个时间还没能选举出来,那么就算选举失败

sentinel deny-scripts-reconfig yes sentinel monitor mymaster
192.168.124.20 6379 2 #这个是指哨兵监视哪个redis集群,这里监视的是192.168.124.20,6379是端口号,最后的2表示,如果主服务器挂了,3个哨兵中有2个投票选新的服务器,那么就可以进行故障迁移,选出了新的服务器 sentinel down-after-milliseconds mymaster 3000 #sentinel认为“主线下线”的一个阀值。

 10、挨个启动哨兵模式,哨兵之间也是相互监控的

redis-server sentinel.conf --sentinel &

 11、这是,哨兵模式就已经启动了,这时候就可以监视redis集群了,如果主服务器挂了之后就可进行故障转移了,现在模拟主服务器挂掉,在20上执行,redis-cli shutdown,手动挂掉主服务器,如图

可以看到,+switch,选了一个新的主服务器,也就是19.这时候看一看19的信息info如图,19role为master,有一个从服务器21

试一试写操作,是可以的

看一看21的info,主服务器变为19

12、再重新启动挂掉的20,之后再看看19的info,有两个slave,20和21.很成功。nice

Linux

安装完redis单独用命令:

redis-server
报错:

-bash: redis-server: command not found
说明redis-server不是全局命令,那么假如到全局即可:

 假如我的redis安装路径是:/home/prod/redis/redis-4.0.8

ln -s /home/prod/redis/redis-4.0.8/src/redis-server /usr/bin/redis-server
将
redis-server
放到/usr/bin下即可(相当于创建一个全局快捷方式)
--------------------- 
作者:Mr.True 
来源:CSDN 
原文:https://blog.csdn.net/q258523454/article/details/81012518 
版权声明:本文为博主原创文章,转载请附上博文链接!

  

 
原文地址:https://www.cnblogs.com/bxssjava/p/9992492.html