环境信息
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[root@localhost ~]# redis-server --version
Redis server v=6.0.6 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=b0ed8a8a364a67ae
说明
文章搭建的是伪分布式集群,因为我身边没有6台物理机,电脑也带不动6台虚拟机,我在同一台机器上用不同端口模拟了6台机器,将7001、7002、7003、7004、7005、7006
主要是因为穷
下载redis,上传到/opt目录
tar -zxf redis-6.0.6.tar.gz
cd cd redis-6.0.6/
make && make install PREFIX=/usr/local/installredis #指定redis安装路径
先准备出redis的一个实例redis01,然后复制出另外5份实例,最后更改配置文件即可
首先在/usr/local/下创建目录redis-cluster准备存放6个redis实例
cd /usr/local
mkdir redis-cluster
进入redis-cluster目录创建6个文件夹 redis01、redis02、redis…
cd redis-cluster
mkdir redis01 redis02 redis03 redis04 redis05 redis06
把redis安装路径下bin目录中的所有内容拷贝到redis01
cp -r installredis/bin/* redis01
此时redis01实例中还没有redis配置文件redis.conf,这个配置文件可以从redis解压目录拷贝,我的在/opt下
cp /opt/redis-6.0.6/redis.conf redis01
用vi或vim命令修改redis01的配置文件
vim redis01/redis.conf
下列图片是我7001节点上的配置,可以参考进行配置
pidfile /var/run/redis_7001.pid
cluster-config-file nodes7001
cluster-enabled yes(必须配置 启动集群模式)
bind 192.168.66.66 (必须绑定当前机器的IP地址,不然会无限悲剧,深坑误入)
dir 低版本需要制定,6.0.6默认是当前路径不用更改(指定数据文件存放的位置,必须指定为不同目录,不然会丢失数据,深坑误入)
appendonly yes
cp redis01/* redis02
cp redis01/* redis03
cp redis01/* redis04
cp redis01/* redis05
cp redis01/* redis06
分别用vi 或vim编辑各个实例的配置文件,此次修改仅仅需要关注7001的地方修改为对应端口
vim redis02/redis.conf
vim redis03/redis.conf
vim redis04/redis.conf
vim redis05/redis.conf
vim redis06/redis.conf
重要的事情说3遍
请检查配置
请检查配置
请检查配置
逐个启动太麻烦,在redis-cluster目录下创建脚本文件start-all.sh
vim start-all.sh
将一下内容输入脚本保存
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
将start-all.sh 改为可执行文件
chmod u+x start-all.sh
./start-all.sh
启动所有实例
ps -ef | grep redis
查看所有实例是否都能正常启动,如果不能正常启动,请检查配置,请检查配置,请检查配置,请检查配置,请检查配置,请检查配置
如果不能成功启动,以下操作将毫无意义。
现在仅仅是把6个Redis实例准备好了,他们之间并没有什么关系,需要用一条指令把他们创建为一个集群,下面开始创建集群。
注意
redis5.0以下用如下命令启动
./redis-trib.rb create --replicas 1 192.168.66.66:7001 192.168.66.66:7002 192.168.66.66:7003 192.168.66.66:7004 192.168.66.66:7005 192.168.66.66:7006
redis5.0及以上用如下命令启动
redis-cli --cluster create 192.168.66.66:7001 192.168.66.66:7002 192.168.66.66:7003 192.168.66.66:7004 192.168.66.66:7005 192.168.66.66:7006 --cluster-replicas 1
主从节点是否正确,输入yes才会真正的创建集群
集群创建成功
redis-cli -c -h 192.168.66.66 -p 7001
cluster nodes
可以看到节点信息,主节点从节点的ip端口
如:我连接在7001节点上,查看内存数据库中仅有k2、k3、k6、k7等键,但是可以获取到 k5 k8对应的数据
我关闭是采用逐个节点shutdown的方法关闭,我暂时还不知道官方有没有提供关闭脚本之类的。
启动所有redis节点即可./start-all.sh
脚下留心
学无止境,只要学不死,就往死力学
创建集群之后,再使用相同的集群创建命令会报错
解决:进入每个目录删掉节点信息相关文件,主要是和node相关的文件,
rdb和aof文件,如需保留数据可以不用删除。
rm -rf appendonly.aof dump.rdb nodes-7005.conf nodes.conf