本文使用的是redis-4.0.13.tar.gz版本。

两个centos7系统虚拟机:192.168.10.140、192.168.10.150

redis各版本下载地址:http://download.redis.io/releases/

单个redis下载、安装、启动、验证

在192.168.10.140上依次执行以下命令:

cd /home/soft     进入软件存放目录

wget http://download.redis.io/releases/redis-4.0.13.tar.gz     下载redis

tar -zxvf redis-4.0.13.tar.gz      解压缩redis

cd redis-4.0.13        进入redis目录

cd src                      进入src目录

make  &   install                     redis初始化,并安装

cd src 目录,然后启动:   ./redis-server   或者带上指定配置文件启动:./redis-server ../redis.conf     启动服务端,命令阻塞,不要关闭该窗口。

cd /home/program/redis-4.0.13          另起一个命令窗口作为客户端连接到服务端

cd src 目录,然后启动: ./redis-cli -h 127.0.0.1 -p 6379              连接到指定IP端口的redis服务端,如果连接本机的默认端口,可以直接:src/redis-cli 出现下图表示连接成功

src/redis-cli -h 127.0.0.1 -p 6379 -a 密码

127.0.0.1:6379>info                 执行info命令查看该服务端详情

在192.168.10.150上把以上步骤再次执行一遍,这样两台机器都安装上了redis

查看redis启动情况: ps -ef|grep redis

停止redis :  src/redis-chi -h 127.0.0.1 -p 6379 shutdown

主从模式

通过在192.168.10.140、192.168.10.150两个客户端的info命令,我们可以了解到当前两个redis都是master节点。

修改192.168.10.150的redis.conf配置:

# bind 127.0.0.1 ::
bind 0.0.0.0 使不同IP也能连上此节点,否则会报错:Error condition on socket for SYNC: Connection refused daemonize no 如果改成yes,则表示redis服务后台运行,这里保持默认 #protected-mode yes
protected-mode no 关闭保护模式,使从节点能连接上此主节点 pidfile /var/run/redis_6379.pid 指定你自己的pid数据库存储路径
logfile /home/program/redis-4.0./logfile_6379.log 指定你自己的log日志存放路径

192.168.10.140的redis.conf按照以上配置修改一遍,并加上另外一个配置:

slaveof 192.168.10.150 6379      配置上master主节点的信息,配置自己为slave从节点

连接到140上的客户端,执行命令:

127.0.0.1:6379>info                            执行info命令查看当前节点已经变成从节点

连接到150上的客户端,执行命令:

127.0.0.1:6379>info                            执行info命令查看当前节点已经变成从节点

把自己变成slave从节点的另一个方法是:

127.0.0.1:6379>slaveof 192.168.10.150 6379        表示当前redis设置150的6379的redis为master主节点,并把当前节点作为slave从节点。

验证环节:

去150上设置一个key value,140从节点就能读到了。注意:默认情况下slave从节点是只读,如果有需要,则需要改主节点的redis.conf,把slave-read-only yes 改成no

哨兵模式

主从模式下,如果master挂掉了,slave是无法自己顶上去作为master使用的,这时就需要哨兵机制把slave变成master。

mkdir redis-sentinel             在redis-4.0.13目录下新建redis-sentinel文件夹

vi redis-sentinel.conf             新建哨兵配置文件,添加以下内容:

#sentinel端口
port
#工作路径,注意路径不要和主重复
dir "/home/program/redis-4.0.13/redis-sentinel"
# 守护进程模式
daemonize yes
#关闭保护模式
protected-mode no
# 指明日志文件名
logfile "/home/program/redis-4.0.13/sentinel.log"
#哨兵监控的master,主从配置一样,这里只用输入redis主节点的ip/port和法定人数。
sentinel myid c186cf19d1e2533f21b650cca31fccabaa266293 //这一行由启动成功的哨兵自己写入
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel deny-scripts-reconfig yes
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel monitor mymaster 192.168.10.150 2 //监控master节点所在的IP端口,并设置2个sentinel哨兵监控到master节点挂掉才能启动故障转移,把其中一台slave升级为master,如果旧master恢复正常,也加入slave。
#设置master和slaves验证密码
#sentinel auth-pass mymaster
#sentinel parallel-syncs mymaster 1 //指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步 # Generated by CONFIG REWRITE 以下内容都是sentinel在启动之后会自己改的,默认都注释掉即可
sentinel down-after-milliseconds mymaster 5000 //在master挂掉后多少毫秒后才算真的master挂掉
sentinel failover-timeout mymaster 18000 //故障转移超时时间(毫秒)。如果Redis的master节点出现问题,Sentinel能够启动一个故障转移处理,该处理会将一个slave节点提升为master节点,其他的slave节点则会自动配置成新的master节点的slave节点,如果原来的master重新正常启动后,也会成为该新Master的slave节点。
sentinel config-epoch mymaster 3
sentinel leader-epoch mymaster
sentinel known-slave mymaster 192.168.10.140 6379 //已知的slave节点
sentinel current-epoch

cd /home/program/redis-4.0.13

src/redis-sentinel redis-sentinel/redis-sentinel.conf        启动三次就是启动了三个哨兵。查看哨兵启动进程:

验证环节:

把150 master kill掉,可以看到140的客户端info里,已经由slave变成了master,表示哨兵启用成功。

启动成功之后, redis-sentinel.conf 配置里的 # Generated by CONFIG REWRITE 部分内容会被哨兵自动更新值。

集群模式启动前提:ruby安装

yum install rubygems

gem install redis          验证启动集群条件

ruby安装参考: https://www.cnblogs.com/PatrickLiu/p/8454579.html  (redis requires ruby version 2.2.2的解决方案)确保能执行成功:gem install redis

集群模式启动前提:创建6个集群节点

cd /home/program/

mkdir redis-cluster       新建集群目录

cd  redis-cluster

mkdir 2000 3000 4000 5000 6000 7000       新建6个文件夹,以redis启动端口号命名。在一台机器里启动6个redis节点,模拟6个redis集群

先尝试启动集群中的第一个节点:

cp /home/program/redis-4.0.13/redis.conf 2000             把配置文件copy到2000文件夹目录下

cd 2000

vim redis.conf              修改内容如下:

port
pidfile /home/program/redis-cluster//pidfile_2000.pid
logfile /home/program/redis-cluster//logfile_2000.log
cluster-enabled yes
cluster-config-file /home/program/redis-cluster/bin/nodes-2000.conf 由redis集群自动生成,集群启动成功之后,可以命令查找之: find / -name nodes-2000.conf
cluster-node-timeout

cd /home/program/redis-cluster

mkdir bin

[root@192 src]# cp /home/program/redis-4.0.13/dump.rdb /home/program/redis-cluster/bin/dump.rdb

[root@192 src]# cp redis-server /home/program/redis-cluster/bin/
[root@192 src]# cp redis-cli /home/program/redis-cluster/bin/
[root@192 src]# cp redis-trib.rb /home/program/redis-cluster/bin/

集群模式

前提条件:

1、每个redis节点里的数据必须为空,就是不能有任何数据。如果有数据会报错:

 

2、ruby2.2.2以上版本已经安装好。ruby安装参考: https://www.cnblogs.com/PatrickLiu/p/8454579.html  (redis requires ruby version 2.2.2的解决方案)确保能执行成功:gem install redis

3、启动每一个redis节点:2000、3000、4000、5000、6000、7000

cd /home/program/redis-cluster/bin

./redis-server ../2000/redis.conf     依次类推

启动集群:

cd /home/program/redis-cluster/bin

./redis-trib.rb create --replicas 1 192.168.10.140:2000 192.168.10.140:3000 192.168.10.140:4000 192.168.10.140:5000 192.168.10.140:6000 192.168.10.140:7000

解释:./redis-trib.rb 是集群启动命令, --replicas是指定后面紧跟着的这个数字1,代表着每个master有几个slave,我这里是6个节点,三主三从,所以每一个master有一个slave,所以数字是1。 1后面的每个IP和端口都是集群里的节点。

验证环节:

集群设置值和取值验证:

集群模式启动报错之一解决方案:

[root@ bin]# ./redis-trib.rb create --replicas  192.168.10.140: 192.168.10.140: 192.168.10.140: 192.168.10.140: 192.168.10.140: 192.168.10.140:
>>> Creating cluster
[ERR] Node 192.168.10.140: is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database .
[root@ bin]# ./redis-cli -c -p
127.0.0.1:> keys *
) "gg"
) "abc"
127.0.0.1:> del gg
(error) CLUSTERDOWN The cluster is down

简单粗暴的解决方案:

./redis-cli -h 127.0.0.1 -p 2000 shutdown 温柔的解决方案:

rm -rf /home/program/redis-cluster/bin/dump.rdb         然后删除dump文件

删除找到的所有pid文件,然后连集群文件一起删掉:

[root@192 2000]# rm -rf /home/program/redis-4.0.13/nodes-2000.conf
[root@192 2000]# rm -rf /home/program/redis-4.0.13/nodes-3000.conf
[root@192 2000]# rm -rf /home/program/redis-4.0.13/nodes-4000.conf
[root@192 2000]# rm -rf /home/program/redis-4.0.13/nodes-5000.conf
[root@192 2000]# rm -rf /home/program/redis-4.0.13/nodes-6000.conf
[root@192 2000]# rm -rf /home/program/redis-4.0.13/nodes-7000.conf

redis4.0.13主从、哨兵、集群3种模式的 Server端搭建、启动、验证的更多相关文章

  1. Redis主从&哨兵集群搭建

    主从集群 在搭建主从集群前,我们先把Redis安装起来: #解压Redis压缩包 [root@master lf]# tar -zxvf redis-6.2.1.tar.gz -- #安装gcc [r ...

  2. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  3. 【Redis学习专题】- Redis主从+哨兵集群部署

    集群版本: redis-4.0.14 集群节点: 节点角色 IP redis-master 10.100.8.21 redis-slave1 10.100.8.22 redis-slave2 10.1 ...

  4. 三千字介绍Redis主从+哨兵+集群

    一.Redis持久化策略 1.RDB 每隔几分钟或者一段时间会将redis内存中的数据全量的写入到一个文件中去. 优点: 因为他是每隔一段时间的全量备份,代表了每个时间段的数据.所以适合做冷备份. R ...

  5. Redis(1.11)Redis4.0.11 cluster 分布式集群搭建

    概念与了解:Redis(1.7)Redis高可用架构(理论篇) [0]试验环境 结构图如下: (这里试验没有那么多机器,就用3台机器搭建试验) redis1是redis集群的一个节点A,上面运行了两个 ...

  6. Redis高可用-主从,哨兵,集群

    主从复制 Master-Slave主从概念 同时运行多个redis服务端,其中一个作为主(master),其他的一个或多个作为从(slave),主从之间通过网络进行通讯,slave通过复制master ...

  7. CentOS7.X安装Redis-4.0.8以及Redis集群搭建

    安装redis 安装前的准备 yum install \ vim \ wget \ make \ gcc \ gcc-c++ \ automake \ autoconf \ -y \ 下载解压并安装 ...

  8. Windows系统搭建Redis集群三种模式(零坑、最新版)

    目录 主从复制 修改配置文件 启动各节点 验证 哨兵模式 修改配置文件 启动实例 验证 集群模式 修改配置文件 启动实例 验证 主从复制 新建以下三个目录,用来部署一主二从 redis 的安装在另外一 ...

  9. Spring Boot集成Redis集群(Cluster模式)

    目录 集成jedis 引入依赖 配置绑定 注册 获取redis客户端 使用 验证 集成spring-data-redis 引入依赖 配置绑定 注册 获取redis客户端 使用 验证 异常处理 同样的, ...

随机推荐

  1. CSS3 正方体

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. 模块四-shutil模块

    shutil模块 高级的文件处理模块 主要是文件的处理,移动,压缩和解压缩 shutil模块的使用方法: shutil.copyfile()#拷贝文件 shutil.copy()#拷贝文件和权限 sh ...

  3. Verilog中的reg一定会被综合成寄存器么

    对应于实际的数字电路中,如果该程序块描述的是时序逻辑,则该寄存器变量对应为寄存器:如果该程序块描述的是组合逻辑,该寄存器变量对应为硬件逻辑:如果该程序块描述的是不完全组合逻辑,那么该寄存器变量也可以对 ...

  4. css缩放的坑

    transform:scale()缩放后会往中间聚集.transform-origin: top left可以让他看上去是沿着左上角缩放. .zoom { transform: scale(.8); ...

  5. Redis的主从复制(十一)

    1>什么是主从复制 持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后(在使用aof和rdb方式时,如果redis重启,则数据从aof文件加载)会将硬盘上持久化的数据恢复 ...

  6. Beta冲刺第二周王者荣耀交流协会第六次会议

    1.立会照片 成员:王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:任思佳 2.时间跨度: 2017年11月22日 12:00 — 12:20,总计20分钟. 3.地点: 一食 ...

  7. 【Coucurrency-CountDownLatch】-20161203-0002

    简介 java异步任务相关的工具.主要用在某些线程需要等到其他线程完成某些操作后才能执行的场景. 等待线程需要显示的调用wait方法,表示线程当前挂起,需要等到countdownLatch到0才执行. ...

  8. [转]大白话讲解Promise(一)

    http://www.cnblogs.com/lvdabao/p/es6-promise-1.html 去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正 ...

  9. s21day16 python笔记

    s21day16 python笔记 一.模块 1.1 模块的定义 模块的定义 可以吧一个py文件或一个文件夹(包)当作一个模块,以便于以后其他py文件的调用 包的定义(python2与python3的 ...

  10. postman导入csv文件,批量运行

    1.设置csv文件,第一行必须标明变量名 2.postman参数化设置 3.批量 run即可