码迷,mamicode.com
首页 > 其他好文 > 详细

redis5集群搭建

时间:2019-12-30 14:17:50      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:有一个   进入   inf   部分   创建   des   node   wget   复制   

通常情况下为了redis的高可用,我们一般不会使用redis的单实例去运行,一般都会搭建一个 redis 的集群去运行。此处记录一下 redis5 以后 cluster 集群的搭建。

一、需求
1.redis5的安装
2.搭建一个3主3从的集群
3.动态的往集群中增加节点
 |- 增加一个主节点
 |- 增加一个从节点
4.动态的从集群中删除节点
 |- 删除一个从节点
 |- 删除一个主节点


二、前置知识
1、在 redis5 之后,redis cluster 的搭建不在需要默认的ruby脚本,使用 redis-cli 命令即可完成搭建
2、创建集群的这些redis实例中都必须是空的
3、在一个 redis 的集群中默认存在 16384 个哈希槽,这 16384 个哈希槽会默认分配给集群中的主节点
4、增加一个主节点,就意味着要从原来的主节点中移动部分哈希槽给新的主节点
5、删除一个主节点,就需要把该主节点分配到的哈希槽归还给别的主节点
6、在主节点之间移动哈希槽不需要停止操作,因此对集群没多大影响
7、一个集群最好有奇数个主节点
8、集群创建过程中涉及到的命令


集群创建:redis-cli --cluster create ip:port ip:port ip:port ip:port ip:port ip:port [ip:port…] --cluster-replicas 1   [-a 密码]
                                                                                                           |- --cluster-replicas 1 表示每个主节点下有一个从节点
添加一个主节点:

                       redis-cli --cluster  add-node  127.0.0.1:7006
添加一个节点作为另外一个节点的从节点:
                       redis-cli --cluster  add-node 127.0.0.1:7006 127.0.0.1:7000  --cluster-slave
删除一个节点 :

                        redis-cli --cluster del-node 127.0.0.1:7000  节点id

连接到集群:

               redis-cli -c -p 访问的端口 -h 访问的机器 -a 密码


查看集群中的节点:redis-cli -p 7000 cluster nodes

                     redis-cli --cluster check ip:端口 -a 密码


9、集群中的每个redis节点需要放行2个端口的访问:
   |- 正常的客户端通讯端口,比如6379
   |- 集群总线端口,总是 客户端通讯接口+10000,比如:16379,该端口主要是 集群总线进行故障检测、配置更新、故障转移等操作


10、如果redis集群中的某个主节点和与之相关的所有从节点都宕机了,那么redis集群将无法提供服务,因为我们不能再提供 这个master node 节点上的 哈希槽。


11、redis 集群不保证强一致性,这意味着在某些时候可能丢失某些写数据。
 |- 因为集群中从节点的复制是异步的。
 |- redis 集群在绝对需要时也支持同步写入,但是这也不能保证完全的强一致性。


12、配置redis集群的最小配置文件如下:
技术图片

 

 

 


 13、cluster-config-file 这个配置中指定的 配置文件 由redis自动维护,我们自己不要随意修改。这个文件有redis集群实例在启动时生成


14、由于本地机器不够,因此在一台电脑上进行搭建,以不同的端口进行区分。


三、redis5安装
1、进入 /usr/local/redis目录
没有这个目录可以新建一个

2、下载redis5
wget http://download.redis.io/releases/redis-5.0.3.tar.gz

3、执行解压
tar zxvf redis-5.0.3.tar.gz

4、安装
cd redis-5.0.3 && make

5、查看redis是否安装成功
cd src 里面有一个 redis-server 执行这个命令即可。因为我没有执行 make install 命令所以可用的命令是在 src 目录下。

四、redis集群配置清单
技术图片

 

 

 


1、集群中一个节点(7001的配置文件),其余节点的配置文件一样,修改一下端口即可
 技术图片

启动当前节点,看是否启动成功

redis启动命令:/usr/local/redis/redis-5.0.3/src/redis-server      /usr/local/redis/cluster/7001/redis.conf
查看redis服务是否启动: ps aux | grep redis

2、将节点7001下的redis.conf配置文件拷贝到其他的目录中,修改掉端口
集群操作

依次启动7001-7006这6个节点
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7001/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7002/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7003/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7004/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7005/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7006/redis.conf

五、创建集群
1、集群创建命令
redis-cli --cluster create host1:port1 ... hostN:portN --cluster-replicas 一个主 的从个数
2、集群创建(3主3从-注意节点的顺序)

技术图片

 

 

可以看到:16384个哈希槽平均分配给了3个主节点,从节点没有分配哈希槽。

 

3、向集群中设置值测试一下

技术图片

-c 表示的是连接集群.
从上图可以看到,我们连接的是 7001 端口,但是设置值的时候,由于key(cluster)对应的哈希槽的值是14041,所以重定向到了 7003 端口上。

 

六、动态向集群中添加一个主节点并分片
           添加节点命令:redis-cli --cluster   add-node 新节点ip:新节点port 集群中以存在的节点ip:集群中已存在的节点port
           分片命令:redis-cli --cluster    reshard 需要分片的节点ip:需要分片的节点端口

1、从7001目录中复制一份redis.conf配置,并创建目录7007和7008,将7007和7008中的redis.conf中的7001都替换成7007和7008
2、启动 7007和7008
      /usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7007/redis.conf
      /usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/cluster/7008/redis.conf

3、将7007添加到集群中
命令:/usr/local/redis/redis-5.0.3/src/redis-cli add-node 172.19.206.207:7007 172.19.206.207:7001
7007 为要添加的节点
7001 为已经存在的节点
注意:此时该节点只是作为主节点添加到了集群中,但是没有进行分片,是不可存储数据的,如果要存储数据,需要进行分片操作。
查看新加入的这个节点的信息。

 

 

4、为7007节点分配槽
命令:redis-cli --cluster reshard 需要分配槽的ip:需要分配槽的port

 


 需要注意的事项见上图中

七、添加一个从节点
经过上一步操作,7007成为了一个主节点,但是目前还没有从节点,现在给它增加一个从节点7008。
第一步:将7008节点添加到集群中
命令:/usr/local/redis/redis-5.0.3/src/redis-cli --cluster add-node 172.19.206.207:7008 172.19.206:207:7001
第二步:进入 7008 这个节点,执行命令 cluster replicate 7007节点的id
命令:1、/usr/local/redis/redis-5.0.3/src/redis-cli -c -p 7008 -h 172.19.206.207
      2、cluster replicate 0197892b29048155077ee4d23dd5517737f40377 0197892b29048155077ee4d23dd5517737f40377为7007的节点id
经过上面2步,7008就作为了7007节点的从节点,可以执行 cluster nodes 命令查看。

八、删除一个从节点
删除从从节点:172.19.206.207:7008
命令:/usr/local/redis/redis-5.0.3/src/redis-cli --cluster del-node 172.19.206.207:7008 64805713b278b00282dda3424f962d6f9e5be298 64805713b278b00282dda3424f962d6f9e5be298这个为7008节点的节点id的值

九、删除一个主节点
删除主节点稍微麻烦一点,如果主节点中存在槽,那么需要先将槽分配给其它的主节点。
删除主节点:172.19.206.207:7007

1、归还槽

 技术图片

 

 

2、删除节点
命令: /usr/local/redis/redis-5.0.3/src/redis-cli --cluster del-node 172.19.206.207:7007 0197892b29048155077ee4d23dd5517737f40377

至此,一个redis5的集群的搭建以及简单的维护就搭建好了。
————————————————
版权声明:本文为CSDN博主「huan_1993」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fu_huo_1993/article/details/88350198

redis5集群搭建

标签:有一个   进入   inf   部分   创建   des   node   wget   复制   

原文地址:https://www.cnblogs.com/krystal-LA-zx/p/12119296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!