redis cluster 安装配置
一、redis集群安装配置
1、下载redis源码包并下载
wget http://download.redis.io/releases/redis-3.0.7.tar.gz $ tar xzf redis-3.0.7.tar.gz $ cd redis-3.0.7 yum -y install gcc gcc-c++ libstdc++-devel #解决相关依赖关系$ make && make install 因我们安装redis 集群,需要安装ruby环境,不然会报错 sudo yum -y install ruby rubygems sudo gem install redis 加载配置文件并后台运行 /usr/local/redis-3.0.7/src/redis-server & $ src/redis-cli redis> set foo bar OK redis> get foo "bar"
2、因我是集群六个节点在两台机器上(部署在三台机器相对合理),所以创建相关的redis实例目录
mkdir -p /usr/local/redis-3.0.7/redis-cluster/700{0..2} mkdir -p /opt/redis/700{0..2} #存放redis的log以及数据文件 在另外一台机器上执行 mkdir -p /usr/local/redis-3.0.7/redis-cluster/700{3..5} mkdir -p /opt/redis/700{3..5} #存放redis的log以及数据文件 同时对以上redis目录进行授权 sudo chown -R sysadmin:sysadmin /usr/local/redis-3.0.7/ sudo chown -R sysadmin:sysadmin /opt/redis/
3、配置集群的配置文件,以下为7000节点的配置文件:
vim /usr/local/redis-3.0.7/redis-cluster/7000/7000.conf daemonize yes pidfile /opt/redis/redis_7000.pid port 7000 tcp-backlog 511 bind 10.10.10.33 timeout 0 tcp-keepalive 0 loglevel notice logfile "/opt/redis/7000/7000redis.log" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /opt/redis/7000 slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 appendonly yes appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 cluster-enabled yes #cluster-enabled no cluster-config-file /usr/local/redis-3.0.7/redis-cluster/7000/nodes-7000.conf cluster-node-timeout 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes 注:其他节点的一样,把端口及相应路径替换即可
4、创建集群
/usr/local/redis-3.0.7/src/redis-trib.rb create --replicas 1 10.10.10.33:7000 10.10.10.33:7001 10.10.10.33:7002 10.10.10.34:7003 10.10.10.34:7004 10.10.10.34:7005
5、检测集群创建情况
/usr/local/redis-3.0.7/src/redis-trib.rb check 10.10.10.34:7005 >>> Performing Cluster Check (using node 10.10.10.34:7005) M: fe5aaa53d084e6fef971851830010d9d29651bfe 10.10.10.34:7005slots:5461-10922 (5462 slots) master1 additional replica(s) S: 17f7a7b9c77acf32f6669d479ec338098288361c 10.10.10.33:7001slots: (0 slots) slavereplicates f8058b5b3f6a4ad3e6d0cb301b23ce5695b92e78 S: fc0d5eb3287973d5e22fba998cfdb86aff6fe0a7 10.10.10.33:7002slots: (0 slots) slavereplicates 67f56970400414a138c74c5229d4f1c20583143a M: f8058b5b3f6a4ad3e6d0cb301b23ce5695b92e78 10.10.10.34:7003slots:0-5460 (5461 slots) master1 additional replica(s) S: 87bb6000fe034800237adb6873a6fd9d39a60f49 10.10.10.33:7000slots: (0 slots) slavereplicates fe5aaa53d084e6fef971851830010d9d29651bfe M: 67f56970400414a138c74c5229d4f1c20583143a 10.10.10.34:7004slots:10923-16383 (5461 slots) master1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
6、至此,redis cluster创建完毕,讲redis加入开机启动
/usr/local/redis-3.0.7/src/redis-server /usr/local/redis-3.0.5/redis-cluster/7000/7000.conf & /usr/local/redis-3.0.7/src/redis-server /usr/local/redis-3.0.5/redis-cluster/7001/7001.conf & /usr/local/redis-3.0.7/src/redis-server /usr/local/redis-3.0.5/redis-cluster/7002/7002.conf & 注:另一台机器也同样加入
二、使用集群过程中出现的问题,遇到的坑
1、设计的时候最好是使用三台机器,两台机器的架构坑比较多,比如我用的是windowns Azure某天因windowns Azure出现故障导致其中一天机器自动重启,因此架构总共才两台服务器,整个集群就出现故障了,会造成数据的丢失,并且机器起来后导致那台机器上的一个节点无论如何都不能自动加入到集群里面,如果放到三台机器上集群自动创建的主从,即使一台机器重启造成的数据丢失也会小一点
2、集群开始创建的时候模拟其中一个节点故障后是否自动加入集群的时候,结果停掉一个节点后再起来怎么都不会自动加入到集群,排查一通,原因是因为cluster-config-file没指定绝对路径,最后通过指定决定路径解决:
cluster-config-file /usr/local/redis-3.0.7/redis-cluster/7003/nodes-7003.conf
3、某次微软云再次出现服务器无故重启,导致重启那台机器的节点不能自动加入到集群中,结果通过查阅官网手动添加,通过如下命令加入:
./redis-trib.rb add-node 10.10.10.33:7000 10.10.10.33:7001
加入后过了一段时间发现程序里面取数据的时候有数据丢失,并且check集群状态的时候有原来有序的三主三从变成了四主两从,因为后来手动加入造成了数据槽的分配发生不均衡变化,造成了数据的丢失,避免此坑的方法:
./redis-trib.rb add-node --slave 10.10.10.34:7005 10.10.10.33:7000 #指定加入节点的状态(slave) ./redis-trib.rb fix 10.10.10.34:7005 #加入成功后修复一下 ./redis-trib.rb reshard 10.10.10.33:7000 #通过reshard重新分配一下数据槽
4、如果第三步忘记做了,那就悲催了,就要通过重新创建集群了,因重新创建集群的时候必须保证redis的数据是空的,不是空的会报错,这对于已经使用一段时间的redis就坑大了,目前发现的redis cluster 的坑就这么多,以后有发现在补充!
转载于:https://blog.51cto.com/676021/1833509
redis cluster 安装配置相关推荐
- 浅谈Redis及其安装配置
一.Redis的介绍 二.Redis的安装配置 三.Redis的配置文件说明 四.Redis的简单操作 简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型. ...
- linux redis数据库安装配置,Linux系统中redis的安装配置步骤
Linux系统中redis的安装配置步骤 发布时间:2020-06-23 10:13:36 来源:亿速云 阅读:87 作者:Leah 这篇文章将为大家详细讲解有关Linux系统中redis的安装配置步 ...
- ubuntu环境下redis的安装配置
ubuntu环境下redis的安装配置 1. 简要介绍 dis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表 ...
- redis cli 删除key 模糊_Web基础配置篇(六): Redis的安装配置及基本操作
Web基础配置篇(六): Redis的安装配置及基本操作 一.概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的A ...
- Redis的安装配置及简单集群部署
最近针对中铁一局项目,跟事业部讨论之后需要我们的KF平台能够接入一些开源的数据库,于是这两天研究了一下Redis的原理. 1. Redis的数据存储原理及简述 1.1Redis简述 Redis是一个基 ...
- mysql cluster安装配置_mysqlcluster安装与配置_MySQL
bitsCN.com 在centos6.0上安装并配置mysql cluster 我在这里用的是mysql cluster 7.1.15a的rpm包 我用了五台虚拟机: 一个管理节点.两个sql节点. ...
- linux centos7安装redis,CentOS7安装配置 Redis的方法步骤
导语 Redis 不用多介绍了,下面开始安装配置吧. 安装 下载源码 wget http://download.redis.io/releases/redis-4.0.12.tar.gz: 解压并进入 ...
- redis linux安装配置,linux下安装配置单点redis
so easy. step1. 下载资源 redis-4.0.10.tar.gz step2. 解压到 /usr/local/redis下面 tar -zxvf redis-4.0.10.tar.gz ...
- mysql cluster安装配置_mysql cluster (mysql 集群)安装配置方案
一.准备 1.准备服务器 计划建立有5个节点的MySQL CLuster体系,需要用到5台服务器,但是我们做实验时没有这么多机器,可以只用2台,我就是一台本机,一台虚拟机搭建了有5个节点的MySQL ...
最新文章
- C#WindowsForm之创建窗体
- numpy笔记整理 multivariate_normal(多元正态分布采样)
- CentOS 初体验二: 切换语言,连接互联网
- 条款七 为多态基类声明virtual析构函数
- 【IDEA】推荐一些好用的IDEA插件
- 剑指offer 合并2个排序的链表
- 不愿意和别人打交道_最不愿与陌生人打交道的星座
- 10个经典的C语言面试基础算法及代码
- 科一主观题刷题 0308
- 【NOIP2015】D2-T1跳石头,二分答案
- linux 一句话备忘
- if shell 条件语句简写_shell中的if语句
- Windows服务器配置fileZilla Server
- 爬取外网数据(twitter、facebook)-易数云可视化爬虫软件
- z11 max android 6.0,努比亚Z11Max 安卓6.0 魅族Flyme6刷机包 最新6.7.12.29R紫火版 20180108更新...
- Tangent Convolutions 切面卷积(切线卷积)
- Rhombus 使用 Wolfspeed SiC 加快电动汽车充电速度
- 如何让青少年远离“网络成瘾”?
- 将3060独显笔记本升级为高级AI工作站
- 计算机网络技术的发展趋势,计算机网络技术发展趋势(原稿)
热门文章
- 使用ASP.NET操作IIS7中使用应用程序
- Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
- 好多Javascript日期选择器呀-4
- 以金山界面库(openkui)为例思考和分析界面库的设计和实现——问题
- Python3中with用法
- php上传图片 $__files没有信息_Python接口测试文件上传实例解析
- unity2018关联不到vs_律道|蓝月传奇VS烈焰武尊:角色扮演类游戏独创性如何认定?...
- mybatis 一对多_MyBatis面试题集合,90%会遇到这些问题
- iframe怎么用_怎么样减少无效URL的爬行和索引
- 所有表单对象_Laravel 表单方法伪造与 CSRF 攻击防护