redis集群搭建及简单使用

最近项目需要配置redis集群以提高项目可靠性,网上很多教程,主要参考这个在这里就当做个笔记吧

1.下载redis安装包,下载ruby安装包(虽然可以用yum install ruby直接安装,但是经常会出现安装的版本太低还是需要手动安装的情况),然后就是编译安装这两个安装包了解压进入安装包,./configure ,make && make install 

之后安装yum install rubygems

gem install redis

2.新建6个目录,分别以端口为目录名,然后把编译结果复制到6个文件夹底下,redis集群要求必须有3个master,6台节点,所以需要6个,只有三个节点无法启动成功。

3.修改配置文件

主要修改这几个,其中主要是端口号相关的东西,然后复制到不同的目录(机器上)

bind 172.16.0.71
port 9001
daemonize yes
pidfile /var/run/redis_9001.pid
logfile ./9001.log

dir ./data

cluster-enabled yes
cluster-config-file nodes-9001.conf
cluster-node-timeout 15000

修改完配置后就可以到各个目录逐一启动服务了,启动结果如图所示:

 

redis集群搭建及简单使用_第1张图片

可以看出,没有配置集群状态的机器后面是没有带[cluster]这个后缀的。

4.启动集群

原本的命令./redis-trib.rb create --replicas 1 172.16.0.71:9001 172.16.0.71:9002 废弃了,提示改用redis-cli

WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.

All commands and features belonging to redis-trib.rb have been moved to redis-cli.
In order to use them you should call redis-cli with the --cluster
option followed by the subcommand name, arguments and options.

Use the following syntax:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]

Example:
redis-cli --cluster create 172.16.0.71:9001 172.16.0.71:9002 --cluster-replicas 1

然后执行以下命令就可以顺利启动集群了。

 ./redis-cli --cluster create  172.16.0.71:9001 172.16.0.71:9002 172.16.0.71:9003 172.16.0.71:9004 172.16.0.71:9005 172.16.0.71:9006    --cluster-replicas 1

redis集群搭建及简单使用_第2张图片

然后连接集群中的一台机器:

[root@spider01 9001]# ./redis-cli -h 172.16.0.71 -p 9003
172.16.0.71:9003> set hello zillo 
(error) MOVED 866 172.16.0.71:9001
172.16.0.71:9003> keys *

出现报错,百度发现是连接集群少了一个-c命令,改用./redis-cli -c  -h 172.16.0.71 -p 9003就可以顺利设置键值对了。

redis集群搭建及简单使用_第3张图片

集群配置成功。

几个简单集群查看命令:

集群
cluster info :打印集群的信息
cluster nodes :列出集群当前节点的相关信息。

有些参数是可以动态配置的,但是集群状态下是不可用的

单机状态下可以通过,config set xxx来配置,

通过config get 查看支持动态修改的配置信息:

 

参考博客:Redis 集群搭建详细指南 - Mafly - 博客园
https://www.cnblogs.com/mafly/p/redis_cluster.html

----------------redis4.0集群安装及简单运维---------------

1.4 使用redis-trib.rb连接集群

./redis-trib.rb  create --replicas 1  192.168.6.1:22400 192.168.6.1:22401 192.168.6.2:22400  192.168.6.2:22401 192.168.6.3:22400 192.168.6.3:22401 启动集群,注意这个是有顺序的,最好将master和slave放在不同的机器上,命令中默认为一个master接一个slave,也就是奇数为master,偶数为slave。要使用redis-trib.rb,需要安装ruby环境和rubygems工具,具体的网上搜一下,有很多教程。

1.4.1常见报错:

节点数不足:上面replicas 1 是指定副本数为1,如果不指定的话会报错节点数不足。

集群节点不为空,redis集群启动时需要每个节点的数据库为空库状态,如果有一个节点存有数据则会报错节点不为空,可以客户端连接上服务器然后通过flushall 来清空数据库,最好顺便执行cluster reset来重置节点的集群状态(最好所有服务节点都执行一下以上命令)。

集群启动成功后可以通过cluster nodes查看集群节点状态,通过cluster info查看集群状态。启动成功如下图所示

1.5 节点退出重连

如果是slave 节点的话,挂掉一段时间内重启是能够被集群自动发现的,主节点挂掉的话重启后需要手动添加节点到集群中。

 

使用./redis-trib.rb add-node 192.168.6.2:22400(重启的节点) 192.168.1.22400(集群中节点)将节点添加到集群中,但是这样会以master的方式加入,redis节点中的数据没有丢失,如图所示

可以看到原来的slave变成了master,所以正确的方式应该是把宕机的几点以slave的方式添加为原来节点的slave,也就是主从调换了。启动节点后需要将其清空,flushall 然后cluster reset 重置节点状态,这样才能让集群接受节点的加入。使用命令

redis-trib.rb add-node --slave --master-id f413fb7e6460308b17cdb71442798e1341b56cbc(要同步的masterID) 192.168.6.7:22400(重启的节点) 192.168.6.7:22401(集群中任意节点) 将节点添加到集群。

----------------------

你可能感兴趣的:(redis集群搭建及简单使用)