1、前言
由于服务器资源有限,只能在一台服务器上开多个端口,启用多个实例模拟集群效果,redis版本使用的是最新稳定版5.0.5,新版本已经放弃Ruby的集群方式,改用redis-cli方式,使得集群的构建复杂度大大的降低,感兴趣的可以到官网看看:https://redis.io/topics/cluster-tutorial
2、安装步骤
1、创建目录并下载redis、解压 、编译
// 创建文件夹redis
mkdir /root/redis
// 进入redis文件夹并下载redis-5.0.5
cd /root/redis
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
// 解压压缩包并编译
tar -zxvf redis-5.0.5.tar.gz
cd redis-5.0.5
make
2、创建文件夹redis-cluster,并且在这个文件夹里创建7001-7006 文件夹,复制6份redis.conf到对应文件夹里
mkdir redis-cluster
mkdir 7001 7002 7003 7004 7005 7006
// 复制6份redis.conf到7001-7006文件夹中
cp /root/redis/redis-5.0.5/redis.conf /root/redis/redis-cluster/7001/redis.conf
cp /root/redis/redis-5.0.5/redis.conf /root/redis/redis-cluster/7002/redis.conf
cp /root/redis/redis-5.0.5/redis.conf /root/redis/redis-cluster/7003/redis.conf
cp /root/redis/redis-5.0.5/redis.conf /root/redis/redis-cluster/7004/redis.conf
cp /root/redis/redis-5.0.5/redis.conf /root/redis/redis-cluster/7005/redis.conf
cp /root/redis/redis-5.0.5/redis.conf /root/redis/redis-cluster/7006/redis.conf
3、编辑配置文件redis.conf,各自的配置文件改为各自对应的端口
port 7001 #端口
cluster-enabled yes #打开集群模式
cluster-config-file nodes-7001.conf #集群节点信息
daemonize yes #后台运行
protected-mode no #关闭非保护模式
pidfile /var/run/redis_7001.pid
4、启用6台实例
/root/redis/redis-5.0.5/src/redis-server /root/redis/redis-cluster/7001/redis.conf
/root/redis/redis-5.0.5/src/redis-server /root/redis/redis-cluster/7002/redis.conf
/root/redis/redis-5.0.5/src/redis-server /root/redis/redis-cluster/7003/redis.conf
/root/redis/redis-5.0.5/src/redis-server /root/redis/redis-cluster/7004/redis.conf
/root/redis/redis-5.0.5/src/redis-server /root/redis/redis-cluster/7005/redis.conf
/root/redis/redis-5.0.5/src/redis-server /root/redis/redis-cluster/7006/redis.conf
查看是否6个实例都正常启动
ps -ef|grep redis
5、启动集群
/root/redis/redis-5.0.5/src/redis-cli 公网ip:7001 公网ip:7002 公网ip:7003 公网ip:7004 公网ip:7005 公网ip:7006 --cluster create --cluster-replicas 1
如果这个命令执行后一直卡住不动,那应该是端口IP未开放,开放7001-7006端口
// 返回success及表示成功,其他端口也依照此开放
firewall-cmd --add-port=7001/tcp --permanent
// 需要重新加载防火墙配置才生效
firewall-cmd --reload
然后登陆对应服务器控制台(我用的是阿里云),设置安全组放心7001-7006端口,然后再从新启动集群
如果出现如下图情况,应该是集群总线端口未开放,集群总线端口为客户端端口+10000
// 依次开放17001 - 17006 端口
firewall-cmd --add-port=17001/tcp --permanent
// 都开放好后需要重新加载下防火墙配置
firewall-cmd --reload
然后重新启动集群,出现这个说明集群启动成功
测试:
// 以集群方式连接端口为7001的redis
/root/redis/redis-5.0.5/src/redis-cli -h 114.55.37.17 -p 7001 -c
// 随意设置一个值
set a b
可以发现,redis通过计算后将该值存在了端口为7003的实例中
// 查看集群节点信息
cluster nodes
可以看到有三个主节点,三个从节点
// 查看集群状态信息
cluster info