redis集群安装部署

来源:互联网 发布:alphago用的什么算法 编辑:程序博客网 时间:2024/06/06 00:32
redis集群规划,redis集群至少需要6个节点(3主3从),此操作是把6各节点都安装在一台服务器上,若服务器多,
可分开进行安装。此实验前提是机器上已经装好了redis。若不会安装redis参考 http://blog.csdn.net/linux_newbie_rookie/article/details/78723586


安装redis集群可参考博客:http://www.cnblogs.com/mafly/p/redis_cluster.html


1. 创建文件夹,计划集群中redis节点的端口号为9001-9006,数据存放在端口号/data下。
mkdir /redis-cluster
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data


2. 复制执行脚本
在 /redis-cluster下创建 bin 文件夹,用来存放集群运行脚本,并把安装好的 Redis 的 src 路径下的运行脚本拷贝过来。
mkdir /redis-cluster/bin
cd /usr/local/redis/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/redis-cluster/bin


3. 复制一个新的redis实例
从已经安装好的(/usr/local/redis/)redis中复制一个新实例到9001--9006中
cp /usr/local/redis/* /redis-cluster/9001


修改9001下的redis.conf配置文件:
port 9001(每个节点的端口号)
daemonize yes
bind 192.168.119.131(绑定当前机器 IP)
dir /usr/local/redis-cluster/9001/data/(数据文件存放位置)
pidfile /var/run/redis_9001.pid(pid 9001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes9001.conf(9001和port要对应)
cluster-node-timeout 15000
appendonly yes


4. 复制新实例到9002-9006,然后修改配置文件对应的端口号以及相关信息
(可在vim里面:$s###g进行修改,也可以采用下面的sed进行修改)
配置文件修改:
 sed -i 's/cluster-config-file nodes-9001.conf/cluster-config-file nodes-9006.conf/g' redis.conf 
 sed -i 's/\/var\/run\/redis_9001.pid/\/var\/run\/redis_9006.pid/g' redis.conf 
 sed -i 's/logfile ""/logfile "\/redis-cluster\/9006\/log"/g' redis.conf 
 sed -i 's/\/redis-cluster\/9001\/data\//\/redis-cluster\/9006\/data\//g' redis.conf 
 sed -i 's/port 9001/port 9006/g' redis.conf 
 
 5. 启动9001-9006的所有节点。
 /usr/local/bin/redis-server /redis-cluster/9001/redis.conf
 ...
 ...
 ...
 
 5. 找个节点进行测试
 /redis-cluster/bin/redis-cli -h 192.168.119.131 -p 9001
 keys *
 set name mm
 报错:(error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽)
 原因:虽然配置启动了redis集群服务,但是还不在一个集群中,互相不能发现,没有可存储的位置,就是slot(槽)。


6. 安装集群所需软件
  yum install -y ruby
  gem install redis
 报错:
 ERROR:  Error installing redis:
         redis requires Ruby version >= 2.2.2.2
 原因:Centos7yum安装的ruby版本为2.2.2.2,但是安装redis时要求最低为2.2.2.2,自己进行源码编译安装依然还是报错,
 解决方法用rvm来更新ruby
 参考博客:http://blog.csdn.net/FengYe_YuLu/article/details/77628094
 
 出来这样即为成功
 [root@bogon test]# gem install redis
 Successfully installed redis-3.0.0
 Parsing documentation for redis-3.0.0
 Installing ri documentation for redis-3.0.0
 Done installing documentation for redis after 1 seconds
 1 gem installed


7. /redis-cluster/bin/redis-trib.rb create  --replicas 1 192.168.6.190:9001 192.168.6.190:9002 192.168.6.190:9003 192.168.6.190:9004 192.168.6.190:9005 192.168.6.190:9006 
   成功则会出来3主3从,有系统自动分配
   Using 3 masters:
   192.168.6.190:9001
   192.168.6.190:9002
   192.168.6.190:9003
  上面命令解释:调用 ruby 命令来进行创建集群,--replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,
以及 solt 的大小,因为在 Redis 集群中有且仅有 16383 个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。


8. 做到以上则代表redis集群搭建成功,可以在验证下:
 redis-cli -c -h 192.168.6.190 -p 9001
 cluster info   显示集群状态
 cluster nodes  显示集群节点
 此时在设置mm时就可以设置:set name mm
 192.168.6.190:9001> set name mm
-> Redirected to slot [5798] located at 192.168.6.190:9002
OK
原创粉丝点击