开门见山的说
redis3.0以后推出redis cluster 集群方案,redis cluster集群保证了高可用、高性能、高可扩展性。拿我们没道理不来玩一下这个集群
说明:
- 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
- 节点的fail是通过集群中超过半数的节点检测失效时才生效.
- 户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
- redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value
开始搭建
首先说明,使用的环境是ubuntu16.4,按理来说centos也没啥问题
在local文件夹里创建项目
mkdir software
进入项目
cd /usr/local/software/
下载redis安装包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
下载完成后我们正式开始安装
安装部署redis
解压文件夹
tar zxvf redis-5.0.5.tar.gz
重命名文件夹
mv redis-5.0.5 redis
安装redis
make && make install
假如安装过程中出现了错误,十有八九是没有gcc的锅,安装一个就可以了
yum install gcc
redis配置文件部署
安装完成后,进入redis下的src文件夹,将redis-trib.rb 复制到 /usr/local/bin
cd /usr/local/software/redis/src
cp redis-trib.rb /usr/local/bin
然后进入local下,创建一个redis-cluster文件夹,这里放redis节点(由于是一台服务器,所以一台服务器上创建六个节点来模拟集群)
cd /usr/local/
mkdir redis-cluster
然后进入redis-cluster,创建六个节点文件,redis1-redis6
cd redis-cluster/
mkdir redis1 redis2 redis3 redis4 redis5 redis6
然后进入每个节点文件,创建data和logs文件,
cd redis1
mkdir data logs
接着复制redis目录下的redis.conf到每个节点文件中
cp redis.conf /usr/local/redis-cluster/redis1
然后进入src目录,继续复制redis-cli,redis-server
cp redis-cli redis-server /usr/local/redis-cluster/redis1
修改配置文件
分别进入到每个节点文件下,修改redis.conf的信息
cd /usr/local/redis-cluster/redis1
vi redis.conf
修改内容为
port 7001 //端口7001,7002,7003,7004,7005,7006
bind 192.168.11.11 //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /usr/local/redis-cluster/redis1/redis_7001.pid //pidfile文件对应7001,7002,7003
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7001.conf //集群的配置 配置文件首次启动自动生成 7001,7002,7003
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //开启aof
logfile "/usr/local/redis-cluster/redis1/logs/redis_7001.log" //配置日志输入路劲 7001 7002 7003
dir "/usr/local/redis-cluster/redis1/data" //配置数据文件存放路劲
修改完成后,进行下一步
运行redis
cd /usr/local/redis-cluster/redis1
./redis-server redis.conf
执行完成后,查看redis启动情况,指令如图
创建集群
redis新版本使用c代替了ruby的启动方式,所以直接使用新版本命令启动就完事了
redis-cli --cluster create 192.168.80.241:7001 192.168.80.241:7002 192.168.80.241:7003 192.168.80.241:7004 192.168.80.241:7005 192.168.80.241:7006 --cluster-replicas 1
至此一个redis集群就搭建完成了
验证
# 连接其中一个redis节点
/usr/local/redis-cluster/redis1# redis-cli -c -h 192.168.80.241 -p 7001
# 判断是否在集群中
cluster nodes