Ubuntu服务器配置Redis集群

配置前提

1.在ubuntu上安装Redis(3.0及以上)

2.在你的服务器控制台中打开7001~7006、17001-17006等12个端口。

前述

1.集群中至少应该有奇数个节点,所以搭建集群最少需要3台主机。同时每个节点至少有一个备份节点,所以下面最少需要创建使用6台机器,才能完成Redis Cluster集群。

2.但由于我们这里只是为了实践(主要是穷,只租了一台服务器),所以通过创建6个不同的redis实例,并分配给6个不同的端口来实现redis集群的配置。

3.Redis版本需要3.0以上的原因是因为只有3.0及以上才有redis cluster集群。

4.配置前提中的12个端口一定要打开,负责无法通过外网访问。

5.下面的安装流程能上图就上图,不能的话我就直接敲命令行了。

安装流程

1.在你的redis文件夹下创建一个redis_cluster文件夹(因为我的redis在/etc/redis,所以我的步骤如下)

cd /etc/redis               #进入redis文件夹
mkdir redis_cluster         #创建redis_cluster目录

成功之后,文件下出现redis_cluster文件夹
在这里插入图片描述
2.安装成功后,以端口号为命名,在redis_cluster文件夹下创建6个文件夹(我这里为7001、7002、…7006)

cd redis_cluster           #注释--进入redis_cluster文件夹,在其文件夹下创建目录
mkdir 7001                 #注释--此为示例,其它自己敲

成功之后,如下图
在这里插入图片描述
3.使用cp命令将redis.conf文件分别复制到7001~7006这6个目录下(我的这个文件就在redis目录下,若你的并不在,可以通过locate redis.conf 命令来查找这个文件的位置)
在这里插入图片描述
4.修改7001~7006这6个文件夹下的redis.conf的文件信息,通过vim编辑器修改redis.conf文件的以下信息

#bind 127.0.0.1                #注释掉bind或者改为0.0.0.0,即可以通过远程连接,那可通过外网连接
port  7001                     #修改为对应的port号
pidfile  /var/run/redis/redis-7001.pid  #修改对应的进程号,也可不改
cluster-enabled yes     #开启集群,去掉注释
cluster-config-file  nodes-7001.conf #修改为对应的端口号名
cluster-node-timeout 15000 #去掉注释,此为节点通信时间
requirepass    123456      #设置集群密码
masterauth     123456      #设置集群密码,这里设置密码的话,就需要在client.rb文件中将密码改成123456

5.因为你设置了集群密码,所以需要找到client.rb文件,然后修改password,没有设置的情况下,它是nil,你需要把它改成—“123456”(即你设置的集群密码)

6.启动这6个redis实例,即通过redis-server来启动7001~7006这6个文件夹下的redis.conf文件来创建6个redis实例(先找到redis-server的位置,一般在/usr/bin/文件夹下。6个都要启动,这里只给了一个示例)

/usr/bin/redis-server /etc/redis/redis_cluster/7001/redis.conf

7.通过以下命令查看其状态(后面的cluster即表明其是集群中的redis实例)

ps  -ef | grep -i redis

查询结果如下(若某一个实例后面没有【cluster】,则表明那个文件夹下的redis.conf中的cluster-enabled没有设置为yes)
后面的cluster即表明其是集群中的redis实例
8.官网提供了redis-trib.rb工具来创建集群,所以先找到这个redis-trib.rb这个文件,若在redis源文件中找到最好,若不这能,则通过locate redis-trib.rb找到这个文件的位置,将这个文件复制到/usr/bin/中,以便随时可以使用它。

9.通过以下命令在你的Ubuntu下面安装rudy``
(若没有安装rudy,而导致出现rudy:没有这个文件或者目录的错误提醒)

sudo apt-get update
sudo apt-get install ruby

10.安装成功之后,通过以下命令将redis与rudy进行连接

gem install redis 

(若没有进行连接会出现以下错误)
在这里插入图片描述

11.通过以下命令来创建集群(121.196.219.132是我的服务器的公网地址,这里需要填写你的,否则你不能在外网访问你的集群,比如在java代码中不能通过Jedis访问集群中的数据)

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

成功之后出现以下信息
在这里插入图片描述
过程中根据提示,输入yes,即可,成功后出现以下信息。

踩过的坑

创建集群时,出现连接不上集群–[ERR] Sorry, can’t connect to node 121.196.219.132:7001

(导致这种错误的原因各种各样,我在此即提几点要注意的地方)
1.注意bind的配置,bind即为你的redis服务器可被访问的ip,这里你最好就不设置,直接注销掉。

2.集群密码的设置,可按我在配置流程中的来,亲测有效。

3.检查6个实例的redis.conf文件是否配置对,是否有遗漏。

4.若还是找不出,可按下面的—出现结点不为空错误中的解决办法,来解决。

创建集群时,出现集群结点不为空错误–[ERR] Node 121.196.219.132:7001 is not empty. Either the nodealready knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

出现这种错误的原因是因为在多次尝试创建集群的过程中,非正常关闭redis。
在这里插入图片描述
解决办法如下,

  1. 首先删除掉新增的节点下aof、rdb等本地备份文件(aof文件为redis持久化所用的文件,若在对7001~7006文件夹下的redis.conf进行设置时,没有启动aof方式进行持久化,则不需要删除aof文件,rdb为redis以快照方式持久化所用的文件,需要找到删除)
  2. 同时将新Node的集群配置文件删除,即删除你redis.conf里面cluster-config-file所指定的文件,可通过locate nodes-7001.conf,找到该文件,将这六个文件都删除。(一般都会在一起的)在这里插入图片描述
  3. 将目前所有的redis进程都杀死,通过kill -9 pid号,将所有redis进程杀死。
  4. 启动这6个redis实例,即通过redis-server来启动7001~7006这6个文件夹下的redis.conf文件来创建6个redis实例(先找到redis-server的位置,一般在/usr/bin/文件夹下。6个都要启动,这里只给了一个示例)
/usr/bin/redis-server /etc/redis/redis_cluster/7001/redis.conf

5.通过以下命令查看其状态(后面的cluster即表明其是集群中的redis实例)

ps  -ef | grep -i redis

查询结果如下
后面的cluster即表明其是集群中的redis实例
6. 通过以下命令来创建集群

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

(至此应该是没有问题,成功装配成功的,若添加结点还是报错,可进入客户端,对数据库进行清除)
121.0.0.1:7001> flushdb #清空当前据库

Jedis访问集群时出现以下错误--------------------------------------------------org.springframework.data.redis.TooManyClusterRedirectionsException: No more cluster attempts left.; nested exception is redis.clients.jedis.exceptions.JedisClusterMaxAttemptsException: No more cluster attempts left.

解决办法:

这是因为你创建集群时命令为redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006,创建的集群是在局域网中,即只能通过服务器的客户端进行访问,不能通过外网访问。先在你的服务器中将17001~17006端口打开(控制台中打开),然后在服务器中输入命令redis-trib.rb create --replicas 1 121.196.219.132:7001 121.196.219.132:7002 121.196.219.132:7003 121.196.219.132:7004 121.196.219.132:7005 121.196.219.132:7006。

若你一直停在这一步,说明你的集群端口17001~17006端口没有打开
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章