一、Redis简介 官网给的定义大概意思是:Redis是一个开源,内存数据结构存储,用作数据库,缓存和消息代理。它支持的数据结构有:字符串,哈希,列表,集合,有序集合,位图,超级日志和具有半径查询的地理空间索引。Redis是一个高性能的支持主从同步的key-value数据库。 二、集群搭建 1>系统环境 本地用VirtualBox安装三台配置一样的Centos虚拟机 查看版本: 2>三主三从架构说明 三台服务器,启动6个实例,形成三主三从,其中存储相同数据的主从节点不能落在同一台机器上,目的是防止部署redis的虚拟机宕机从而造成主从节点全部失效。实验机器的地址与端口如下: ip port 3>安装 在三台机器上全部执行如下操作: sudo yum upate && yum install wget
修改配置文件中下面选项,eg:
在防火墙中对端口 7000 7001开放: firewall-cmd --zone=public --add-port=7000/tcp --permanent 启动redis实例: cd /usr/local/cluster/7000 检查是否启动成功: 为了使用主从节点不落在同一台机器上 使用如下命令:每台ip+port交叉(没有找到命令指定主从节点的关系的方法) ./redis-trib.rb 这里选择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....... 解决方式:
同样的7000也需要执行删除 appendonly.aof nodes.conf redis集群不仅需要开通redis客户端连接的端口如7000,而且需要开通集群总线端口,集群总线端口为redis客户端连接的端口 + 10000 执行如下命令: firewall-cmd --zone=public --add-port=17000/tcp --permanent 四、测试 这里使用 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集群 运行结果: |
|