使用单个阿里云esc服务器搭redis集群+过程出现的错误和解决

版权声明:转载请注明来源 https://blog.csdn.net/tangyuan_sibal/article/details/88097191

前言:使用工具:阿里云服务器Ubuntu1.6
redis+ruby脚本文件链接:https://pan.baidu.com/s/1oPDPRhx_ndMAG6JvaRa4og
提取码:iaq1

1、首先搭建redis集群需要6台服务器,因为redis-cluster架构
在这里插入图片描述
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

中第二点说明要判断一个节点是否挂掉,需要采用投票机制,只有超过一半才能决定是fail,所以应该有三个节点,这个机制才有可能实现,而集群中的每一台又应该有个备份机,所以应该有6个节点。
所以我们就要购买6台服务器,阿里云服务器esc最少也要一年100吧,所以想要搭个集群,挖槽要600。。。。,但是为了节省钱,我们采用伪分布式,就是我们将6个节点全部装在一个服务器上,即每个redis我们使用不同的端口来实现。
(1)创建6个redis
在云盘链接里面有个redis3.0.0压缩包,将他上传到服务器上面

tar zxvf redis-3.0.0.tar.gz

解压完成后,我们将其移动到/usr/local目录下面,当然想移动到哪里都可以

cp redis-3.0.0.0 /usr/local

在这里插入图片描述
可以看到在/usr/bin目录下面有
在这里插入图片描述
这么些文件
其中redis-server是用来启动redis服务的
redis-cli是用来进入命令行
这个redis.conf文件是用来配置redis运行的
(2)创建一个redis-cluster文件夹,用来放我们六个集群的

mkdir  ../redis-cluster

然后将这个redis的bin复制6份

cp redis/bin redis-cluster/redis01 -r
cp redis/bin redis-cluster/redis02 -r
cp redis/bin redis-cluster/redis03 -r
cp redis/bin redis-cluster/redis04 -r
cp redis/bin redis-cluster/redis05 -r
cp redis/bin redis-cluster/redis06 -r

因为复制的是文件夹,所以要加-r不然是复制不了的
创建好文件夹之后,配置一下端口和集群设置(每一个都要)
(3)配置redis.conf

vim redis.conf

在这里插入图片描述在这里插入图片描述
首先将daemonize 改为yes,这样我们启动redis时候就会在后台,不会出现那个奥特曼的图像,然后cluster-enabled yes 注释给取消掉,最后就是port端口,六个端口分别为7001 7002 7003 7004 7005 7006
(4)启动redis
因为一个个启动很麻烦,我们可以写个脚本文件start-all.sh
在redis-cluster目录下

vim start-all.sh

输入下面的代码

cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..

在这里插入图片描述
然后保存,这时候这个文件还不能运行的,因为我们没有权限,使用

chmod u+x start-all.sh

更改为当前用户可以使用权限
在这里插入图片描述

扫描二维码关注公众号,回复: 5569216 查看本文章

这时候就可以运行了

./start-all.sh

然后我们可以查看一下当前6个redis运行的状态
在这里插入图片描述
可以看到6个redis运行在我们设置的端口上面。
(5)设置集群
设置集群需要用到一个ruby文件如图所示。在这里插入图片描述

而运行这个文件需要安装ruby环境和一个库,这个库也就是网盘文件中的redis-3.0.0.0.gem,将这个文件也上传到服务器
在这里插入图片描述

然后运行下面两条命令安装ruby

sudo apt-get install ruby
sudo apt-get install rubygems

安装好再安装redis-3.0.0.0.gem

gem install redis-3.0.0.0

在这里插入图片描述

安装完成之后就可以开始设置集群了,但是在这之前,如果你跟我一样使用的是云服务器,这个时候先不能设置,你需要做的是
①到阿里云服务器上设置安全组规则,把集群总线端口和客户端连接端口都开放了,而集群总线端口根据官方文档的说明是==客户端连接端口+10000,也就是说你如果刚才设置的redis端口是7001,所以集群总线的端口就是17001,所以到阿里云服务器的安全组把这些都加上
在这里插入图片描述
出/入方向都要配置
②在服务器上用firewall或者iptables把这些端口也打开
我这里使用的是firewall
如果没有安装firewall,安装一下

sudo apt-get install firewalld

然后打开端口
firewall命令如下,需要把

firewall-cmd --zone=public --add-port=7001/tcp --permanent         #开放端口(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload                                            #重新载入规则
firewall-cmd --zone= public --query-port=7001/tcp                  #查看端口是否开放
firewall-cmd --zone= public --remove-port=7001/tcp --permanent     #取消开放端口

把7001–7006和17001-17006全部打开,
这个时候才可以开始配置集群

./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006

其中的192.168.25.153改成你自己的公网ip地址
当你看到在这里插入图片描述
到ok的时候说明配置成功了
而如果你一直卡在waiting for the cluster join…
在这里插入图片描述

说明你端口没有配置好

这时需要把端口根据我上面的配置好,而且你要重新清空每个redis的生成文件和数据仓库
①删除生成的文件
在这里插入图片描述②清空每个redis的仓库
在这里插入图片描述
然后再重新运行上面的语句就可以成功了
(6)测试
启动redis01

redis-cli -p 7001

在这里插入图片描述
发现set a 123时出现错误,这是因为redis不知道你启动的是集群,需要加上-c

redis-cli -p 7001 -c

在这里插入图片描述
set a的值被放到7003的槽中,再多试几个
在这里插入图片描述
可以发现基本是均匀分布的,这样就完成了一个服务器搭建redis集群了

猜你喜欢

转载自blog.csdn.net/tangyuan_sibal/article/details/88097191
今日推荐