redis之集群搭建 linux环境

前言

参考 redis cluster-tutorial

Redis集群简单介绍

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集.

Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:

  • 自动分割数据到不同的节点上。
  • 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

Redis集群介绍

Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念.

Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么:

  • 节点 A 包含 0 到 5500号哈希槽.
  • 节点 B 包含5501 到 11000 号哈希槽.
  • 节点 C 包含11001 到 16384号哈希槽.

这种结构很容易添加或者删除节点. 比如如果我想新添加个节点D, 我需要从节点 A, B, C中得部分槽到D上. 如果我想移除节点A,需要将A中的槽移到B和C节点上,然后将没有任何槽的A节点从集群中移除即可. 由于从一个节点将哈希槽移动到另一个节点并不会停止服务,所以无论添加删除或者改变某个节点的哈希槽的数量都不会造成集群不可用的状态.

redis集群实现了分布式存储

搭建实例

1.新建文件夹

cd /usr/local/src/redis-4.0.10
mkdir 7000 7001 7002 7003 7004 7005

2.在7000~7005中各创建一个redis.conf配置文件,并将端口改成和文件名相同的号码

基本配置

#端口
port 7000
#开启集群
cluster-enabled yes
#集群每个节点配置,自动生成
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
appendonly yes
appendfilename "appendonly-7000.aof"

其他配置

#守护进程后天运行
daemonize yes 
#不绑定ip
#bind 127.0.0.1
#关闭保护模式
protected-mode no

3.启动redis实例

切换到7000文件,启动redis

cd 7000
../src/redis-server ./redis.conf

同理启动7001~7005

使用 ps -ef | grep redis 命令查看redis运行情况 

搭建集群

Redis 集群的主从复制模型

为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有N-1个复制品.

在我们例子中具有A,B,C三个节点的集群,在没有复制模型的情况下,如果节点B失败了,那么整个集群就会以为缺少5501-11000这个范围的槽而不可用.

然而如果在集群创建的时候(或者过一段时间)我们为每个节点添加一个从节点A1,B1,C1,那么整个集群便有三个master节点和三个slave节点组成,这样在节点B失败后,集群便会选举B1为新的主节点继续服务,整个集群便不会因为槽找不到而不可用了

不过当B和B1 都失败后,集群是不可用的.

搭建ruby环境

使用yum install ruby 安装的ruby版本比较老,我们使用rvm方式安装

1)安装rvm 参考rvm

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ \curl -sSL https://get.rvm.io | bash -s stable

按照提示运行命令 source /etc/profile.d/rvm.sh ,rvm安装成功(界面没有提示表示成功)

2)列出已知ruby版本

 rvm list known

3)安装ruby

rvm install 2.5.1  (等待漫长的下载,编译过程,完成以后,Ruby, Ruby Gems 就安装好了。)

4)替换ruby的使用源

$ gem source -r https://rubygems.org/   
$ gem source -a https://gems.ruby-china.org
$ gem source -l 

*5)安装Rails(ruby web框架)

$ gem install rails

使用ruby脚本构建

1.安装redis-4.0.1.gem ,原因:redis-trib.rb脚本依赖redis.gem

$ gem install redis

2.使用ruby脚本文件(redis-trib.rb)构建集群

切换到redis下src目录

./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

注意事项: redis在部署到远程linux服务器上时,这里的127.0.0.1 需要进行替换成对外ip地址。才能使得jedis客户端(如redisson)进行远程访问连接

如果显示如下,说明现在创建的结点包括了旧集群的结点信息,需要删除之前的节点信息(appendonly.aof,dump.rdb,nodes-conf),重新启动实例并运行ruby脚本

3.部署成功显示如下

显示 ALL 16384 slots covered 表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常

测试

猜你喜欢

转载自blog.csdn.net/zl_momomo/article/details/81671337