redis安装--集群
redis在3.0之后开始支持集群,实际生产中一般也是会部署集群了
redis官方推出了一个叫redis-trib.rb的redis集群工具(存放在源码文件的src目录下);由于redis-trib.rb是基于ruby编写的,所以系统环境需要安装ruby环境
[root@Node1 redis-3.2.8]# cd src/
[root@Node1 src]# ls
adlist.c aof.o config.o dump.rdb latency.c multi.c quicklist.h redis-check-aof.o replication.o server.o sparkline.o util.c
adlist.h asciilogo.h crc16.c endianconv.c latency.h multi.o quicklist.o redis-check-rdb rio.c setproctitle.c syncio.c util.h
adlist.o bio.c crc16.o endianconv.h latency.o networking.c rand.c redis-check-rdb.c rio.h setproctitle.o syncio.o util.o
ae.c bio.h crc64.c endianconv.o lzf_c.c networking.o rand.h redis-check-rdb.o rio.o sha1.c testhelp.h valgrind.sup
ae_epoll.c bio.o crc64.h fmacros.h lzf_c.o notify.c rand.o redis-cli scripting.c sha1.h t_hash.c version.h
ae_evport.c bitops.c crc64.o geo.c lzf_d.c notify.o rdb.c redis-cli.c scripting.o sha1.o t_hash.o ziplist.c
ae.h bitops.o db.c geo.h lzf_d.o object.c rdb.h redis-cli.o sdsalloc.h slowlog.c t_list.c ziplist.h
ae_kqueue.c blocked.c db.o geo.o lzf.h object.o rdb.o redis-sentinel sds.c slowlog.h t_list.o ziplist.o
ae.o blocked.o debug.c help.h lzfP.h pqsort.c redisassert.h redis-server sds.h slowlog.o t_set.c zipmap.c
ae_select.c cluster.c debugmacro.h hyperloglog.c Makefile pqsort.h redis-benchmark redis-trib.rb sds.o solarisfixes.h t_set.o zipmap.h
anet.c cluster.h debug.o hyperloglog.o Makefile.dep pqsort.o redis-benchmark.c release.c sentinel.c sort.c t_string.c zipmap.o
anet.h cluster.o dict.c intset.c memtest.c pubsub.c redis-benchmark.o release.h sentinel.o sort.o t_string.o zmalloc.c
anet.o config.c dict.h intset.h memtest.o pubsub.o redis-check-aof release.o server.c sparkline.c t_zset.c zmalloc.h
aof.c config.h dict.o intset.o mkreleasehdr.sh quicklist.c redis-check-aof.c replication.c server.h sparkline.h t_zset.o zmalloc.o
还是以redis-3.2.8为例来部署集群
环境准备:
[root@Node1 src]# yum -y install ruby rubygems
[root@Node1 src]# wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
[root@Node1 src]# gem install -l ./redis-3.2.1.gem
redis-3.2.1.gem是redis-trib.rb的运行需要的ruby包,这个包和redis版本不是非得匹配,只要支持就行。
受限于机器数量,我搭建一个伪集群,在一套系统上搭建三主三从
[root@Node1 app]# mkdir -p /app/redis-cluster/{7001,7002,7003,7004,7005,7006} #创建目录
## 拷贝文件
[root@Node1 src]# cp redis-cli redis-server /app/redis-cluster/{7001,7002,7003,7004,7005,7006}
[root@Node1 redis-3.2.8]# cp redis.conf /app/redis-cluster/{7001,7002,7003,7004,7005,7006}
[root@Node1 redis-3.2.8]# cd ../redis-cluster/7001/
[root@Node1 7001]# vim redis.conf #编辑配置文件
port 7001
daemonize yes
pidfile /app/redis-cluster/7001/redis_7001.pid
appendonly yes
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
将编辑好的redis.conf文件拷贝到另外几个目录下去,然后修改其中的端口号即可
[root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7002/
[root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7003/
[root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7004/
[root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7005/
[root@Node1 redis-3.2.8]# cp redis.conf ../redis-cluster/7006/
修改完成后就可以启动这六个redis了
[root@Node1 redis-cluster]# ./redis-server 7001/redis.conf
[root@Node1 redis-cluster]# ./redis-server 7002/redis.conf
[root@Node1 redis-cluster]# ./redis-server 7003/redis.conf
[root@Node1 redis-cluster]# ./redis-server 7004/redis.conf
[root@Node1 redis-cluster]# ./redis-server 7005/redis.conf
[root@Node1 redis-cluster]# ./redis-server 7006/redis.conf
[root@Node1 redis-cluster]# ps -ef|grep redis
root 5205 1 0 23:48 ? 00:00:00 ./redis-server 172.16.9.10:7001 [cluster]
root 5209 1 0 23:48 ? 00:00:00 ./redis-server 172.16.9.10:7002 [cluster]
root 5213 1 0 23:49 ? 00:00:00 ./redis-server 172.16.9.10:7003 [cluster]
root 5217 1 0 23:49 ? 00:00:00 ./redis-server 172.16.9.10:7004 [cluster]
root 5221 1 0 23:49 ? 00:00:00 ./redis-server 172.16.9.10:7005 [cluster]
root 5225 1 0 23:49 ? 00:00:00 ./redis-server 172.16.9.10:7006 [cluster]
root 5230 1987 0 23:49 pts/0 00:00:00 grep --color=auto redis
在没有ruby环境的话,安装到此还是没问题的,但是现在的redis集群是不能正常使用的,因此后续必须要有ruby环境,我前面已经安装过了,所以先我就直接创建集群
[root@Node1 redis-cluster]# ./redis-trib.rb create --replicas 1 172.16.9.10:7001 172.16.9.10:7002 172.16.9.10:7003 172.16.9.10:7004 172.16.9.10:7005 172.16.9.10:7006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
172.16.9.10:7001
172.16.9.10:7002
172.16.9.10:7003
Adding replica 172.16.9.10:7004 to 172.16.9.10:7001
Adding replica 172.16.9.10:7005 to 172.16.9.10:7002
Adding replica 172.16.9.10:7006 to 172.16.9.10:7003
M: 70685e4e7bc6e0f4f80536e47a4fba653f3a5a0a 172.16.9.10:7001
slots:0-5460 (5461 slots) master
M: c718f6a2593c9f9383ede404f5879be365b48b05 172.16.9.10:7002
slots:5461-10922 (5462 slots) master
M: 6d5d66f350a5e85b0daf559b18a2f27ac50b96a5 172.16.9.10:7003
slots:10923-16383 (5461 slots) master
S: 03ea78465e980d40fe6eef10fb767bc4a25f00d7 172.16.9.10:7004
replicates 70685e4e7bc6e0f4f80536e47a4fba653f3a5a0a
S: f97391d5cfa351229963a91fd7800182c4a39961 172.16.9.10:7005
replicates c718f6a2593c9f9383ede404f5879be365b48b05
S: a8750aec28fad2abdefbe943c507547c690f2534 172.16.9.10:7006
replicates 6d5d66f350a5e85b0daf559b18a2f27ac50b96a5
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join......
>>> Performing Cluster Check (using node 172.16.9.10:7001)
M: 70685e4e7bc6e0f4f80536e47a4fba653f3a5a0a 172.16.9.10:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: c718f6a2593c9f9383ede404f5879be365b48b05 172.16.9.10:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 03ea78465e980d40fe6eef10fb767bc4a25f00d7 172.16.9.10:7004
slots: (0 slots) slave
replicates 70685e4e7bc6e0f4f80536e47a4fba653f3a5a0a
S: f97391d5cfa351229963a91fd7800182c4a39961 172.16.9.10:7005
slots: (0 slots) slave
replicates c718f6a2593c9f9383ede404f5879be365b48b05
M: 6d5d66f350a5e85b0daf559b18a2f27ac50b96a5 172.16.9.10:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: a8750aec28fad2abdefbe943c507547c690f2534 172.16.9.10:7006
slots: (0 slots) slave
replicates 6d5d66f350a5e85b0daf559b18a2f27ac50b96a5
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
集群创建完了,测试一下
[root@Node1 redis-cluster]# ./redis-cli -c -h 172.16.9.10 -p 7006 #注意必须要有-c
172.16.9.10:7006> keys *
(empty list or set)
172.16.9.10:7006> set name abc
-> Redirected to slot [5798] located at 172.16.9.10:7002
OK
172.16.9.10:7002>
redis安装--集群的更多相关文章
- redis安装集群的2种方式
redis主从只是数据的备份,当主宕机后不会自动切换从为主,需要手动切换从为主. 哨兵就可以自动切换从为主, 当主数据库遇到异常中断服务后,开发者可以通过手动的方式选择一个从数据库来升格为主数据库,以 ...
- redis 安装 集群 主从 哨兵 docker
安装redis 官方文档 docker run -d --net host -v /opt/myconfig/redis/redis.conf:/usr/local/etc/redis/redis.c ...
- docker1.12 安装redis第三方集群方案 codis
docker1.12 安装redis第三方集群方案 codis
- CentOS7 安装Redis Cluster集群
上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...
- Centos6 安装 Redis 和集群配置
Redis安装 先确认gcc和tcl已经安装 sudo yum install gcc-c++ sudo yum install tcl 解压, 编译和安装 .tar.gz /usr/src/ cd ...
- Redis的集群安装以及rehash重新迁移教程指南
1. Redis的cluster集群 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生存的看家本领,增加集群 ...
- Redis Sentinel 集群安装 step by step
一. 准备材料 服务器 IP address 操作系统 位数 Redis 版本 CNT06CAH05 192.168.3.47 CentOS 6.5 x64 Redis-3.2.6 sentine ...
- Redis真集群安装
Redis真集群安装 命令文档:http://redisdoc.com/index.html 下载:https://code.google.com/archive/p/redis/downloads ...
- redis cluster 集群 安装 配置 详解
redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...
随机推荐
- VS2013/VS2015/VS2017通过oschina托管代码
1.到http://git.oschina.net注册账号,创建项目,这一步不做详细描述,创建后效果如图 2.打开VS创建项目,为了测试,创建一个空白解决方案 3.把解决方案添加到源代码管理(这一步仅 ...
- echarts地图散点高亮弹框制作
效果图如下: 实现大致思路: 引入echarts最新版本,还有china.json,以及地级市坐标,(因为产品需求中不考虑省份,只考虑各个地级市),echarts官网已经不让下载地图了,网上很多地级市 ...
- nf_conntrack
How to Fix Nf_conntrack Table Full Dropping Packet Linux CentOS PacketLoss 2 minutes to read (234 w ...
- Mac + PyCharm 安装 Opencv3 + python2.7
本文地址:http://www.cnblogs.com/QingHuan/p/7354074.html 转载请注明本文地址,方便读者查看本文更新,谢谢! 今天要在Mac上安装OpenCV,过程非常曲折 ...
- 算法笔记1 - 编辑距离及其动态规划算法(Java代码)
转载请标注原链接:http://www.cnblogs.com/xczyd/p/3808035.html 编辑距离概念描述 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个 ...
- https原理及其中所包含的对称加密、非对称加密、数字证书、数字签名
声明:本文章已授权公众号Hollis转载,如需转载请标明转载自https://www.cnblogs.com/wutianqi/p/10654245.html(安静的boy) 一.为什么要使用http ...
- SQL 入门了解
SQL 随着应用程序的功能越来越复杂,数据量越来越大,如何管理这些数据就成了大问题: 读写文件并解析出数据需要大量重复代码: 从成千上万的数据中快速查询出指定数据需要复杂的逻辑. 如果每个应用程序都各 ...
- glog学习(一):glog的编译及demo
windows平台: 1.下载glog代码.下载地址:https://github.com/google/glog 2.使用cmake工具,获得对应的工程文件sln. 3.打开sln文件,生成对应的l ...
- HTTP进阶学习笔记
代理 HTTP的代理服务器既是Web服务器,又是Web客户端.使用代理可以"接触"到所有流过的HTTP流量,代理可以对其进行监视和修改.常见的就是对儿童过滤一些"成人&q ...
- python logging配置时间或大小轮转
python中的很多模块是非常牛X的,之前提到过logging模块(其功能类似于java下的Log4j ),由于最近一个涉及网络排障的脚本需要日志输出,这里就使用了python的logging模块去实 ...