一、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 安装配置相关推荐

  1. 浅谈Redis及其安装配置

    一.Redis的介绍 二.Redis的安装配置 三.Redis的配置文件说明 四.Redis的简单操作 简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型. ...

  2. linux redis数据库安装配置,Linux系统中redis的安装配置步骤

    Linux系统中redis的安装配置步骤 发布时间:2020-06-23 10:13:36 来源:亿速云 阅读:87 作者:Leah 这篇文章将为大家详细讲解有关Linux系统中redis的安装配置步 ...

  3. ubuntu环境下redis的安装配置

    ubuntu环境下redis的安装配置 1. 简要介绍 dis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表 ...

  4. redis cli 删除key 模糊_Web基础配置篇(六): Redis的安装配置及基本操作

    Web基础配置篇(六): Redis的安装配置及基本操作 一.概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的A ...

  5. Redis的安装配置及简单集群部署

    最近针对中铁一局项目,跟事业部讨论之后需要我们的KF平台能够接入一些开源的数据库,于是这两天研究了一下Redis的原理. 1. Redis的数据存储原理及简述 1.1Redis简述 Redis是一个基 ...

  6. mysql cluster安装配置_mysqlcluster安装与配置_MySQL

    bitsCN.com 在centos6.0上安装并配置mysql cluster 我在这里用的是mysql cluster 7.1.15a的rpm包 我用了五台虚拟机: 一个管理节点.两个sql节点. ...

  7. linux centos7安装redis,CentOS7安装配置 Redis的方法步骤

    导语 Redis 不用多介绍了,下面开始安装配置吧. 安装 下载源码 wget http://download.redis.io/releases/redis-4.0.12.tar.gz: 解压并进入 ...

  8. 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 ...

  9. mysql cluster安装配置_mysql cluster (mysql 集群)安装配置方案

    一.准备 1.准备服务器 计划建立有5个节点的MySQL CLuster体系,需要用到5台服务器,但是我们做实验时没有这么多机器,可以只用2台,我就是一台本机,一台虚拟机搭建了有5个节点的MySQL ...

最新文章

  1. C#WindowsForm之创建窗体
  2. numpy笔记整理 multivariate_normal(多元正态分布采样)
  3. CentOS 初体验二: 切换语言,连接互联网
  4. 条款七 为多态基类声明virtual析构函数
  5. 【IDEA】推荐一些好用的IDEA插件
  6. 剑指offer 合并2个排序的链表
  7. 不愿意和别人打交道_最不愿与陌生人打交道的星座
  8. 10个经典的C语言面试基础算法及代码
  9. 科一主观题刷题 0308
  10. 【NOIP2015】D2-T1跳石头,二分答案
  11. linux 一句话备忘
  12. if shell 条件语句简写_shell中的if语句
  13. Windows服务器配置fileZilla Server
  14. 爬取外网数据(twitter、facebook)-易数云可视化爬虫软件
  15. z11 max android 6.0,努比亚Z11Max 安卓6.0 魅族Flyme6刷机包 最新6.7.12.29R紫火版 20180108更新...
  16. Tangent Convolutions 切面卷积(切线卷积)
  17. Rhombus 使用 Wolfspeed SiC 加快电动汽车充电速度
  18. 如何让青少年远离“网络成瘾”?
  19. 将3060独显笔记本升级为高级AI工作站
  20. 计算机网络技术的发展趋势,计算机网络技术发展趋势(原稿)

热门文章

  1. 使用ASP.NET操作IIS7中使用应用程序
  2. Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
  3. 好多Javascript日期选择器呀-4
  4. 以金山界面库(openkui)为例思考和分析界面库的设计和实现——问题
  5. Python3中with用法
  6. php上传图片 $__files没有信息_Python接口测试文件上传实例解析
  7. unity2018关联不到vs_律道|蓝月传奇VS烈焰武尊:角色扮演类游戏独创性如何认定?...
  8. mybatis 一对多_MyBatis面试题集合,90%会遇到这些问题
  9. iframe怎么用_怎么样减少无效URL的爬行和索引
  10. 所有表单对象_Laravel 表单方法伪造与 CSRF 攻击防护