一、安装redis并启动
一二三步都是在一台linux上安装完成的,不是真正意义上的分布式集群
1.这里安装的是redis源码包,所以需要gcc环境支持:
yum install -y gcc-c++
2.从redis官网下载stable版包,如redis-3.2.9.tar.gz,上传至 /usr/local
然后解压
tar -zxvf redis-3.2.9.tar.gz
进入目录后进行编译:
cd /usr/local/redis-3.2.9
修改redis.conf IP地址
bind 192.168.186.132
make
make PREFIX=/usr/local/redis install
cp -r redis.conf /usr/local/redis/bin
3.修改redis.conf配置文件, 修改为daemonize yes(位置:128,1 10%) 以后端模式启动。
4.执行如下命令启动redis:
cd /usr/local/redis
./bin/redis-server redis.conf
二、redis集群配置
1.ruby环境
redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:
安装ruby
yum install -y ruby
yum install -y rubygems
安装ruby和redis的接口程序
gem install redis
2.集群结点规划:
这里在同一台服务器用不同的端口表示不同的redis服务器,如下:
主节点:192.168.186.132:7001 192.168.186.132:7002 192.168.186.132:7003
从节点:192.168.186.132:7004 192.168.186.132:7005 192.168.186.132:7006
在/usr/local下创建redis-cluster目录,其下创建7001、7002。。7006目录,如下:
mkdir redis-cluster
cd redis-cluster
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
3.将redis安装目录bin下的文件拷贝到每个700X目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下:
cd /usr/local/redis
cp -r bin/ /usr/local/redis-cluster/7001/
cp -r bin/ /usr/local/redis-cluster/7002/
cp -r bin/ /usr/local/redis-cluster/7003/
cp -r bin/ /usr/local/redis-cluster/7004/
cp -r bin/ /usr/local/redis-cluster/7005/
cp -r bin/ /usr/local/redis-cluster/7006/
cd /usr/local/redis-3.2.9
cp -r redis.conf /usr/local/redis-cluster/7001/bin
cp -r redis.conf /usr/local/redis-cluster/7002/bin
cp -r redis.conf /usr/local/redis-cluster/7003/bin
cp -r redis.conf /usr/local/redis-cluster/7004/bin
cp -r redis.conf /usr/local/redis-cluster/7005/bin
cp -r redis.conf /usr/local/redis-cluster/7006/bin
cd /usr/local/redis-3.2.9/src/
cp -r redis-trib.rb /usr/local/redis-cluster/
4.修改每个700X目录下的redis.conf配置文件:
bind IP地址 --修改成本地IP地址(如虚拟机192.168.186.132)
port XXXX --修改成对应目录号即可
cluster-enabled yes
启动每个节点redis服务
分别进入7001、7002、...7006目录,执行:
./redis-server redis.conf
三、创建集群
1.执行创建集群命令
在/usr/local/redis-cluster/
执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。
./redis-trib.rb create --replicas 1 192.168.186.132:7001 192.168.186.132:7002 192.168.186.132:7003 192.168.186.132:7004 192.168.186.132:7005 192.168.186.132: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.aof、dump.rdb
2.查询集群信息
集群创建成功登陆任意redis结点查询集群中的节点情况
cd /usr/local/redis-cluster/7001/bin
./redis-cli -h 192.168.186.132 -p 7001
四、分布式集群部署
redis集群至少一般用三台服务器,每台服务器上创建两个节点,属于分布式;其它少于三台部署的集群都是伪分布式。
针对这种部署方式只需分别在三台服务器上创建两个节点,配置同上所述,配置完成后再任意一台服务器进入/usr/local/redis-cluster/目录下,执行
./redis-trib.rb create --replicas 1 IP1:port1 IP1:port2 IP2:port3 IP2:port4 IP:3:port5 IP3:port6
注意这里的IP:port包含三台服务器的六个节点