redis 在服务器集群方面 有 主从复制的用法, 这种方法主要是用来对 系统做分布式的时候, 当一台redis 服务器挂机之后 ,服务扔可以访问, 也就是说 程序的高可用性 得以保障
大至可发分为三种模式
1 . 一主二仆 (假设三台服务器 分别是 redis6379 redis6380 redis 6381)
其构架是 一台主(redis) 服务器 其下挂两台 从服务器 (其配置原则是 配从 不配主)
1) 主服务器 中 修改 redis6379.conf
daemonize : yes //修改redis在后台运行
port : 6379
pidfile /var/run/redis_6379.pid (这个地方本可以不用改,但是我们是在一台机上模似的 所以 redis运行时会在/var/run/ 文件夹下生成的 进程文件名还是修改一下)
logfile "redis6379.log" //给主服务器上的日志文件命个名
dbfilename dump6379.rdb //给主服务器上的 rdb 数据库命一个名字,以便区分
2) 从服务器 拷贝 redis6379.conf 并改名为 redis6380.conf ,用作redis6380从服务器的 配置文件 ,之后进行相应的修改
daemonize : yes //在后台运行
port : 6380
pidfile /var/run/redis_6380.pid // 设置生成的pid文件名
logfile "redis6380.log" //给该从服务器日志文件命名
dbfilename dump6380.rdb //给从服务器上的rdb数据库 设置一个文件名,以便区分
3) 重复步骤2 , 注意这里应该是 6381了
4) 分别启动三个 redis 服务器 ./redis-server redis6379.conf ./redis-server redis6380.conf ./redis-server redis6381.conf
5) 启动之后 开启客户端 ./redis-cli -h 127.0.0.1 -p 6379 ./redis-cli -h 127.0.0.1 -p 6380 ./redis-cli -h 127.0.0.1 -p 6381
6) 在每一个客户端下 输入命令 info replication info replication info relicaption
观察一下显示 这时三个服务器都是一个立的服务 所以 role master (角色都是 master)
7) 配置主从服务 此时 主服务器不用配 ,在两个从服务器的客户端输入 ./slaveof 127.0.0.1 6379 ./slaveof 127.0.0.1 6379
8) 然后再在每个客户端输入 info replicationinfo replication info replication
观察一下显示 可以发现 主服务器(6379) 上显示 (role master ) 并且有两台 slave 连接 分别是 6380和6381
从服务器6380 上显示 (role slave)
从服务器6381 上显示(role slave)
这是主从复制配置好了
ps: 这个时候的主从复制 (主服务器6379) 是可读可写的 从服务器(6380 6381) 是只能读 不能写的 如果想可写 可以在redis.conf文件中配置
当从服务器第一次连接上 主服务器时 , 数据库使用的是全量复制 (把主服务器上的所有数据都拷到从服务器上)
之后 就是 增量的复制 只把新加入的拷贝过来
当主服务器挂机的时候 两个从服务器保持静默状态 这时 两个从服务器的角色还是 slave ,它们会一直等待 主服务器 (6379) , 当主服(6379) 重新上线的时候, 主仆关系不会发生改变
当然这种方式也可以改变 ,以后说的 哨兵模式 就可以解决这个问题
哨兵模式时 当主服务器挂机的时候 , 两个从服务器会自动 选举出一个来充当 主服务器 另一个当从服务器 ,如果以前的主服务器再重新上线的话, 不会再认它了
第二种 我们叫它"星火相传" 模式
也就是说 把 服务器(redis6379当主服) 把 服务器(6380 ) 配置成 服务器(6379) 的从服 然后把 服务器 6381 配置成 服务器6380 的从服务器
就好像是手拉手的一个一个的传下去的样子
大置配置如下
主服 6379 不用配
从服 6380 slave 127.0.0.1 6379
从服 6381 slave 127.0.0.1 6380
这样就可以了
如果想要自动化一点 就可使用 哨兵模式了
哨兵模式时 当主服务器挂机的时候 , 两个从服务器会自动 选举出一个来充当 主服务器 另一个当从服务器 ,如果以前的主服务器再重新上线的话, 不会再认它了
哨兵模式的配置方法
1.自定义的/myredis目录下新建 sentinel.conf 文件,名字绝不能错
2. vim 编辑 sentinel.conf 文件 头一行 顶格写 sentinel monitor 主机名称(自己起名字) 127.0.0.1 6379 1
如 : sentinel monitor localhost 127.0.0.1 6379 1 //这里是哨兵要 监视的 主服务器的主机名 ip地址 端口号 最后的1 表示开启监视
3 执命令 redis-sentinel /myredis/sentinel.conf // redis-sentinel 命令在redis的安装目录中, sentinel.conf 则是第二步编写的 ,视情况写上相应的命令位置和配置文件的位置
这样就配置完成了
当主服挂了之后 会从从服中选一个出来充当主服 , 当原来的主服重新上线了之后, 不会再认它当主服 , 主且新上线的原来的主服会自动的变为从服
OK完结