centos安装redis及集群


在很多应用中都需要使用redis进行缓存,这也是redis最主要的一个用途。然而当缓存到了一定大小时,一台服务器的容量也是有限,所以就出现了redis集群。

redis集群允许将缓存分配到多个服务器上共同协作。


本文中使用到的是centos6.8,redis-3.0.0.

一、安装redis相关环境

redis是C语言开发的,所以需要在服务器上安装gcc环境。

yum install gcc-c++
、安装redis

将redis-3.0.0.tar.gz拷贝到/usr/local下解压

tar -zxvf redis-3.0.0.tar.gz  
cd /usr/local/redis-3.0.0
make
## 安装到指定目录,如 /usr/local/redis  这里选择安装到/usr/local/redis中
cd /usr/local/redis-3.0.0 
make PREFIX=/usr/local/redis install

在redis中,redis.conf是redis的配置文件,将/usr/local/redis-3.0.0/redis.conf 拷贝到/usr/local/redis/bin中

cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis/bin/

此时在 /usr/local/redis/bin中运行  ./redis-server 就能启动成功redis了

centos安装redis及集群_第1张图片

默认监听 6379 端口,但是这种启动方式:当将终端关闭后,redis-server也会跟着关闭,这不是我们想要的。所以需要后端模式启动

在redis.conf文件中修改后端模式 daemonize yes 

再次启动redis

./redis-server ./redis.conf

三、redis集群的搭建

以下是引用网上总结的集群实现细节。

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

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

(3)客户端与redis节点直连,不需要中间proxy.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot,cluster 负责维护node<->slot<->value

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,

** 在上面的介绍中说了集群中有(过半数的节点检测失效)。所以我们需要准备三台机器来作为服务器,同时为三台服务器分别准备一台备用

redis集群的搭建需要使用到Ruby环境,所以需要在服务器上安装Ruby环境

yum install ruby
yum install rubygems

这里在同一台服务器用不同的端口表示不同的redis服务器,如下:

主节点:192.168.0.120:7001 192.168.0.120:7002 192.168.0.120:7003

从节点:192.168.0.120:7004 192.168.0.120:7005 192.168.0.120:7006


在/usr/local中创建redis-cluster目录,创建7001...7006目录,并将 /usr/local/redis/bin目录下的文件拷贝到这6个文件夹中

然后分别修改redis.conf

[root@localhost redis-cluster]# vi 7001/redis.conf 
[root@localhost redis-cluster]# vi 7002/redis.conf 
[root@localhost redis-cluster]# vi 7003/redis.conf 
[root@localhost redis-cluster]# vi 7004/redis.conf 
[root@localhost redis-cluster]# vi 7005/redis.conf 
[root@localhost redis-cluster]# vi 7006/redis.conf 

port xxx 所在文件夹指定的端口

cluster-enabled yes


分别启动7001—7006中的redis,使用脚本/usr/local/redis-cluster/start.sh

#!/bin/sh

for i in 1 2 3 4 5 6
do
cd 700$i
./redis-server ./redis.conf
cd ..
done

ps aux | grep redis

centos安装redis及集群_第2张图片


执行ruby脚本,依赖ruby环境(这里用到redis-3.0.0.gem,)

将redis-3.0.0.gem拷贝至/usr/local

执行gem install /usr/local/redis-3.0.0.gem

在/usr/local/redis-3.0.0/src/中有文件:redis-trib.rb

运行:

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

注意:

如果执行时报如下错误:

[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aofdump.rdb

centos安装redis及集群_第3张图片

已经启动成功了。

现在登录集群,登录任意节点

[root@localhost 7001]# ./redis-cli -c -h 192.168.0.120 -p 7001
192.168.0.120:7001> set a name
-> Redirected to slot [15495] located at 192.168.0.120:7003
OK
192.168.0.120:7003> 


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