前言: Redis 作为一款高效的 NOSQL 数据库已经深入贯彻和落实到我们的日常开发代码中, 作为缓存, 时间控制, 数据仓库, 队列等使用方法层出不穷, 简直是开写代码, 居家旅行之必备良药. 曾经, 我们的项目都是单体的, 直到后来逐渐演变为微服务 -- 一个将我们的工程解耦成多个工程的体系. 然后随着我们项目的访问量越来越高, 后台的吞吐量也越来越大. 如果我们还采用的单体 Redis, 性能很容易形成瓶颈. 如何突破单体 Redis 带来的功能受限? 如何突破性能带来的问题? 这时我们就可以考虑横向扩展, 搭建 Redis 集群. 正所谓: 众人拾柴火焰高, 原来一颗小火柴不足以照亮整个房子, 一旦人多了, 火柴多了, 那么散发出来的火焰就会更亮, 更热, 集群其实就是这个道理, 更多的服务器参与工作就会摆脱单体应用带来的性能上的局限. 本篇博客就来从零开始搭建一个 Redis 集群. 注: 本篇博客搭建的 Redis 集群采用的 Linux 服务器是 centos6.5,Redis 版本是 4.0.6, 因为没有多台服务器, 所以采用的是一台服务器模拟安装多个 Redis 节点的方式搭建服务器;
本篇博客的目录
一: 准备
二: 搭建 Redis 集群
三: 使用 Treesoft 管理
四: 总结
正文
一: 准备
1.1: 安装单体 Redis
首先下载 Redis 的安装包, 然后解压, 编译, 依次执行以下指令:
- [root@host /]# mkdir /usr/software/
- [root@host software]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz
- [root@host software]# tar -xzvf Redis-4.0.6.tar.gz
- [root@host software]# cd Redis-4.0.6/
- [root@host Redis-4.0.6]# make && install
简单解释一下以上命令, 首先创建一个 Redis 的目录, 然后下载 redis4.0.6 版本, 再解压, 然后编译安装, 安装完之后的样子大概如下:
Redis 默认是非守护模式, 也就是无法在后台运行, 我们需要把其默认的属性给修改了, 依次执行以下命令:
[root@host Redis-4.0.6]# vi /usr/software/Redis-4.0.6/Redis.conf no-->yes
上面的命令是用 vi 修改 Redis 的配置文件中的守护模式, 将其由关闭模式改为开启, 开启以后我们就可以在后台运行 Redis 了
在后台启动运行 Redis
[root@host src]# ./Redis-server ../Redis.conf
成功启动 Redis 的会出现以下画面:
然后我们再以客户端方式运行: Redis-cli
可以看到 Redis 已经在运行了, 并且我们做了一个简单的测试 set 一个 name 值, 然后再 get 这个 name 值. 可以看到程序正常运行.
二: 搭建 Redis 集群
2.1: 复制配置文件到多个 Redis
之前有提到我们的服务器资源有限, 所以将采用的是一台服务器安装多个 Redis 节点的方式. 再具体到安装过程, 那就是采用多配置文件的方式, 将每个配置文件配置成不同的端口号和目录等, 然后依次启动, 使用 Redis-trib 来管理这个集群.
首先我们需要先创建一个 Redis 集群文件夹, 起名 Redis-cluster, 然后准备 6 个节点, 复制配置文件到这个文件夹里面:
- [root@host software]# mkdir Redis-cluster
- [root@host Redis-cluster]# mkdir 6001
- [root@host Redis-cluster]# mkdir 6002
- [root@host Redis-cluster]# mkdir 6003
- [root@host Redis-cluster]# mkdir 6004
- [root@host Redis-cluster]# mkdir 6005
- [root@host Redis-cluster]# mkdir 6006
- [root@host Redis-cluster]# cp /usr/software/Redis-4.0.6/Redis.conf /usr/software/Redis-cluster/6001/
- [root@host Redis-cluster]# cp /usr/software/Redis-4.0.6/Redis.conf /usr/software/Redis-cluster/6002/
- [root@host Redis-cluster]# cp /usr/software/Redis-4.0.6/Redis.conf /usr/software/Redis-cluster/6003/
- [root@host Redis-cluster]# cp /usr/software/Redis-4.0.6/Redis.conf /usr/software/Redis-cluster/6004/
- [root@host Redis-cluster]# cp /usr/software/Redis-4.0.6/Redis.conf /usr/software/Redis-cluster/6005/
- [root@host Redis-cluster]# cp /usr/software/Redis-4.0.6/Redis.conf /usr/software/Redis-cluster/6006/
以上命令是建立了 6 个节点, 然后将单体的 Redis 节点的配置文件复制到每个节点中, 接下来我们就要用这些配置文件来配置集群了
2.2: 修改配置文件
以下是最小的 Redis 群集配置文件, 根据此我们需要修改每个配置文件中的这些属性:
- port 7000
- cluster-enabled yes
- cluster-config-file nodes.conf
- cluster-node-timeout 5000
- appendonly yes
依次执行命令, 修改每个配置文件
[root@host 6001]# vi Redis.conf
1修改端口号, 这里和我们配置的端口号保持一致:
2修改 appendonly 为 yes
3开启 cluster-enabled 为 yes, 即为开启集群模式
4修改集群节点为当前配置文件的 conf 文件
5: 修改超时时间为 5000ms, 原来为 15000.
(用 vi 修改完记得用切记 vi 命令保存: wq!)
2.3: 配置多个 Redis
按照 2.2 中给出的步骤, 依次配置 6 个节点, 注意节点, conf 每个配置的不同
2.4: 安装 Ruby
因为 Redis 的集群管理工具需要用到 Ruby, 接下来我们需要安装 Ruby 依赖库:
这里我们不采用 yum 安装, 因为 yum 安装的 Ruby 默认版本号是 1.9. 而 Redis 的集群管理工具 trib 的最小 Ruby 版本号要求是 2.2.2.(版本低于 2.2.2 会无法启动) 所以我们采用手动的方式安装 Ruby
依次执行一下命令
- [root@host software]# mkdir Ruby
- [root@host Ruby]# wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz
- [root@host Ruby]# tar xf Ruby-2.2.2.tar.gz
- [root@host Ruby-2.2.2]# cd Ruby-2.2.2
- [root@host Ruby-2.2.2]#./configure --prefix=/usr/local/Ruby-2.2.2
- [root@host Ruby-2.2.2]# make && make install
然后查看 Ruby 版本号. 如果出现的是 2.2.2 就表示成功了
2.5: 安装 Gem Redis
- [root@host ~]# yum install RubyGems
- [root@host Ruby]# Gem install Redis
2.6 使用 Redis-trib 启动集群
2.6.1 依次启动 Redis 节点
- [root@host src]# cd /usr/software/Redis-4.0.6/src
- [root@host src]# ./Redis-server /usr/software/Redis-cluster/6001/Redis.conf
- [root@host src]# ./Redis-server /usr/software/Redis-cluster/6002/Redis.conf
- [root@host src]# ./Redis-server /usr/software/Redis-cluster/6003/Redis.conf
- [root@host src]# ./Redis-server /usr/software/Redis-cluster/6004/Redis.conf
- [root@host src]# ./Redis-server /usr/software/Redis-cluster/6005/Redis.conf
- [root@host src]# ./Redis-server /usr/software/Redis-cluster/6006/Redis.conf
2.6.2: 搭建 Redis 集群
[root@host src]# /usr/software/Redis-4.0.6/src/Redis-trib.rb create --replicas 1 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006
三: 安装 TreeSoft 界面化管理工具
3.1: 测试 Redis 集群
首先我们用 Redis 客户端启动一个节点, 可以看出 Redis 将值重定向到节点 6002 上面去了
[root@host src]# ./Redis-cli -c -h 127.0.0.1 -p 6001
关于 Redis 的集群分片问题:
这段描述表示了 Redis 的集群是如何工作的, 通过将节点进行划分不同的 hash 槽来实现数据的存储, 每次当进行 set 值的时候, Redis 集群会对键进行 crc16 的算法校验, 然后再取模, 这样可以保证键可以落在 16384 范围中的某一个点上. 然后再取不同的范围, 定位到具体的节点上, 这种结构的伸缩兴比较好, 会避免删除或者增加节点的时候导致集群不可用.
3.2: 安装 treeSoft
3.2.1: 简介 treesoft 是 Redis 的一个界面化管理工具, 可以通过它来查看 Redis 的 key 和 vlaue 的集合, 进行简单配置就可以, 界面简单操作方便, 因此我们来安装一下 treeSoft:
首先必须得安装 tomcat(7.0+),jdk(1.7+), 然后下载 treesoft, 下载地址: http://www.treesoft.cn/dms.html.
下载之后解压, 然后将 treenms 放入到 tomcat 到 webapps 目录下, 再启动 tomcat, 我的目录是:/usr/software/tomcat/apache-tomcat-7.0.92/webapps/treenms
就可以运行了
注: 因为篇幅原因, 本篇博客不介绍安装 tomcat,jdk 的详细教程, 不会的同学可以自行 google
3.2.2:treesoft 管理
启动 tomcat, 然后访问 treesoft
访问地址: http://176.122.132.220:8070/treenms/treesoft/index, 就可以看到下面的界面了, 并且可以对键进行添加, 删除, 修改工作, 刷新等操作, 很方便. 只需要在右上角进行简单的配置就可以了
可以看到界面干净清爽, 可以随意切换集群中的节点 (6001,6002 等)
四: 总结
本篇博客讲述了 Redis 如何搭建集群, 以及 Redis 集群的基本运行原理, 还有后来的使用 treesoft 进行管理集群, Redis 是我们在编程开发中不可或缺的一个中间件, 如何使用好它, 管理好它, 最大化它的性能都是我们需要探索的问题. 而这些的第一步就是我们先亲自手动去搭建这样一个集群, 并了解它的基本运行机制, 在以后的编程工作中, 才能更高的发挥它的优点.
来源: https://www.cnblogs.com/wyq178/p/10340234.html