redis多机多节点集群部署

纯手打,转载请附上本文网址!!!

工作之余学习代码,视频里讲到单机多节点redis集群部署,但是有一个问题就是如果机器挂掉了那么集群也挂掉了。于是自己就改了一下,改成了多机多集群部署。

先说说遇到的坑,解决办法会在文章最后给出(因为里面有些命令需要配置了之后才能用),感觉能踩的坑都让我踩遍了:

1、搭集群时需要使用到ruby脚本,但是使用yum -y install ruby之后,运行gem install redis-3.2.2.gem会出现错误:

ERROR: Error installing redis-4.0.0.gem: 
redis requires Ruby version >= 2.2.2.

2、redis创建集群失败,原因是redis.conf文件中的 bind 配置错误:

can't connect to node 192.168.*.* 

3、redis创建集群时显示错误:

[ERR] Node 192.168.186.91:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

4、redis创建集群时无错误,但是一直处于 Waiting for the cluster to join ......状态非常久,使用cluster meet ip port命令无效

现在开始部署步骤

1、visualbox搭建服务器集群

参考此篇文章 https://blog.youkuaiyun.com/XIANZHIXIANZHIXIAN/article/details/82468170

2、在每台机器上安装redis实例和ruby工具

a、安装redis参考这篇文章:https://blog.youkuaiyun.com/XIANZHIXIANZHIXIAN/article/details/79400601

b、安装ruby工具参考这篇文章:https://blog.youkuaiyun.com/XIANZHIXIANZHIXIAN/article/details/82391853

3、把redis-trib.rb移动到/usr/local/bin目录中

redis-trib.rb都在redis的源码包中的src目录中

4、配置每个节点的redis.conf文件

要部署几个redis实例就需要几个redis.conf文件,这里需要修改每个redis的配置redis.conf文件

bind 192.168.56.103               这里的IP改成当前redis实例所在机器的IP

port 7003                         这里的port改成当前redis实例通信的port

pidfile /var/run/redis_7003.pid   这个随便什么名字都可以,不过每个配置文件里的一定不能相同,我改成了port标识的

cluster-enabled yes               一定要改,开启redis的集群功能

cluster-config-file nodes-7003.conf   这个随便什么名字都可以,不过每个配置文件里的一定不能相同,我改成了port标识的

5、iptables和firewall配置

需要在iptables或者firewall中添加redis的通信端口和redis总线端口,iptables和firewall建议只用一个,如果不想用的话关闭就行了,省区一部分麻烦

redis总线端口参考这篇文章:https://blog.youkuaiyun.com/XIANZHIXIANZHIXIAN/article/details/82392172

iptables和firewall配置参考这篇文章:https://blog.youkuaiyun.com/XIANZHIXIANZHIXIAN/article/details/78918772

6、接下来启动所有的redis实例,进行集群“会面”了。连接不同的节点,激动人心的时刻到了

请不要照抄,依次类比你自己的IP和redis端口,修改即可

redis-trib.rb create --replicas 1  192.168.56.102:7001 192.168.56.102:7002 192.168.56.103:7003 192.168.56.103:7004 192.168.56.104:7005 192.168.56.104:7006

会出现以下提示,在这里Can I set the above configuration? (type 'yes' to accept): yes

请输入yes

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.56.102:7001
192.168.56.103:7003
192.168.56.104:7005
Adding replica 192.168.186.91:7003 to 192.168.56.102:7001
Adding replica 192.168.186.91:7004 to 192.168.56.103:7003
Adding replica 192.168.186.91:7005 to 192.168.56.104:7005
M: 319da27d8668a15d2d2d02afe433247694343459 192.168.56.102:7001
   slots:0-5460 (5461 slots) master
M: 3da756265e301ac0210760f13e990473f87a3017 192.168.56.103:7003
   slots:5461-10922 (5462 slots) master
M: 6f336da48c892d8e0c541a864765978ebfbca6d5 192.168.56.104:7005
   slots:10923-16383 (5461 slots) master
S: ff4cf9d8a141d85c478b9af0358c93bca342c236 192.168.56.102:7002
   replicates 319da27d8668a15d2d2d02afe433247694343459
S: 43c2e0d7799e84b449803a68d557c3431e9e047e 192.168.56.103:7004
   replicates 3da756265e301ac0210760f13e990473f87a3017
S: 3f174fae106cb6cf7e7f21ed844895ed7c18f793 192.168.56.104:7006
   replicates 6f336da48c892d8e0c541a864765978ebfbca6d5
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join....
[OK] All 16384 slots covered.

最后测试测试redis集群

redis-cli -h 192.168.56.102 -c -p 7001

恭喜,redis集群创建成功!!!给自己来点掌声吧

 

解决方法,对应文章开头问题1-4:

1、ruby版本过低解决办法:https://blog.youkuaiyun.com/XIANZHIXIANZHIXIAN/article/details/82391853

2、在redis.conf中添加bind选项,比如说你集群中某台机器的ip是192.168.56.102,bind就写 bind 192.168.56.102,以此类推即可

3、redis创建集群时显示错误:[ERR] Node xxx is not empty. 这是因为原来集群创建失败还有残余的文件未被删除,解决方法参考此篇文章:https://blog.youkuaiyun.com/XIANZHIXIANZHIXIAN/article/details/82777767

4、redis创建集群时无错误,但是一直处于 Waiting for the cluster to join状态非常久:https://blog.youkuaiyun.com/XIANZHIXIANZHIXIAN/article/details/82392172

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值