一.安装redis服务:

1.解压redis安装包

tar zxf redis-4.0.8.tar.gz

2.源码编译redis

cd redis-4.0.8
yum install gcc     # 安装redis源码编译依赖性gcc,在make之前安装
make  
make install

3.执行redis安装脚本

cd utils/   
./install_server.sh

复制Redis从一个机器到另一个机器 redis主从复制getshell_主从复制


4.检验redis是否安装正确

redis-cli   
info

5.vim /etc/redis

使得6379监听所有ip

复制Redis从一个机器到另一个机器 redis主从复制getshell_配置文件_02


重启redis服务:

/etc/init.d/redis_6379 stop

/etc/init.d/redis_6379 start

二.redis实现主从复制:

1.在server1中执行redis命令行redis-cli设置一个键值set name jay get name

复制Redis从一个机器到另一个机器 redis主从复制getshell_主从复制_03


2.在sevrer2中修改配置文件vim /etc/redis/6379.conf

slaveof 172.25.77.1 6379     # 设置自己的master为172.25.77.1

重启redis /etc/init.d/redis_6379 restart

3.在server2中的redis命令行读取name的值

复制Redis从一个机器到另一个机器 redis主从复制getshell_redis_04

三.redis集群一

1.在server中:

cd redis-4.0.8
cp sentinel.conf  /etc/redis
修改sentinel.conf文件:
 17 protected-mode no
 21 port 26379
 50 dir /tmp任意一个
 69 sentinel monitor mymaster 172.25.77.1 6379 2
 # 这个主服务器的 IP 地址为 127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)
 98 sentinel down-after-milliseconds mymaster 5000

复制Redis从一个机器到另一个机器 redis主从复制getshell_主从复制_05


2.将server1中修改好的配置文件scp给server2和server3,因为这三台主机构成集群,所以这个配置文件是相同的

3.打开一个shell连接三台主机中的任意一个,做监控命令,查看master和slave

redis-server /etc/redis/sentinel.conf –sentinel

4.宕掉现在的master,在监控窗口中查看现在的master

初始master是server1:

复制Redis从一个机器到另一个机器 redis主从复制getshell_redis_06


宕掉server1:

复制Redis从一个机器到另一个机器 redis主从复制getshell_集群_07


查看监控中的变化:

复制Redis从一个机器到另一个机器 redis主从复制getshell_主从复制_08


复制Redis从一个机器到另一个机器 redis主从复制getshell_集群_09


这时我们发现,集群中的master变为server3,接着我们查看server2中的配置文件:

复制Redis从一个机器到另一个机器 redis主从复制getshell_复制Redis从一个机器到另一个机器_10


配置文件中指定的master也变为了server3,因此集群中master的变化是彻底的….

四.redis集群二

创建集群化工具:

1.将集群化工具的运行脚本放在系统第三方软件目录中

cd redis-4.0.8/src/

cp redis-trib.rb /usr/local/bin/

cd /usr/local/bin/

2.执行redis-trib.rb会出现依赖性的错误,于是开始解决依赖性:

yum install ruby

yum install rubygems-1.3.7-5.el6.noarch.rpm

yum install libyaml-0.1.3-4.el6_6.x86_64.rpm ruby-2.2.3-1.el6.x86_64.rpm

gem install –local redis-4.0.1.gem

3.查看集群化工具是否安装完成

gem list –local

复制Redis从一个机器到另一个机器 redis主从复制getshell_配置文件_11


4.创建集群,查看集群中的主从关系

mkdir cluster    
mkdir cluster/700{1..6} 
# 在cluster下建立六个目录700*,作为集群中每个节点的目录在里边写配置文件redis.conf
  port 700x    端口
  cluster-enabled yes
  cluster-config-file nodes.conf
  cluster-node-timeout 5000
  appendonly yes
  daemonize yes     #默认值 no,该参数用于定制 redis 服务是否以守护模式运行
  pidfile /usr/local/cluster/700x/redis.pid    # 节点的pid文件所在位置
  logfile /usr/local/cluster/700x/redis.log    # 节点的日志文件所在位置

redis-server redis.conf   ---加载配置文件

5.cat redis.log查看日志,改正warning

复制Redis从一个机器到另一个机器 redis主从复制getshell_redis_12


查看相应端口是否打开:netstat -antlp

4.创建集群:

redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

复制Redis从一个机器到另一个机器 redis主从复制getshell_集群_13


复制Redis从一个机器到另一个机器 redis主从复制getshell_复制Redis从一个机器到另一个机器_14


5.在集群中写入值并查看

复制Redis从一个机器到另一个机器 redis主从复制getshell_主从复制_15


6.使现在保存键值的master宕掉,进入集群,查看数据(slave接替)

复制Redis从一个机器到另一个机器 redis主从复制getshell_redis_16


接着宕掉slave,查看发现得不到数据,如果将slave或者master恢复,数据也会恢复

复制Redis从一个机器到另一个机器 redis主从复制getshell_集群_17