由于机器数量有限,以单机多实例方式模拟redis集群
8实例,4主4从集群模式
1、src目录下编译
make MALLOC=libc
2、 创建目录
cd redis-5.0.0/
mkdir redis-cluster
确认端口没被占用
netstat -anp |grep “7001|7002|7003|7004|7005|7006”
cd redis-cluster/
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
mkdir 7007
mkdir 7008
3、移动配置文件并修改
cd redis-5.0.0/
cp redis.conf redis-cluster/7001
修改配置文件:
vim redis.conf
daemonize yes #后台启动
port 7001 #修改对应端口
bind 127.0.0.1 #必须要绑定当前机器的IP
dir /redis-5.0.0/redis-cluster/7001/ #指定持久化数据文件存放位置,不同实例必须要配置不同目录,不然会造成数据丢失,因为一个master存放一部分数据
cluster-enabled yes #启动集群模式
cluster-config-file nodes-7001.conf #每个节点对应一个文件,让集群中其他节点知道,文件最好与端口对应
cluster-node-timeout 5000 #集群失效时间,单位ms
appendonly yes #开启AOF持久化模式
7002~7008的对应修改
4、分别启动8个redis实例,检查是否启动成功
/redis-5.0.0/src/redis-server …/redis-cluster/700*/redis.conf
检查是否成功:
ps -ef|grep redis
netstat -anp |grep 700*
netstat -tunpl |grep redis
集群模式搭建,5.0之后redis抛弃了ruby,将命令集成到redis-cli中,所以后面分两部分讲解搭建步骤!
5、创建集群
5.0之前的版本
(1) 安装ruby
redis集群脚本使用ruby开发,所以需要安装ruby
下载最新版的 Ruby 压缩文件。请点击这里下载。
下载 Ruby 之后,解压到新创建的目录下:
tar -zxvf ruby-2.5.3.tar.gz
cd ruby-2.5.3/
现在,配置并编译源代码,如下所示:
./configure
make
sudo make install
安装后,通过在命令行中输入以下命令来确保一切工作正常:
ruby -v
gem install redis #安装ruby和redis的接口
报错1:
[root@test /]# gem install redis
ERROR: Loading command: install (LoadError)
cannot load such file – zlib
ERROR: While executing gem … (NoMethodError)
undefined method `invoke_with_build_args’ for nil:NilClass
解决1:
安装zlib开发库
yum install zlib-devel
cd /ruby-2.5.3/ext/zlib/
将zlib集成到ruby
ruby extconf.rb
vim /ruby-2.5.3/ext/zlib/Makefile
将:zlib.o: $(top_srcdir)/include/ruby.h
改为:zlib.o: …/…/include/ruby.h
继续
make
make install
再次
gem install redis
报错2:
[root@test1 zlib]# gem install redis
ERROR: While executing gem … (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources
解决2:
安装openssl库
yum install openssl-devel
将openssl集成到ruby
cd /ruby-2.5.3/ext/openssl/
ruby extconf.rb --with-openssl-include=/usr/include/openssl --with-openssl-lib=/usr/lib64/openssl/engines
同样修改Makefile中所有的$(top_srcdir)为…/…
make
sudo make install
再次gem install redis成功!
(2)使用redis-trib.rb创建集群
cd /redis-5.0.0/src/
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007127.0.0.1:7008
#–replicas 1表示master与slave的比值,并且以命令行中ip的顺序为主,分配时前面的为master,后面的为slave。
自动出配置方案,接受yes,集群创建完毕。
5.0之后(包含5.0)的版本
(1)使用redis-cli命令创建集群
cd /redis-5.0.0/src/
./redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007 127.0.0.1:7008 --cluster-replicas 1
#–cluster-replicas 1表示master与slave的比值,并且以命令行中ip的顺序为主,分配时前面的为master,后面的为slave
显示如下,系统自动分配master和slave
确定分配输入yes
创建成功:
注:上面主节点有slots,从节点没有slots,因为从节点不支持写操作。<\font>
6、启动集群
/redis-5.0.0/src/redis-server …/redis-cluster/700*/redis.conf
7、删除集群
卸载或重新安装Redis集群
停止当前Redis集群各节点的服务,然后删除对应的数据文件 .aof 和配置文件 .conf
删除存放集群信息的nodes.conf
删除存放aof持久化日志的.aof文件