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 版权声明:本文为博主原创文章,转载请附上博文链接!