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节点的配置文件,其他节点的一样,把端口及相应路径替换即可

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、至此,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 &
另一台机器也同样加入

5、创建集群

/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

6、检测集群创建情况

/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:7005
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 17f7a7b9c77acf32f6669d479ec338098288361c 10.10.10.33:7001
   slots: (0 slots) slave
   replicates f8058b5b3f6a4ad3e6d0cb301b23ce5695b92e78
S: fc0d5eb3287973d5e22fba998cfdb86aff6fe0a7 10.10.10.33:7002
   slots: (0 slots) slave
   replicates 67f56970400414a138c74c5229d4f1c20583143a
M: f8058b5b3f6a4ad3e6d0cb301b23ce5695b92e78 10.10.10.34:7003
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 87bb6000fe034800237adb6873a6fd9d39a60f49 10.10.10.33:7000
   slots: (0 slots) slave
   replicates fe5aaa53d084e6fef971851830010d9d29651bfe
M: 67f56970400414a138c74c5229d4f1c20583143a 10.10.10.34:7004
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

二、使用集群过程中出现的问题,遇到的坑

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 的坑就这么多,以后有发现在补充!

时间: 2024-11-12 18:05:36

redis cluster 安装配置的相关文章

Redis 的安装配置介绍

redis 是一个高性能的key-value数据库. redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用.它提供了Python,Ruby,Erlang,PHP客户端,使用很方便.问题是这个项目还很新,可能还不足够稳定,而且没有在实际的一些大型系统应用的实例.此外,缺乏mc中批量get也是比较大的问题,始终批量获取跟多次获取的网络开销是不一样的. 性能测试结果: SET操作每秒钟 110000 次,GET操作每秒钟 81

浅谈Redis及其安装配置

一.Redis的介绍 二.Redis的安装配置 三.Redis的配置文件说明 四.Redis的简单操作 简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持 数据模型: 作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系.但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:    L

多节点 安装redis cluster安装部署-4.0.1

环境 节点数量 IP:172.17.7.11   CPU :12 核  MEM:96G   启动服务数量:6   使用端口:7001~12IP:172.17.7.25   CPU :12 核  MEM:96G   启动服务数量:6   使用端口:7001~12IP:172.17.7.26   CPU :12 核  MEM:96G   启动服务数量:6   使用端口:7001~12 kernel uname -aLinux jp33e503-7-11.ptfuture.com 3.10.0-514

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

最近针对中铁一局项目,跟事业部讨论之后需要我们的KF平台能够接入一些开源的数据库,于是这两天研究了一下Redis的原理. 1. Redis的数据存储原理及简述 1.1Redis简述 Redis是一个基于内存且支持持久化的key-value的NoSQL数据库,其中每个key和value都是使用对象表示的,具有以以下特征:多样数据类型.持久化.主从同步.它支持存储的value类型包括string(字符串).list(链表).hash(哈希).set(集合)和zset(有序集合).这些数据类型都支持p

Linux下Redis的安装配置

环境: centos7  PHP7 1.切到准备安装的目录 cd /usr/local 2.下载Redis wget http://download.redis.io/redis-stable.tar.gz 3.解压 tar -zxf redis-stable.tar.gz 4.编译 make 5. 第5行 after 1000 改为 after 10000 vi tests/integration/replication-psync.tcl 6.进入src目录 cd src 7.编译检查 ma

Redis数据库安装配置使用

Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础

ubuntu环境下redis的安装配置

1. 简要介绍 dis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都 支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排 序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周

Redis的安装配置和启动

Redis安装和配置.启动.关闭 一.Redis的安装 在Linux上安装软件有两种方式: 通过各个操作系统的软件管理软件进行安装,例如centos的yum ,debian的apt 源码方式安装. 第一种方式由于redis更新比较快,而这些管理工具不一定能更新到最新版本,所以本博客介绍第二种方式. Redis源码安装只需要六个步骤: 1.下载Redis指定版本的源码压缩包到本地目录(去https://redis.io找相关版本.) 2.解压缩Redis源码包. 3.建立Redis目录的软连接.(

redis yum安装配置 redis主从

1.安装yum install epel-release.noarch -yyum install redis -y 2.配置主从主:vim /etc/redis.conf #修改配置文件bind 10.1.1.111 #修改监听IPrequirepass 233233 #添加密码 从:vim /etc/redis.conf #修改配置文件bind 10.1.1.112 #修改监听IPslaveof 10.1.1.111 6379 #指定主的ip和端口masterauth 233233 # 指定