1.redis 4.0.X版本镜像制作
--------------------------------------------------------------------------------
FROM docker.io/centos:latest
MAINTAINER zhengyu
ADD redis-4.0.10.tar.gz /redis/
ENV PATH $PATH:/redis/redis-4.0.10/src/
#Ensure UTF-8 lang and locale
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/shanghai" > /etc/timezone
EXPOSE 6379
CMD [ "/redis/redis-4.0.10/src/redis-server","/redis/redis-4.0.10/redis.conf" ]
-------------------------------------------------------------------------------------------------------
2.容器实例创建
redis.conf 配置文件修改
bind
10.30.90.114 #容器ip,--net=host时为宿主机ip
port 7001 #改为设定的端口 容器端口映射数据端口7001,集群纵向接口默认10000 + ,即为17001也需映射
daemonize yes #后台启动
cluster-enabled yes #启动集群模式
cluster-node-timeout 15000 #节点超时时间,单位:毫秒
----------------------------------------------
示例,两台物理机各运行3个redis实例,3主3从集群
10.30.90.114,1redis7001、1redis7002、1redis7003
10.30.91.183,2redis7001、2redis7002、2redis7003
docker run --name 1redis7001 --net=host -v /extracme/data/redis/7001/redis.conf:/redis/redis-4.0.10/redis.conf -idt docker.io/kothinking/redis
docker run --name 1redis7002 --net=host -v /extracme/data/redis/7002/redis.conf:/redis/redis-4.0.10/redis.conf -idt docker.io/kothinking/redis
docker run --name 1redis7003 --net=host -v /extracme/data/redis/7003/redis.conf:/redis/redis-4.0.10/redis.conf -idt docker.io/kothinking/redis
docker run --name 2redis7001 --net=host -v /extracme/data/redis/7001/redis.conf:/redis/redis-4.0.10/redis.conf -idt docker.io/kothinking/redis
docker run --name 2redis7002 --net=host -v /extracme/data/redis/7002/redis.conf:/redis/redis-4.0.10/redis.conf -idt docker.io/kothinking/redis
docker run --name 2redis7003 --net=host -v /extracme/data/redis/7003/redis.conf:/redis/redis-4.0.10/redis.conf -idt docker.io/kothinking/redis
----------------------------------------------------------------------------------------------------------
3.redis集群管理工具安装
redis-trib.rb是采用Ruby实现的Redis集群管理工具。内部通过Cluster相关命令帮助
我们简化集群创建、检查、槽迁移和均衡等常见操作,使用之前需要安装Ruby依赖环境。
----------------------------------------------
注:redis4.0.X以上需要ruby2.2.2以上版本
安装Ruby
wget http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz
tar zxvf ruby-2.3.5.tar.gz
cd ruby-2.3.5
./configure --prefix=/opt/ruby
make && make install
ln -s /opt/ruby/bin/ruby /usr/bin/ruby //注:系统默认ruby2.0.0版本需要先删除
ln -s /opt/ruby/bin/gem /usr/bin/gem
ruby -v //查看一下版本
-------------------------------------------------
在10.30.91.183上安装ruby
创建集群
redis-trib.rb create --replicas 1 10.30.90.114:7001 10.30.90.114:7002 10.30.90.114:7003 10.30.91.183:7001 10.30.91.183:7002 10.30.91.183:7003
槽点分配完成,集群创建成功
使用redis-cli客户工具连接集群
redis-cli -c -h 10.30.90.114 -p 7001
cluster info
cluster nodes
查看集群信息
----------------------------------------------------------------------------------------------------------
4.节点数据修改
10.30.90.114添加新实例1redis7004
10.30.91.183
添加新实例2redis7004
增加节点到集群,指定任意一个master节点
redis-trib.rb add-node 10.30.90.114:7004 10.30.90.114:7001
任意连接一个master节点重新分配槽点
redis-trib.rb reshard 10.30.90.114:7001
指定接收id 为我们新增节点a0d3bf69e97bf9c15913676823d6ee997b7ebf4d
输入重新分配槽点数,再输入all,从所有master抽取槽点,共计所需重新分配槽点数
为新增master添加从节点,redis-trib.rb add-node --slave 10.30.91.183:7004
10.30.90.114:7004
----------------------------------------------
删除节点,从节点没有分配槽点可以直接删除,master节点需移除数据再删除
迁移数据,redis-trib.rb reshard 10.30.90.114:7001 三次输入,迁移槽点数,输入需迁入数据的id,迁出id(待删除)
迁移2000槽点到 7004
剩余2128槽点迁移到 7002
再删除主节点 redis-trib.rb del-node 10.30.90.114:7001 45634ec538276f021835556f1172d5efc29c2122
5.参考
http://www.cnblogs.com/zhengzeze/p/7325750.html
https://www.cnblogs.com/mafly/p/redis_cluster.html