redis的集群(伪集群)

一台虚拟机搭建redis的集群(3主3从)

1.首先在你自己的redis安装目录下分别创建一个

创建集群配置文件夹:mkdir cluster-conf
                  cd cluster-conf

2.创建集群端口文件夹:

mkdir 7001 7002 7003 7004 7005 7006

3.进入7001文件夹,复制redis.conf配置文件 和 redis安装后的bin目录(拷贝的指令这里忽略了)

4.修改配置文件:vim conf/redis.conf(这根据自己文件目录)

port 7001
logfile "/usr/local/redis/cluster-conf/7001/redis.log"
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
  • #端口号port
  • #指定了记录日志的文件。logfile
  • #是否开启集群:cluster-enabled
  • ##集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突

cluster-config-file nodes.conf

  • #节点互连超时的阀值。集群节点超时毫秒数 :cluster-node-timeout
  • #默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。:appendonly

注意:在这里还要绑定ip地址,要不然后面集群可能报错

5.复制redis.conf和bin至7002并修改端口及存储路径

同样修改redis.conf文件如下图:(其实和7001中修改是基本类似的,只是改变端口而已)

同样需要bind 0.0.0.0

以此类推分别拷贝redis.conf文件和bin目录到7003 7004 7005 7006,然后修改redis.conf文件和bind 0.0.0.0

6.上面全部修改之后我们就可以启动redis了

注意启动的时候要分别进入相对应的7001 7002...要不然产生的集群的节点文件nodes.conf只有一个

[root@localhost 7001]# ./bin/redis-server ./conf/redis.conf 

然后我们看看redis的启动情况:

6台redis都启动成功了。

7。创建集群(以下语句可能报错,下面有解决办法)注意这个ip要写自己主机的ip不要写127.0.0.1,要不然后面用jedisCluster客户端测试会报错的。

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

以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。命令的意义如下:

1、给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。

2、选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点(百分比 选举master按先后顺序)。

3之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。

注意上面的执行的指令要指定到redis源码包中src下,或者进去src下

 

注意如果执行上面的语句报错: (三个基本都需要安装)

一、在执行./redis-trib.rb create报
/usr/bin/env: ruby: No such file or directory
解决:yum install ruby


二、在执行./redis-trib.rb create报
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
解决:yum install rubygems

在执行./redis-trib.rb create报
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
解决:gem install redis


不过还有可能在执行gem install redis时,提示如下错误:

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

CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2,采用rvm来更新ruby:

1、安装RVM(具体命令可以查看官网,Ruby官网地址Ruby官网安装教程):

//具体RVM安装命令地址:http://rvm.io/
  [root@localhost redis-3.2.9]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB 

  [root@localhost redis-3.2.9]# curl -sSL https://get.rvm.io | bash -s stable

  [root@localhost redis-3.2.9]# find / -name rvm -print

输出:(和我输出应该是不太一样的,因为我这是安装ruby2.4.1之后的)

source /usr/local/rvm/scripts/rvm    

2、查看rvm库中已知的ruby版本:

rvm list known

 3、安装一个ruby版本:(自己选择)

rvm install 2.4.1

4、使用一个ruby版本:

rvm use 2.4.1

输出:

5、设置默认版本:(设置ruby2.4.1为默认的ruby,因为还安装有其他的版本)

rvm use 2.4.1 --default

6、卸载一个已知版本:

rvm remove 2.0.0

7、查看ruby版本:

ruby --version

8、安装redis:

gem install redis

然后就可以执行以下语句了(一定要指定redis源码的目录下src

ruby 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 

如果集群成功后会显示以下:

 上面的一些字段的含义如下:

节点ID:如702ab73495433a291966fc379b69d4bf0a75ab6c

IP:端口:192.168.37.129:7001

标志: master, slave, myself, fail

如果是个从节点, 后面的节点id是它的主节点的NODE ID

集群最近一次向节点发送 PING 命令之后, 过去了多长时间还没接到回复。.

节点最近一次返回 PONG 回复的时间。

本节点的网络连接情况

节点目前包含的槽:例如 192.168.37.129:7001 目前包含号码为 0至 5460的哈希槽(master)。

8.查看

 ps -ef |grep redis或者netsta -tnlp |grep redis

[root@localhost 7001]# ./bin/redis-cli -c -p 7001

表示安装成功了

注意:

如果你的集群是不是第一次启动的,有可能报以下的错。

解决方法:

删除7001。。。7006目录下的dump.rdb,(appendonly.aof)和node.conf后,又杀掉所有redis进程,然后重启redis集群搞定

到此redis的集群就搭建完毕,多台主机也是同样的道理。

猜你喜欢

转载自blog.csdn.net/qq_40368860/article/details/85094681