本文使用的是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. IPC 简说

    IPC(inter-process communication)进程间通信 多进程分为两种情况 1. 同一个应用,使用android:process属性启动的四大组件 2. 多应用 通过android ...

  2. HashMap(1.8)理解

    先放一个流程图了解一下HashMap的put()操作: 1.HashMap底层采用数组.链表.红黑树来实现. 2.表的长度一定是2^n(便于快速计算hash值和扩展),若初始化时指定容量不满足,则Ha ...

  3. unzip解压war包并覆盖

    unzip -o blog.war -d BLOG 参数: -o 不进行询问直接覆盖 -d 压缩文件解压到BLOG文件夹下 详细使用语法: unzip [-Z] [-opts[modifiers]] ...

  4. Linux下MySQL在知道密码的情况下修改密码

    1.在知道原密码的情况下,进入MySQL: mysql -u root -p 2.进入 mysql数据库,然后通过语句修改密码: 我的MySQL版本是:mysql  Ver 14.14 Distrib ...

  5. DAX和Power BI中的参考日期表

    本文使用Power BI模板描述DAX中的引用Date表,可以在Analysis Services模型中使用相同的技术.在Dax Date Template页面下载最新版本的模板. 为什么引用Date ...

  6. 发布spring cloud + vue项目

    服务器部署结构 1.服务器访问直接访问NGINX 2.静态资源访问, nginx读取本地文件夹 3.API接口路由, nginx把以api开头的访问都路由到业务逻辑服务器. nginx配置 clien ...

  7. exp迁移测试库10.2.0.5

    目的: 将一套10.2.0.5的UP-UNIX系统的数据,迁移到一台Windows环境下. 迁移方案:由于不同的操作系统,为了方便迁移,只是测试,使用EXP/IMP方式. 迁移流程: 一.源端导出 1 ...

  8. docker中的oracle-11g-安装配置

    docker镜像:wnameless/oracle-xe-11g 启动镜像的命令: docker run -d -v /data/oracle_data:/data/oracle_data -p 11 ...

  9. ccf-炉石传说-201609-3

    大概是CCF 第三题比较简洁的一道题吧 尽量设计好一个数据结构: node t[2][10]: 存双方的英雄和随从 int    num[2]: 存隋朝的数量 用p来实现双方的切换,因为有统一 的接口 ...

  10. SQLI DUMB SERIES-16

    (1)无论怎么输入,都没有回显,但当输入 admin")#时,显示登录成功.若通过其他方法获取数据库的用户名,可通过这个方法登录成功. (2)获取其他信息可用考虑时间延迟注入.方法同15.