离线安装
centos的镜像地址
http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/
redis 集群中需要的安装包
-
下载依赖包, ruby和zlib
http://www.ruby-lang.org/zh_cn/downloads/ http://zlib.net/
-
解压文件
tar -zxvf ruby-2.6.3.tar.gz
-
编译安装
./configure make make install
-
查看 gem 镜像
gem sources -l gem sources -a http://gems.ruby-china.org/
-
解压zlib
tar -zxvd zlib-1.2.11.tar.gz ./configure --prefix=/usr/local/zlib make make install
-
进入到ruby中的 zlib目录下
cd /opt/redis/server01/ruby-2.6.3/ext/zlib ruby ./extconf.rb make make install
-
修改gem镜像地址安装redis接口
gem sources -a http://gems.ruby-china.org/ 查看镜像 gem source -l
-
安装 redis-***.gem
gem install -l /usr/local/redis-4.1.2.gem #安装本地的redis接口
redis的安装
单机
解压redis压缩包 tar -zxvf redis-4.0.14.tar.gz 编译 make 安装 make install 启动redis cd redis-4.0.14/src ./redis-server 客户端测试 ./redis-cli
集群
-
创建如图目录。 两台服务器可以都这么配置
-
将redis.conf拷贝到这三个目录中去:(redis.conf在安装目录下)
cp redis.conf ../server01/ cp redis.conf ../server02/ cp redis.conf ../server03/
-
修改每个redis.conf的配置,需要修改的内容如下:
port 7000 //配置集群的端口,分别是7000、7001、7002 bind 本机的IP //这里的默认配置是127.0.0.1改为内网ip。 daemonsize yes //允许redis在后台运行 pidfile /var/run/redis_7000.pid //改成和端口一致 cluster-enabled yes // 开启集群 把注释去掉 cluster-config-file node_7000.conf //集群的配置,和端口一致 cluster-node-timeout 15000 // 请求超时,默认为15秒 appendonly yes // aof日志开启,有需要就开启,每一次写操作都会记录一条日志。
-
修改完成之后启动服务, 依次启动每个服务
./redis-server ../../server01/redis.conf ./redis-server ../../server02/redis.conf ./redis-server ../../server03/redis.conf
-
创建redis集群
cd redis-4.0.14/src/ ./redis-trib.rb create --replicas 1 172.25.67.52:7001 172.25.67.52:7002 172.25.67.52:7003 172.25.67.32:7004 172.25.67.32:7005 172.25.67.32:7006
-
测试连接
./redis-cli -h 172.25.67.32 -p 7006 查看各个节点的状态 cluster nodes 查看本节点在集群中的状态 cluster info
-
停止一个节点
./redis-cli -c -h 172.25.67.32 -p 7006 shutdown
再次启动后直接进入集群中。
-
添加一个新的节点
在server4中复制一个redis.conf ./redis-server ../../server04/redis.conf
然后连接进集群,如果该节点之前不在集群中,连接集群输入cluster meet 命令就可以指定某个节点加入集群。
./redis-trib.rb add-node 172.25.67.32:7007 172.25.67.32:7006 1)add-node就是添加节点, 默认是添加主节点 3)172.25.67.32:7007是需要添加节点 4)172.25.67.32:7006:参数节点,把节点添加到7006所在集群。
给新加的主节点分配 Hash槽
./redis-trib.rb reshard 172.25.67.52:7001
-
添加从节点
./redis-trib.rb add-node --slave --master-id d53b66fdce3cf65fab87f6dbbfb4703f702d4931 172.25.67.32:7008 172.25.67.52:7001 1) add-node:添加节点 2) --slave:添加从节点 3) --master-Id xx :表示给此主节点添加从节点。 4) 172.25.67.32:7008:需要添加从节点 5) 172.25.67.52:7001:表示需要添加到7001所在集群。
报错说明
[ERR] Node 172.25.67.52:7002 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解决:
登录每一个redis
用redis-cli 登录到每个节点执行 flushall 和 cluster reset 就可以了。
命令
redis-trib.rb Redis Cluster的管理工具
知识点
redis 中总共有 16384 的槽节点 (0-16383)。
参考
https://www.cnblogs.com/hello-daocaoren/p/8431902.html https://www.cnblogs.com/qlqwjy/p/8858520.html