• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

Redis三主三从集群搭建

技术杂谈 勤劳的小蚂蚁 3个月前 (01-13) 77次浏览 已收录 0个评论 扫描二维码

一、Redis简介
官网给的定义大概意思是:Redis是一个开源,内存数据结构存储,用作数据库,缓存和消息代理。它支持的数据结构有:字符串,哈希,列表,集合,有序集合,位图,超级日志和具有半径查询的地理空间索引。Redis是一个高性能的支持主从同步的key-value数据库。

二、集群搭建
1>系统环境 
本地用VirtualBox安装三台配置一样的Centos虚拟机

查看版本:

2>三主三从架构说明
三台服务器,启动6个实例,形成三主三从,其中存储相同数据的主从节点不能落在同一台机器上,目的是防止部署redis的虚拟机宕机从而造成主从节点全部失效。实验机器的地址与端口如下:
ip                     port
10.252.21.154              7000
10.252.21.154              7001
10.252.21.156              7000
10.252.21.156              7001
10.252.21.157              7000
10.252.21.157              7001

3>安装
在三台机器上全部执行如下操作:
sudo yum upate && yum install wget
makir /root/software
cd  /root/software

tar -xvf redis-3.2.1.tar.gz
cd redis-3.2.1
make

mv redis-3.2.1 /usr/local/redis/
mkdir /usr/local/cluster
mkdir700070001

cp    /usr/local/redis/redis.conf /usr/local/cluster/7000
cp    /usr/local/redis/redis.conf /usr/local/cluster/7001

vi    /usr/local/cluster/7000/redis.conf
vi    /usr/local/cluster/7001/redis.conf
 
修改配置文件中下面选项,eg:
  • port 7000:指定当前Redis服务的端口,默认为6379
  • daemonize yes:配置redis作为守护进程运行
  • cluster-enabled yes:开启集群功能 
  • bind 10.252.21.154 127.0.0.1:绑定本地回环地址 
  • appendonly yes:配置数据持久化

在防火墙中对端口 7000 7001开放:
firewall-cmd –zone=publicadd-port=7000/tcp –permanent
firewall-cmd –zone=publicadd-port=7001/tcp –permanent
firewall-cmd –reload

启动redis实例:
cd /usr/local/cluster/7000
redis-server redis.conf

cd /usr/local/cluster/7001
redis-server redis.conf

检查是否启动成功:

为了使用主从节点不落在同一台机器上
使用如下命令:每台ip+port交叉(没有找到命令指定主从节点的关系的方法)
./redis-trib.rb  
create–replicas1
10.252.21.156:7000
10.252.21.154:7001
10.252.21.154:7000
10.252.21.157:7001
10.252.21.157:7000
10.252.21.156:7001


这里选择yes表示接受了这种方式:
Redis Cluser采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,Redis Cluser采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内。

到此为止集群搭建成功!!!

三、搭建过程踩的坑
1>在装redis时make报错:
解决方式:
安装gcc和gcc-c++  : yum install gcc ,yum install gcc-c++
如果想看安装情况 :先安装yum install tcl ,然后make test测试

2>执行./redis-trib.rb  create –replicas 语句报如下错误:/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require’: cannot load such file — redis (LoadError)
解决方式:
安装依赖,因为没有安装 ruby的 redis插件

3>Waiting for the cluster to join…….
解决方式:
  1. cd /usr/local/cluster/7000
  2. rm  -rf rm -rf appendonly.aof nodes.conf
同样的7000也需要执行删除 appendonly.aof nodes.conf
redis集群不仅需要开通redis客户端连接的端口如7000,而且需要开通集群总线端口,集群总线端口为redis客户端连接的端口 + 10000

执行如下命令:
firewall-cmd –zone=publicadd-port=17000/tcp –permanent
firewall-cmd –zone=publicadd-port=17001/tcp –permanent
firewall-cmd –reload

四、测试
这里使用 redis-cli 来进行演示

1>存储测试


Redis集群把所有的数据映射到16384个槽中。每个key会映射为一个固定的槽,只有当节点分配了槽,才能响应和这些槽关联的键命令.这里name ——conan落在了10.252.21.151这个节点上。

我们知道10.252.21.156:7001为10.252.21.151:7001的从节点,相应的在从节点也可以获取到数据测试如下:

2>故障转移测试
把154的master节点杀掉

查看一下新的master转移情况:

这里可以看出156:7000成了matser节点,我们再获取值:

3>使用Jedis链接Redis集群

运行结果:


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Redis三主三从集群搭建
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00