docker部署redis4.0集群

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
docker部署redis4.0集群_第1张图片
槽点分配完成,集群创建成功
docker部署redis4.0集群_第2张图片
使用redis-cli客户工具连接集群
redis-cli -c -h 10.30.90.114 -p 7001
cluster info
cluster nodes
查看集群信息
docker部署redis4.0集群_第3张图片
----------------------------------------------------------------------------------------------------------
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抽取槽点,共计所需重新分配槽点数
docker部署redis4.0集群_第4张图片
为新增master添加从节点,redis-trib.rb add-node --slave 10.30.91.183:7004 10.30.90.114:7004
docker部署redis4.0集群_第5张图片 docker部署redis4.0集群_第6张图片
----------------------------------------------
删除节点,从节点没有分配槽点可以直接删除,master节点需移除数据再删除
迁移数据,redis-trib.rb reshard 10.30.90.114:7001 三次输入,迁移槽点数,输入需迁入数据的id,迁出id(待删除)
迁移2000槽点到 7004
docker部署redis4.0集群_第7张图片
剩余2128槽点迁移到 7002
docker部署redis4.0集群_第8张图片
再删除主节点 redis-trib.rb del-node 10.30.90.114:7001 45634ec538276f021835556f1172d5efc29c2122
docker部署redis4.0集群_第9张图片

5.参考

http://www.cnblogs.com/zhengzeze/p/7325750.html
https://www.cnblogs.com/mafly/p/redis_cluster.html

你可能感兴趣的:(中间件)