本文使用的是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. sql 双表或多表的连接查询 join

    使用 inner join,left join, right join.full join 对双表进行联合查询. 1.inner join.join:如果表中有至少一个匹配,则返回行. 2.left ...

  2. 实现鼠标悬停,div勾画div边框的动画

    鼠标悬浮,边框div边框的动画样式,效果图如下: 首先定义div及其样式: <style> .show { width:300px; height:200px; border:1px so ...

  3. Integer与String的知试点(java中常见面试题)

    1.==符号使用 Integer a = 1000,b=1000; Integer c = 100,d=100; System.out.println(a==b); System.out.printl ...

  4. 【消息中间件之RabbitMQ学习】-开篇-001

    写在前面的话 项目中因为要用到消息中间件,当初极力推荐RabbitMq.但因为种种原因,最终选型为java+mongodb自实现一套分布式的消.没有用RabbitMq工作过,实属遗憾.因为个人来说实在 ...

  5. 06_mysql先分页查询再排序

    数据库字段: SELECT * FROM (SELECT * FROM tb_item LIMIT 3,3) temp_table ORDER BY id DESC; 查询结果:

  6. C#自定义事件模拟风吹草摇摆

    这是一个自定义事件的例子.C#.WinForm.Visual Studio 2017.在HoverTreeForm中画一块草地,上面有许多草(模拟).HewenqiTianyi类模拟天气,会引发“风” ...

  7. hive从本地导入数据时出现「Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask」错误

    现象 通过load data local导入本地文件时报无法导入的错误 hive> load data local inpath '/home/hadoop/out/mid_test.txt' ...

  8. 推荐一个免费的在线IDE和终端

    墙裂推荐!支持众多语言,方便学习,测试,地址如下 https://www.tutorialspoint.com/codingground.htm

  9. rem 自适应适配方法

    rem是指相对于根元素(html)的字体大小的单位,它是一个相对单位,它是css3新增加的一个单位属性,我们现在有很多人用的都是px,但px是一个绝对单位,遇到分辨率不同的设备,做出的页面可能会乱,这 ...

  10. 腾讯广告联盟 Android SDK(广点通)demo的使用方式

    1. 下载示例文件. 2. 解压之后的目录: 3. 使用android studio,选择import project,导入如图所示文件夹: 4. 重点来了,由于官方demo的上传时间很久远(大概是上 ...