linux中搭建redis集群并测试

简介

在前面我们介绍过redis的单机部署,但是在实际的工程应用中,我们主要使用的redis的集群,redis集群可以自动将数据部署到多个redis节点中。

redis集群数据分片:redis集群中有16384个hash slots,为了计算给定的key对应到哪个slot中,通常计算给定的key的CRC16的值来对16384取模,来确定key对应的slot。所以,理论上redis集群中,最多可有16384个节点。由于redis采用分片处理数据的方式,如果某个master节点挂了,并且没有slave节点的话,则redis集群也就挂了,因为部分数据将无法存储。

redis集群采用主从模式,为了保持集群的高可用性,redis集群采用master-slave的方式,即1个master节点可以包含多个slave节点,slave节点主要对master节点的数据进行备份,也就master节点的备份,如果master节点挂了,可以启动salve节点替换掉原先的master节点,作为新的master节点。

redis集群没有统一的入口,客户端连接集群的时候,连接集群中的任意节点即可。

redis集群使用投票容错机制,如果集群中超过半数以上的节点投票认为某节点挂了,那么这个节点就会被认为挂掉了,所以,在设置redis集群是,最少的master节点为3个,如果每一个master节点都添加一个slave节点的话,搭建一个redis集群总共需要6个节点,即3个master节点,3个slave节点。

步骤

1、获取源码包

wget http://download.redis.io/releases/redis-3.0.0.tar.gz

2、解压redis

tar xzf redis-3.0.0.tar.gz

3、切换目录编译源码

cd redis-3.0.0
make

4、安装(将redis安装到usr/local/redis目录下面)

make install PREFIX=/usr/local/redis

5、将配置文件redis.conf和src/redis-trib.rb拷贝到安装目录下,并将目录切换到/usr/local/redis/bin/下(方便后续操作)

#拷贝配置文件
cp redis.conf /usr/local/redis/bin/
#拷贝redis-trib.rb文件
cp src/redis-trib.rb /usr/local/redis/bin/
#切换到/usr/local/redis/bin/目录下
cd /usr/local/redis/bin/

6、在bin目录下创建redis_cluster目录,并在redis_cluster下分别创建7000,7001,7002,7003,7004,7005目录,用于存放每个redis节点的配置文件,文件的名称可以以其他的名字命名,这里以端口号的方式命名,主要是为了方便查看。

mkdir -p redis_cluster/7000
mkdir -p redis_cluster/7001
mkdir -p redis_cluster/7002
mkdir -p redis_cluster/7003
mkdir -p redis_cluster/7004
mkdir -p redis_cluster/7005

7、将redis.config拷贝到redis_cluster/7000目录下,并进行修改配置文件

#将redis拷贝到redis_cluster/7000目录下
cp redis.conf ./redis_cluster/7000
#编辑redis.conf
vi ./redis_cluster/7000/redis.conf

修改redis的配置文件中的一下内容

port  7000             
bind 本机ip  //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes     //redis后台运行
pidfile  /var/run/redis_7000.pid          //后台启动时,redis会写一个pid file
cluster-enabled  yes              //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成
cluster-node-timeout  15000            //请求超时  默认15秒,可自行设置
appendonly  yes           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志

8、将redis_cluster/7000目录下的配置文件redis.conf分别拷贝到redis_cluster/7001、redis_cluster/7002、redis_cluster/7003、redis_cluster/7004、redis_cluster/7005中,然后修改配置文件。

#拷贝redis配置文件
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7001/
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7002/
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7003/
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7004/
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7005/

并使用‘%s/原string/替换内容/g’命令对拷贝的文件内容进行替换,其中/g表示进行全文替换。以redis_cluster/7001/redis.conf的配置文件修改为例,首先使用vi命令,编辑redis_cluster/7000/redis.conf文件。

vi ./redis_cluster/7001/redis.conf

输入":%s/7000/7001/g"后,

会提示更改了3行

然后,使用“:wp”对当前配置文件保存。同样,对其他的配置文件进行相同的操作,完成配置文件的修改。

9、通过指定配置文件的方式,分别启动6个redis节点。如果闲太麻烦,也可以建立start.sh,将节点的启动改为脚本文件的方式。

#启动第一个redis节点
./redis-server ./redis_cluster/7000/redis.conf
#启动第二个redis节点
./redis-server ./redis_cluster/7001/redis.conf
#启动第三个redis节点
./redis-server ./redis_cluster/7002/redis.conf
#启动第四个redis节点
./redis-server ./redis_cluster/7003/redis.conf
#启动第五个redis节点
./redis-server ./redis_cluster/7004/redis.conf
#启动第六个redis节点
./redis-server ./redis_cluster/7005/redis.conf

10、通过ps -ef | grep redis检测6个节点的redis是否启动成功,如下图,表示启动成功

linux中搭建redis集群并测试_第1张图片

11、至此,六个节点的redis启动成功,在很大程度上,跟单机的redis的部署相同,只是配置文件的修改不一样。接下来开始通过redis-trib.rb搭建集群,因为redis-trib.rb运行需要依赖ruby的运行环境,就像java需要运行在jvm上一样,因此,需要首先安装ruby

yum install ruby

12、然后安装redis-3.0.0.gem包(这个包需要提前下载,并拷贝到linux机器上,下载地址,由于csdn上下载所需积分比较多,大家也可以直接在浏览器中搜索下载)

gem install redis-3.0.0.gem

13、安装完成后,使用./redis-trib.rb脚本建立集群,其中,ip换成自己的ip地址,--replicas参数表示每个master节点的slave节点的个数。这里因为每个master节点只有一个slave节点,所以设置为1.

./redis-trib.rb create --replicas 1 ip:7000 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005

14、然后输入yes。输入yes之前的信息为创建集群所产生的配置信息、比如节点、nodeid,slave/master等,输入yes表示同意改配置,然后生效。

linux中搭建redis集群并测试_第2张图片

15、连接集群,其中-h表示主机的ip,这里需要改为自己的ip地址,-c连接集群,-p表示端口号。在最前面讲过,redis集群没有同意的入口,连接其中一个节点,就可以看到整个集群的信息。

 ./redis-cli -h 10.111.25.205 -c -p 7002

16、查看集群信息

cluster info
cluster nodes

至此已经完成了redis集群的搭建,在搭建过程中,其1-5个步骤是安装redis,与redis单机的部署相同。另外,对于集群设置key和获取key的值,与单机redis的命令相同,可以参考单机中的命令。

参考资料

redis集群搭建(非常详细,适合新手)

Redis集群搭建与简单使用

 

你可能感兴趣的:(redis,部署)