Redis入门到精通-Redis集群搭建
2019独角兽企业重金招聘Python工程师标准>>>
Redis集群搭建
在Redis3.x之前,提供了sentinel工具来监控各个Master的状态,如果Master异常,则会做主从切换,将slave作为Master。其配置也是稍微的复杂,并且各方面表现一般。
现在redis3.x已经支持集群的容错功能,并且非常简单。
参考文档
Redis 官方集群指南:http://redis.io/topics/cluster-tutorial Redis 官方集群规范:http://redis.io/topics/cluster-spec Redis 集群指南(中文翻译,紧供参考):http://redisdoc.com/topic/cluster-tutorial.html Redis 集群规范(中文翻译,紧供参考): http://redisdoc.com/topic/cluster-spec.html
1 集群规划
要让 Redis3.0 集群正常工作至少需要 3 个 Master 节点,要想实现高可用,每个 Master 节点要配备至少 1 个 Slave 节点。根据以上特点和要求,进行如下的集群实施规划:
使用 6 台服务器(物理机或虚拟机,这里我本机电脑只有8G内存,我采用文件系统隔离模拟6台服务器)部署 3 个 Master + 3 个 Slave;
主机名 | IP | 服务端口(默认6379) | 集群端口(服务端口+10000) | 主/从 |
---|---|---|---|---|
redis-01 | 10.0.31.144 | 7111 | 17111 | Master |
redis-02 | 10.0.31.144 | 7112 | 17112 | Master |
Redis-03 | 10.0.31.144 | 7113 | 17113 | Master |
redis-04 | 10.0.31.144 | 7114 | 17114 | Slave |
redis-05 | 10.0.31.144 | 7115 | 17115 | Slave |
redis-06 | 10.0.31.144 | 7116 | 17116 | Slave |
2 环境准备
IP:10.0.31.144
环境:CentOS 6.6
redis集群需要适应ruby命令
[root@localhost ~]yum install ruby [root@localhost ~]yum install rubygems [root@localhost ~]gem install redis //安装redis和ruby的接口 Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2 解决办法是 先安装rvm,再把ruby版本提升至2.3.3参考文档:http://blog.csdn.net/fengye_yulu/article/details/77628094解决国内gem不用能的问题 # gem sources -r https://rubygems.org/ # gem sources -a https://ruby.taobao.org/ # gem sources -l *** CURRENT SOURCES *** https://ruby.taobao.org
Redis版本:redis-3.X
用户:root
安装目录:/usr/local/redis-cluster:
[root@localhost ~]# mkdir /usr/local/redis-cluster [root@localhost ~]# cd /usr/local/redis-cluster/ [root@localhost redis-cluster]# mkdir 7111 [root@localhost redis-cluster]# mkdir 7112 [root@localhost redis-cluster]# mkdir 7113 [root@localhost redis-cluster]# mkdir 7114 [root@localhost redis-cluster]# mkdir 7115 [root@localhost redis-cluster]# mkdir 7116 [root@localhost redis-cluster]# pwd /usr/local/redis-cluster [root@localhost redis-cluster]# ll 总用量 24 drwxr-xr-x 2 root root 4096 10月 21 16:06 7111 drwxr-xr-x 2 root root 4096 10月 21 16:06 7112 drwxr-xr-x 2 root root 4096 10月 21 16:06 7113 drwxr-xr-x 2 root root 4096 10月 21 16:06 7114 drwxr-xr-x 2 root root 4096 10月 21 16:06 7115 drwxr-xr-x 2 root root 4096 10月 21 16:06 7116 [root@localhost redis-cluster]#
3 集群配置
(1)本案例中的单机部署伪集群
本机上已安装过单机版redis,把之前的//usr/local/src/redis3.2/scr/redis.conf分别copy到/usr/local/redis-cluster/711X文件夹下,并分别重命名为 redis-711X.conf,进行配置修改。
[root@localhost ~]# cp //usr/local/src/redis3.2/scr/redis.conf /usr/local/redis-cluster/7111/redis-7111.conf [root@localhost ~]# cp //usr/local/src/redis3.2/scr/redis.conf /usr/local/redis-cluster/7112/redis-7112.conf [root@localhost ~]# cp //usr/local/src/redis3.2/scr/redis.conf /usr/local/redis-cluster/7113/redis-7113.conf [root@localhost ~]# cp //usr/local/src/redis3.2/scr/redis.conf /usr/local/redis-cluster/7114/redis-7114.conf [root@localhost ~]# cp //usr/local/src/redis3.2/scr/redis.conf /usr/local/redis-cluster/7115/redis-7115.conf [root@localhost ~]# cp //usr/local/src/redis3.2/scr/redis.conf /usr/local/redis-cluster/7116/redis-7116.conf
配置集群的redis-7111X.conf
[root@localhost ~]# vim /usr/local/redis-cluster/711X/redis-711X.conf
配置参数:
配置选项 | 选项值 | 说明 |
---|---|---|
daemonize | yes | 是否作为守护进程运行 |
pidfile | /var/run/redis-711X.pid | 为后台运行的进程提供一个pid |
port | 711X | 监听端口,默认6379,集群通讯端口默认为此地址+10000 |
databases | 1 | 可用数据库,默认16,默认数据库存储在DB0中,无特殊需求,建议设置一个数据库 |
cluster-enable | yes | 打开redis集群 |
cluster-config-file | //usr/local/src/redis3.2/cluster/711X/nodes711X.conf | 集群配置文件(启动自动生成),不用人为干涉 |
cluster-migration-barrier | 1 | 数据迁移的副本临界数,这个参数表示的是,一个主节点在拥有多少个好的从节点的时候就要割让一个从节点出来给另一个没有任何从节点的主节点。 |
cluster-required-full-coverage | Yes | 如果一些kes space没有被集群中任何节点覆盖,集群将停止接收写入 |
appendonly | yes | 启用aof持久化方式 |
dir | /usr/local/redis-cluster/711X | 节点数据持久化存放目录(建议配置) |
cluster-node-timeout | 15000 | 节点互连超时时间(毫秒) |
bind | 当前机器IP | 绑定当前机器IP |
(2)如果准备的是6台虚拟机或物理机
在每一台机器上都执行以下步骤:(通单机版安装)
1.编译和安装所需要的包:
[root@localhost ~] # yum install gcc tcl
2.上传或下载redis稳定版3.x 到软件源码目录 /usr/local/src/
[root@localhost src]# cd /usr/local/src/ [root@localhost src]# wget http://download.redis.io/releases/redis-3.2.11.tar.gz
3.解压(重命名为redis3.2):
[root@localhost src]# tar -zxvf redis-3.2.11.tar.gz [root@localhost src]# mv redis-3.2.11 redis3.2
4.创建安装目录
[root@localhost utils]# mkdir /usr/local/redis
5.编译安装(使用PREFIX指定安装目录)
进入到/usr/local/src/redis-3.1/src目录
[root@localhost utils]# cd ../src/ [root@localhost src]# make PREFIX=/usr/local/redis install
6.配置集群
创建集群配置目录,并拷贝 redid.conf 配置文件到各节点配置目录:192.168.1.111
# mkdir -p /usr/local/redis-cluster/7111 # cp /usr/local/src/redis3.2/redis.conf /usr/local/redis-cluster/7111/redis-7111.conf
192.168.1.112
# mkdir -p /usr/local/redis-cluster/7112 # cp /usr/local/src/redis3.2/redis.conf /usr/local/redis-cluster/7112/redis-7112.conf
192.168.1.113
# mkdir -p /usr/local/redis-cluster/7113 # cp /usr/local/src/redis3.2/redis.conf /usr/local/redis-cluster/7113/redis-7113.conf
192.168.1.114
# mkdir -p /usr/local/redis-cluster/7114 # cp /usr/local/src/redis3.2/redis.conf /usr/local/redis-cluster/7114/redis-7114.conf
192.168.1.115
# mkdir -p /usr/local/redis-cluster/7115 # cp /usr/local/src/redis3.2/redis.conf /usr/local/redis-cluster/7115/redis-7115.conf
192.168.1.116
# mkdir -p /usr/local/redis-cluster/7116 # cp /usr/local/src/redis3.2/redis.conf /usr/local/redis-cluster/7116/redis-7116.conf
具体配置内容参看(1)中的配置案例。
4 集群创建
分别启动6个redis实例,然后检查是否启动成功
[root@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7111/redis-7111.conf [root@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7112/redis-7112.conf [root@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7113/redis-7113.conf [root@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7114/redis-7114.conf [root@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7115/redis-7115.conf [root@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7116/redis-7116.conf
验证:
[root@localhost ~]# ps -ef|grep redis root 1948 1 0 18:52 ? 00:00:00 /usr/local/redis/bin/redis-server 10.0.31.144:7111 [cluster] root 1956 1 0 18:53 ? 00:00:00 /usr/local/redis/bin/redis-server 10.0.31.144:7112 [cluster] root 1960 1 0 18:53 ? 00:00:00 /usr/local/redis/bin/redis-server 10.0.31.144:7113 [cluster] root 1964 1 0 18:53 ? 00:00:00 /usr/local/redis/bin/redis-server 10.0.31.144:7114 [cluster] root 1968 1 0 18:54 ? 00:00:00 /usr/local/redis/bin/redis-server 10.0.31.144:7115 [cluster] root 1973 1 0 18:54 ? 00:00:00 /usr/local/redis/bin/redis-server 10.0.31.144:7116 [cluster] root 1978 1720 0 18:54 pts/0 00:00:00 grep redis
设置集群关系:
使用/usr/local/src/redis3.2/src/redis-trib.rb命令
[root@localhost src]# ./redis-trib.rb create --replicas 1 10.0.31.144:7111 10.0.31.144:7112 10.0.31.144:7113 10.0.31.144:7114 10.0.31.144:7115 10.0.31.144:7116 >>> Creating cluster Connecting to node 10.0.31.144:7111: OK Connecting to node 10.0.31.144:7112: OK Connecting to node 10.0.31.144:7113: OK Connecting to node 10.0.31.144:7114: OK Connecting to node 10.0.31.144:7115: OK Connecting to node 10.0.31.144:7116: OK >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 10.0.31.144:7111 10.0.31.144:7112 10.0.31.144:7113 Adding replica 10.0.31.144:7114 to 10.0.31.144:7111 Adding replica 10.0.31.144:7115 to 10.0.31.144:7112 Adding replica 10.0.31.144:7116 to 10.0.31.144:7113 M: 88da0083291b0a732ec9ca502b2cfccfc296dcbb 10.0.31.144:7111slots:0-5460 (5461 slots) master M: 815a0c11695a42cdb46104444f8c29a9ac5ea897 10.0.31.144:7112slots:5461-10922 (5462 slots) master M: 203bc8721443aa8432b9397cfe0daa07f5d603a0 10.0.31.144:7113slots:10923-16383 (5461 slots) master S: c639cce2bbe1334d15e7dcba2635f14b7b0ff4af 10.0.31.144:7114replicates 88da0083291b0a732ec9ca502b2cfccfc296dcbb S: 4f8dd744609a135777d07d18e8faf18c6833e96d 10.0.31.144:7115replicates 815a0c11695a42cdb46104444f8c29a9ac5ea897 S: a350fb4762033ded64d6dbb778004889de673e37 10.0.31.144:7116replicates 203bc8721443aa8432b9397cfe0daa07f5d603a0Can I set the above configuration? (type 'yes' to accept): //输入yes
集群创建过程说明:
(1) 给定 redis-trib 程序的命令是 create , 这表示我们希望创建一个新的集群;
(2) 这里的 --replicas 1 表示每个主节点下有一个从节点;
(3) 之后跟着的其它参数则是实例的地址列表,程序使用这些地址所指示的实例来创建新集群;总的来说,以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。接着,redis-trib 会打印出一份预想中的配置给你看,如果你觉得没问题的话(注意核对主从关系是否是你想要的),就可以输入 yes , redis-trib 就会将这份配置应用到集群当中。
5 集群测试
使用redis-cli进入集群环境
5.1 登录集群
[root@localhost src]# /usr/local/redis/bin/redis-cli -c -h 10.0.31.144 -p 7111 10.0.31.144:7111>
-c :集群模式
-h:指定ip地址
-p:指定端口号
5.2查看集群信息
cluster info :查看集群信息
cluster nodes :查看节点列表
5.3数据验证
[root@localhost src]# /usr/local/redis/bin/redis-cli -c -h 10.0.31.144 -p 7111 10.0.31.144:7111> set a 1 -> Redirected to slot [15495] located at 10.0.31.144:7113 //将a设置到了7113 OK 10.0.31.144:7113> quit [root@localhost src]# /usr/local/redis/bin/redis-cli -c -h 10.0.31.144 -p 7112 10.0.31.144:7112> get a -> Redirected to slot [15495] located at 10.0.31.144:7113 //从7113获取到了a "1" 10.0.31.144:7113>
转载于:https://my.oschina.net/u/3712726/blog/1554687
Redis入门到精通-Redis集群搭建相关推荐
- Redis 多机多节点集群搭建方案(5.0版本)
>搭建环境: a)redis的安装包,redis-5.0.8.tar.gz b)gcc安装包gcc_rpm.tar.gz c)VM10 d)CentOS镜像文件 >搭建步骤: 1.准备工作 ...
- Redis三主三从集群搭建
一.引子 主从复制以及哨兵,他们可以提高读的并发,但是单个master容量有限,数据达到一定程度会有瓶颈,这个时候可以通过水平扩展为多master-slave集群(看原理图). 所以一起来学习redi ...
- 《SpringCloud超级入门》使用Eureka集群搭建《十三》
前面我们搭建的注册中心只适合本地开发使用,在生产环境中必须搭建一个集群来保证高可用.Eureka 的集群搭建方法很简单:每一台 Eureka 只需要在配置中指定另外多个 Eureka 的地址就可以实现 ...
- Redis【第二篇】集群搭建
第一步:准备 1.安装包 ruby-2.4.0.tar.gz rubygems-2.6.10.tgz zlib-1.2.11.tar.gz redis-3.3.2.gem 2. 架构: 名称 IP 端 ...
- Redis三主三从集群搭建(三台机器)
介绍 redis三种模式 一.主从模式 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构. ...
- REDIS三主三从集群搭建笔记(redis版本5.0.8)
mkdir -p /app/redis tar -zxvf redis-5.0.8.tar.gz -C /app/redis cd /app/redis/redis-5.0.8编译安装: make & ...
- Redis【有与无】【AC2】Redis 安装、配置、集群搭建
本文章基于Redis 6.0.9版本,对Redis配置进行说明 目录 序: 1.准备阶段 2.安装阶段 3.配置 4.创建集群 5.测试 6.防火墙开放端口(选) 7.关闭redis 附录 T.术语 ...
- Redis主从、哨兵及集群搭建
1.主从复制 目的:读写分离,主写,从读,容灾的快速恢复 主从复制原理: Slave 启动成功连接到master后会发送-个sync命令. Master 接到命令启动后台的存盘进程,同时收集所有接收 ...
- Elasticsearch从入门到精通 理论 集群 优化 框架集成
Elasticsearch 入门 Elasticsearch 安装 下载软件 Elasticsearch 的官方地址:https://www.elastic.co/cn/ Elasticsearch ...
- Redis入门到精通-Redis高级命令
2019独角兽企业重金招聘Python工程师标准>>> 高级命令 keys * : 返回满足的所有键 ,可以模糊匹配 exists :是否存在指定的key,存在返回1,不存在 ...
最新文章
- CSP 202006-2 	稀疏向量 python实现(非满分)(待更新)
- 国内最优秀的Leangoo敏捷项目协作工具
- docker部署python web应用_在 Docker 中运行一个 Python 的 Web 应用
- 物理光学5 色散、吸收与散射
- UVA 11038 How Many O's?
- Android开发之可以在任意页面开启主线程和使用线程池开启子线程的工具类
- 7款免费原型设计工具
- Spring IOC容器-自动装配
- VS2013 配置全局 VC++目录
- python面向对象思路_Python面向对象三要素-继承(Inheritance)
- LayaAir UI 组件 # CheckBox 复选框
- 简述计算机的四代发展阶段 以及电子器件,2014计算机作业1答案
- 爆赞,java后端开发路线。
- 推荐!程序员常用的15个学习交流网站
- 前端命名规范及常用命名整理
- linux查询打印机ip,Linux C打印IP地址信息
- day1 计算机简史(概念)②
- 友盟集成QQ第三方登录
- 从面向对象的设计模式看软件设计
- 优秀文章及学习网站之收集手册
热门文章
- Atitit 软件项目的一整套解决方案(gui界面,中间,存储数据库,图像处理,全文搜索)attilax总结
- paip.c++读写ini文件.
- paip.rmvb视频的无损分割与截取
- linux:云端 ubuntu下挂载数据盘
- Vanguard集团在美上市ETF资产超8700亿美元
- 港科大教授张晓泉:目前AI多做预测分类,还需经济学发现因果关系
- ARM正式发布v9架构,确认可供应华为,不受美国出口管制约束
- 元气开工!这里有一份礼包待领取
- 【重磅】这家技术贼牛的开源公司开始狂招人啦!
- 【数字信号调制】基于matlab二进制差分相移键控调制(2DPSK)【含Matlab源码 163期】