redis 是一个高性能的 key-value 数据库。 redis 的出现,很大程度补偿了
memcached 这类 keyvalue 存储的不足,在部分场合可以对关系数据库起到很
好的补充作用。它提供了 Python,Ruby,Erlang,PHP 客户端,使用很方便。
Redis 的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上
(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个 append
only file(aof)里面(这称为“全持久化模式”)。

1.安装redis

以server2为例(server3也做)

[root@server2 ~]# tar zxf redis-4.0.8.tar.gz
[root@server2 ~]# yum install gcc -y
Make && make install
[root@server2 redis-4.0.8]# cd utils/
[root@server2 utils]# ./install_server.sh
[root@server2 utils]# vim /etc/redis/6379.conf bind 0.0.0.0
[root@server2 utils]# /etc/init.d/redis_6379 restart






/etc/redis/6379.conf内容:

2.Redis 主从同步

master(主):server3—->172.25.25.3
slave (从):server2—->172.25.25.2

master上:

[root@server3 utils]# redis-cli
127.0.0.1:6379> set name lin
OK
127.0.0.1:6379> get name
"lin"
127.0.0.1:6379> set user1 111
OK
127.0.0.1:6379> get user1
"111"


slave上

[root@server2 utils]# vim /etc/redis/6379.conf slaveof 172.25.25.3 6379
[root@server2 utils]# /etc/init.d/redis_6379 restart
[root@server2 utils]# redis-cli
127.0.0.1:6379> get name
"lin"
127.0.0.1:6379> get user1
"111"

/etc/redis/6379.conf内容


再测试:
master

[root@server3 utils]# redis-cli
127.0.0.1:6379> set name lll
OK


slave

127.0.0.1:6379> get name
"lll"

3.redis高可用

先在server1上按照第一步安装配redis,和server2的配置一样作为slave
再在master上配置:

[root@server3 redis-4.0.8]# cp sentinel.conf /etc/redis/
[root@server3 redis-4.0.8]# cd /etc/redis/
[root@server3 redis]# vim sentinel.conf



这里只写master的ip,两个slave和master的文件配置完全一样,也写master的ip

把文件传给slave(server1和server2)

[root@server3 redis]# scp sentinel.conf server2:/etc/redis/
[root@server3 redis]# scp sentinel.conf server1:/etc/redis/


监控命令:

[root@server3 redis]# redis-server /etc/redis/sentinel.conf --sentinel



再打开一个server3的shell

# 查看server3的信息
[root@server3 ~]# redis-cli
127.0.0.1:6379> info
.
.
.
# Replication
role:master    #本机为mastes
connected_slaves:2
slave0:ip=172.25.25.2,port=6379,state=online,offset=37996,lag=0
slave1:ip=172.25.25.1,port=6379,state=online,offset=38133,lag=0# 关闭master
127.0.0.1:6379> shutdown
not connected> 



# 查看监控监控,30秒后server1变为master,server3为shutdown状态
[root@server3 redis]# redis-server /etc/redis/sentinel.conf --sentinel
6954:X 11 Aug 17:19:35.692 # +switch-master mymaster 172.25.25.3 6379 172.25.25.1 6379
6954:X 11 Aug 17:19:35.693 * +slave slave 172.25.25.2:6379 172.25.25.2 6379 @ mymaster 172.25.25.1 6379
6954:X 11 Aug 17:19:35.693 * +slave slave 172.25.25.3:6379 172.25.25.3 6379 @ mymaster 172.25.25.1 6379
6954:X 11 Aug 17:20:05.739 # +sdown slave 172.25.25.3:6379 172.25.25.3 6379 @ mymaster 172.25.25.1 6379


开启server3的服务

[root@server3 ~]# /etc/init.d/redis_6379 start

# 监控,30秒后server3变为slave
[root@server3 redis]# redis-server /etc/redis/sentinel.conf --sentinel
6954:X 11 Aug 17:22:51.065 # -sdown slave 172.25.25.3:6379 172.25.25.3 6379 @ mymaster 172.25.25.1 6379


查看server3的配置文件最后一行自动添加了内容:

4.Redis 集群(无中心化)

# 建立目录
[root@server3 ~]# cd /usr/local/
[root@server3 local]# mkdir cluster
[root@server3 local]# cd cluster/
# 建立端口
[root@server3 cluster]# mkdir 7001
[root@server3 cluster]# mkdir 7002
[root@server3 cluster]# mkdir 7003
[root@server3 cluster]# mkdir 7004
[root@server3 cluster]# mkdir 7005
[root@server3 cluster]# mkdir 7006
[root@server3 cluster]# cd 7001/
# 编写配置文件
[root@server3 7001]# vim redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
[root@server3 7001]# cd /root/redis-4.0.8/src/
[root@server3 src]# cp redis-trib.rb /usr/local/bin/



安装部署ruby

[root@server3 bin]# yum install -y ruby
[root@server3 ~]# yum install ruby-2.2.3-1.el6.x86_64.rpm libyaml-0.1.3-4.el6_6.x86_64.rpm -y
[root@server3 ~]# gem install --local redis-4.0.1.gem




配置并启动

[root@server3 ~]# cd /usr/local/cluster/7001
[root@server3 7001]# vim redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /usr/local/cluster/7001/redis.pid
logfile /usr/local/cluster/7001/redis.log
[root@server3 7001]# redis-server redis.conf 



查看日志,根据信息修改

[root@server3 7001]# cat redis.log
[root@server3 7001]# echo 511 > /proc/sys/net/core/somaxconn
[root@server3 7001]# sysctl -w vm.overcommit_memory=1
[root@server3 7001]# vim /etc/sysctl.conf   #写入文件vm.overcommit_memory = 1
[root@server3 7001]# echo never > /sys/kernel/mm/transparent_hugepage/enabled 




给其他几个接口都做配置

# 把文件分别拷给其他目录
[root@server3 7001]# cp redis.conf ../7002
[root@server3 7001]# cp redis.conf ../7003
[root@server3 7001]# cp redis.conf ../7004
[root@server3 7001]# cp redis.conf ../7005
[root@server3 7001]# cp redis.conf ../7006# 将redis.conf文件中7001改为各自的目录名(7002,7003,7004...),并启动
[root@server3 7001]# cd ../7002
[root@server3 7002]# vim redis.conf
[root@server3 7002]# redis-server redis.conf
[root@server3 7002]# cd ../7003
[root@server3 7003]# vim redis.conf
[root@server3 7003]# redis-server redis.conf
[root@server3 7003]# cd ../7004
[root@server3 7004]# vim redis.conf
[root@server3 7004]# redis-server redis.conf
[root@server3 7004]# cd ../7005
[root@server3 7005]# vim redis.conf
[root@server3 7005]# redis-server redis.conf
[root@server3 7005]# cd ../7006
[root@server3 7006]# vim redis.conf
[root@server3 7006]# redis-server redis.conf 




建立集群

[root@server3 7006]# 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



测试

[root@server3 7006]# redis-cli -c -p 7001
127.0.0.1:7001> set name llj
-> Redirected to slot [5798] located at 127.0.0.1:7002  #数据写在了7002
OK
127.0.0.1:7002> get name
"llj"
127.0.0.1:7002>
[root@server3 7006]# redis-cli -c -p 7006
127.0.0.1:7006> get name
-> Redirected to slot [5798] located at 127.0.0.1:7002
"llj"


关闭7002

 [root@server3 7006]# ps ax
.
.
.1388 ?        Ssl    0:00 redis-server *:7001 [cluster]1408 ?        Ssl    0:00 redis-server *:7002 [cluster]1415 ?        Ssl    0:00 redis-server *:7003 [cluster]1421 ?        Ssl    0:00 redis-server *:7004 [cluster]1427 ?        Ssl    0:00 redis-server *:7005 [cluster]1433 ?        Ssl    0:00 redis-server *:7006 [cluster]1449 pts/0    R+     0:00 ps ax
[root@server3 7006]# kill 1388


查看

# 数据由7002的slave(7005)接替
[root@server3 7006]# redis-cli -c -p 7006
127.0.0.1:7006> get name
-> Redirected to slot [5798] located at 127.0.0.1:7005
"llj"
127.0.0.1:7005> 


开启7002(本宝宝之前不小心kill掉了7001,如果你们的7001没有kill掉的话不用开启,只需开启7002)

[root@server3 7006]# cd ../7001
[root@server3 7001]# redis-server redis.conf
[root@server3 7001]# cd ../7002
[root@server3 7002]# redis-server redis.conf
[root@server3 7002]# redis-trib.rb check 127.0.0.1:7006


emmm…在做的过程中遇到一些问题,这是恢复正常之后的master和slave状态

如果同时kill掉两个master,master数少于slave,将查询不到任何信息

# kill掉7005和7006
[root@server3 7006]# ps ax
.
.
.1427 ?        Ssl    0:01 redis-server *:7005 [cluster]1433 ?        Ssl    0:01 redis-server *:7006 [cluster]1460 ?        Ssl    0:00 redis-server *:7001 [cluster]1467 ?        Ssl    0:00 redis-server *:7002 [cluster]1493 ?        Ssl    0:01 redis-server *:7003 [cluster]1501 ?        Ssl    0:01 redis-server *:7004 [cluster]1511 pts/0    R+     0:00 ps ax
[root@server3 7004]# kill 1427 1433


查询

[root@server3 7002]# redis-trib.rb check 127.0.0.1:7006
[root@server3 7004]# redis-cli -c -p 7004
127.0.0.1:7004> get name
(error) CLUSTERDOWN The cluster is down  #查看失败


redis的主从同步及高可用集群相关推荐

  1. MHA-结合MySQL半同步复制高可用集群(Centos7)

    目录 一.理论概述 本案例部署思路 二.环境 三.部署 部署MHA 部署二进制包MySQL及部署主从复制 部署半同步复制 配置MHA MHA测试 部署lvs+keepalived(lvs1,lvs2) ...

  2. redis高可用集群

    一.redis集群方案比较 主从哨兵模式 redis3.0之前的版本实现集群一般采用的方案是借助哨兵sentinel工具来监控master节点的状态,如果master主节点异常,则会做主从切换,将一台 ...

  3. Redis深入理解五 :Redis主从架构、哨兵架构、高可用集群模式

    redis主从架构 redis主从架构搭建,配置从节点步骤: 复制一份redis.conf文件 将相关配置修改为如下值: port 6380 pidfile /var/run/redis_6380.p ...

  4. MQ问题集(kafka主从同步与高可用,MQ重复消费、幂等)

    1.kafka主从同步与高可用 https://1028826685.iteye.com/blog/2354570 http://developer.51cto.com/art/201808/5815 ...

  5. Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】

    ================================================= 人工智能教程.零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助! 点击查看高清无码教程 == ...

  6. Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群

    Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群 前言 建议 官方译文 什么是 Sentinel? Sentinel 优点 Redis 配置文件 maste ...

  7. Redis缓存高可用集群

    Redis缓存高可用集群 一.Redis集群方案比较 1.哨兵模式 2.高可用集群模式 二.Redis高可用集群搭建 1.在第一台服务器建立两个节点 2.第一个节点的redis.conf配置 3.启动 ...

  8. 部署Redis高可用集群

    目录 部署Redis高可用集群 Redis集群环境 拓扑结构 IP地址 环境准备 工作原理 创建Redis集群 部署管理主机 redis-trib.rb脚本 redis服务器开启集群功能 管理主机创建 ...

  9. redis 04:Redis高可用集群

    文章目录 一.Redis集群方案比较 二.Redis高可用集群搭建 三.Java操作redis集群 四.Redis集群原理分析 五.集群伸缩 5.1 集群扩展 5.1 缩容集群 六.总结 以下参考了图 ...

最新文章

  1. D1net阅闻:思科占全球交换路由器53%市场份额
  2. 微软亚洲研究院多媒体计算组招聘计算机视觉算法实习生
  3. Python的filter方法实现筛选功能
  4. .NET Core跨平台的奥秘[下篇]:全新的布局
  5. Centos7 Apache 2.4.18编译安装
  6. mysql查询报错: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by
  7. java 模块化基础
  8. C++11 Lambda表达汇总总结
  9. C#之反射又是什么东西
  10. configure/make的shared object参数
  11. eja智能压力变送器工作原理_EJA智能压力变送器
  12. CAM表含义及各层交换机介绍
  13. 【Matlab】函数uigetfile的使用
  14. Nature communications
  15. Anaconda 踩过的一些坑
  16. labview初级08---波形图、波形图表、XY图
  17. mysql 高可用方案
  18. (20210116已解决)Windows下的CTF加载程序是什么?
  19. 记录一次 CPU sy 过高的排查经历
  20. 【python】 turtle实现汉诺塔游戏动画过程

热门文章

  1. 微信PC端不显示头像和表情怎么解决
  2. oracle增加分区时报ora14036,增加分区表2009年的分区报ORA-14074错误
  3. 百度apistore第三方登陆使用说明
  4. Centos7安装HighGo DB V6企业版
  5. 名创优品通过上市聆讯:寻求双重主要上市 年营收91亿
  6. 微信对账单--每日定时任务获取昨日微信支付账单
  7. 输入192.168.1.1登陆页面打不开怎么办
  8. 计算机无法登陆账户 让注销,电脑开机出现登陆账户,点了以后就马上注销,怎么处理?...
  9. 正方教务系统php登陆,正方教务管理系统最新版无条件注入GetShell | wooyun-2015-0122523| WooYun.org...
  10. OV7725摄像头的彩色图像采集原理与液晶显示《一》