redis主从及哨兵搭建实验

一、redis主从搭建

Redis 下载地址:redis.io

Redis主从同步(7版本需要设置密码)

主从同步原理:

slave与master建立连接,发送sync同步命令,主服务器会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台完成保存后,就将此文件发送给从服务器,从服务器将此文件保存到磁盘上并读取到内存中。

1、主服务器给自己设置密码即可(局域网可加密可不加密,公网必须加密)

2、从服务器修改配置文件,用来连接主服务器

Redis 4 版本以前的版本

从:

slaveof <masterip> <msterport>        #主服务器的IP和端口

masterauth <masterpass>                #主服务器的密码(主服务器要设置好密码)

新版本redis 5.* 以上:

       主:

        找到 bind 127.0.0.1 注释掉,或者修改为本机的IP地址(重启)

       从:

        replicaof  <masterip> <msterport>  #主服务器的IP和端口

        masterauth <masterpass>                    #主服务器的密码(主服务器要设置好密码)

注:redis7版本以上的不设置密码无法进行主从同步。

实验步骤:

1、下载redis源码包 (主从服务器都安装,打开同步执行开关)

2tar -xf redis-7.2.2.tar.gz

3yum -y install gcc

4redis编译安装

 make && make PREFIX=/usr/local/redis/   install

5cd /sur/local/redis/

 mkdir conf                         #创建配置文件存放目录

 mkdir data                         #创建数据存放目录

 mkdir logs                          #创建日志存放目录

 cp -a /root/redis-7.2.2/redis.conf   ./conf/

 vim conf/redis.conf

  •  增加监听本机的ip地址,否则别的从服务器连接不上。(主服务器上监听,从服务器可设可不设置)

  •  GENERAL下的daemonize   后面改为yes

  • pidfile  后面填写redis进程文件保存位置,

 pidfile  "/usr/local/redis/redis.pid"

  •  logfile 后面填写日志文件的保存位置

 logfile "/usr/local/redis/redis.log"

  •  dbfilename  "redis.rdb"                  #rdb快照二进制文件名
  •  dir    "/usr/local/redis/data/"         #数据保存目录
  • 取消replicaof 行的注释,后面填写链接主服务器的IP地址和端口号

  • 取消requirepass  行的注释,后面填写密码(主服务器设置)

  • 取消masterauth 行的注释,后面填写主服务器的密码(从服务器设置)

  • 打开aof文件记录的开关 appendonly    yes

  • appendfilename 后面填写aof持久化文件的文件名

  •  appenddirname     后面填写保存aof文件的相对目录,为数据保存目录的子目录                                            

#7版本才有,用来单独保存aof文件的目录

6ln -s /usr/local/redis/bin/*  /usr/local/bin/

取消两台服务器同步操作开关

7redis-server   -a 123456 /usr/local/redis/conf/redis.conf     #启动redis数据库

8redis-cli info    server                                               #查看redis服务器的运行状态

     redis-cli info    replication                                        #查看redis主从关系

9、登录主redis服务器

 redis-cli    -a 123456                                            #登录主redis数据库

 set name zhangsan                                               #创建键值对

 save                                     #手动同步数据到从服务器,因为自动触发机制有时间限制

10、退出数据库登录,在主服务器上查看数据是否写入

 cd /use/local/redis/data

 ls

11、从服务器关闭数据库,再重启

 redis-cli  shutdown

 redis-server  /usr/local/redis/conf/redis.conf

 redis-cli info    server                                               #查看redis服务器的运行状态

 redis-cli info    replication                                        #查看redis主从关系

12、登录从服务器验证是否同步成功

 redis-cli

 keys  *

 get name

持久化:核心技术就是数据存储在硬盘上,保证内存数据清空后仍然保存有完整的数据

复制:主从复制是整个高可用的基础,能实现多机备份、读写分离、负载均衡、但缺陷是无法自动完成故障解决

哨兵:在主从复制的基础上,实现了自动化的故障发现和故障转移方案,让高可用更加完善

集群:在主从复制的基础上能实现负载均衡,解决了写操作只有一个主节点的问题,更加完善redis的高可用。适合海量存储,高并发的请求

二、redis哨兵搭建实验

哨兵的作用:

监控功能:哨兵会自动完成对主节点和其他哨兵节点的运行监控(自主发现)

自动故障转移:哨兵在监控到主节点工作异常时,会自动开始故障转移,把其中一个主节点提升为新的主节点,并更改其他从节点的配置

配置提供者:通过哨兵为第三方客户提供主节点链接地址

消息通知:哨兵可以将故障及故障转移结果发送给第三方客户端

实验规划:

数据节点: 6379(模版)6380      6381    6382

哨兵节点: 26379(模版) 26380    26381 26382

实验步骤:

1、下载redis服务

2、安装redis

  •  tar -xf redis-6.2.3.tar.gz
  •  cd redis-6.2.3
  •  make && make PREFIX=/usr/local/redis   install
  •  cd /usr/local/redis
  •  mkdir conf                 #创建配置文件目录
  •  mkdir data                 #创建数据文件保存目录
  •  mkdir logs                  #创建日志文件保存目录
  •  cp /root/redis-6.2.3/redis.conf  sentinel.conf    /usr/local/redis/conf/

#将配置文件复制到conf目录下

  •  ln -s /usr/local/redis/bin/*  /usr/local/bin/

3、修改配置文件

  •  vim /usr/local/redis/conf/redis.conf
    • 增加监听本机IP地址:

  • 打开运行后台运行开关

  • 修改pid文件的路径和文件名

  • 修改日志文件的路径和文件名

  • 修改rdb的数据文件名

修改数据文件的保存目录路径

  • 打开生成aof文件的开关,并修改aof的文件名

4、复制生成主服务器和两个从服务器的配置文件

  •  cd /usr/local/redis/conf/
  •  cp -a redis.conf  redis-6380.conf
  •  vim redis-6380.conf
    •  末行模式:%s  /6379/6380/c
  •  cp -a redis-6380.conf  redis-6381.conf
  •  vim redis-6381.conf
    • 取消replicaof行的注释,指向主服务器 IP和端口
    • 末行模式:%s  /6380/6381/g

  •  cp -a redis-6380.conf  redis-6381.conf
  •  vim redis-6381.conf
    •  取消replicaof行的注释,指向主服务器 IP和端口
    • 末行模式:%s  /6381/6382/g

5、启动redis主服务器和从服务器

  •  redis-server /usr/local/redis/conf/redis-6380.conf
  •  redis-server /usr/local/redis/conf/redis-6381.conf
  •  redis-server /usr/local/redis/conf/redis-6382.conf
  •  netstat -anpt |grep 638*
  •  redis-cli -p 6380 info replication

6、

 redis-cli  -p 6380 set name zhangsan     #登录主服务器创建键值对

 redis-cli  -p 6381 get  name                   #从服务器查看

7、告诉哨兵谁是主服务器

 cd /usr/local/redis/conf/

 vim  sentinel.conf

 修改后台进程运行为yes

修改pid文件和路径;修改日志文件的路径和文件名

修改指向主服务器的IP、端口、哨兵节点投票通过数量

 cp -a sentinel.conf   sentinel-26380.conf

 vim sentinel-26380.conf

 port  26380

 pidfile "/usr/local/redis/logs/sentinel-26380.pid"

 logfile "/usr/local/redis/logs/sentinel-26380.log"

 cp -a sentinel-26380.conf  sentinel-26381.conf

 vim sentinel-26381.conf

 末行模式:%s  /26380/26381/

 cp -a sentinel-26380.conf  sentinel-26382.conf

 vim sentinel-26382.conf

 末行模式:%s  /26380/26382/

8、启动哨兵节点进程。

 redis-sentinel  /usr/local/redis/conf/sentinel-26380.conf   

 或者redis-server  /usr/lcoa/redia/conf/sentinel-26380.conf  --sentinel

 redis-sentinel  /usr/local/redis/conf/sentinel-26381.conf 

 redis-sentinel  /usr/local/redis/conf/sentinel-26382.conf 

注:启动哨兵进程后,在配置文件最后会自动增加哨兵的信息等。

9、模拟主节点故障(故障判定转移时间为1.5倍故障认定时间)

 netstat -anpt |grep LISTEN |grep : 63

 kill 11631  

 redis-cli -p  6381 info  replication                     #查看主从信息

 redis-cli -p  6382 info  replication                     #查看主从信息

 redis-cli -p 26380 info  sentinel                  #查看哨兵信息

 cat /usr/local/redis/conf/sentinel-26380.conf

#配置文件最后面的主从信息也更新

10、修复模拟坏掉主服务器,修复后会变为从服务器

 redis-server  /usr/local/redis/conf/redis-6380.conf   #启动服务器

 redis-cli  -p 6381 info replication                               #查看从服务器是否增加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值