Linux下redis集群搭建与部署(详细)

本文主要介绍已经安装好的redis的集群的搭建

若没有安装redis,可以参考我上篇文章

https://blog.csdn.net/qq_41047000/article/details/106032905

进入redis安装目录下创建目录

cd /usr/local/redis
mkdir redis-cluster
cd redis-cluster
mkdir 7000 7001 7002 7003 7004 7005

将redis下的redis.confi文件复制到每个目录下

cp /usr/local/redis/redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7000
cp /usr/local/redis/redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7001
cp /usr/local/redis/redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7002
cp /usr/local/redis/redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7003
cp /usr/local/redis/redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7004
cp /usr/local/redis/redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7005

修改每个文件夹下的redis.conf

#例如
vim redis-cluster/7000/redis.conf

#修改如下
# 端口号
port 7000
# 后台启动
daemonize yes
# 开启集群
cluster-enabled yes
#集群节点配置文件(注意需要跟端口号一样)
cluster-config-file nodes-7000.conf
#数据文件存放位置(注意此处的路径需要自己创建好)
dir /usr/local/redis/redis-cluster/7000/data/
# 集群连接超时时间
cluster-node-timeout 5000
# 进程pid的文件位置 (注意需要跟端口号一样)
pidfile /var/run/redis-7000.pid
# 开启aof
appendonly yes
# aof文件路径
appendfilename "appendonly-7000.aof"
# rdb文件路径
dbfilename dump-7000.rdb

修改完六个配置内容后开始启动

cd /usr/local/redis

#这里闲一个个启动麻烦的话可以自己配置一个配置文件启动
bin/redis-server redis-cluster/7000/redis.conf
bin/redis-server redis-cluster/7001/redis.conf
bin/redis-server redis-cluster/7002/redis.conf
bin/redis-server redis-cluster/7003/redis.conf
bin/redis-server redis-cluster/7004/redis.conf
bin/redis-server redis-cluster/7005/redis.conf

启动完后查看进程

[root@frank redis]# ps -ef|grep redis

#显示有六个则是启动成功
root      1698     1  0 10:11 ?        00:00:00 bin/redis-server *:7000 [cluster]
root      1728     1  0 10:15 ?        00:00:00 bin/redis-server *:7001 [cluster]
root      1733     1  0 10:15 ?        00:00:00 bin/redis-server *:7002 [cluster]
root      1738     1  0 10:15 ?        00:00:00 bin/redis-server *:7003 [cluster]
root      1743     1  0 10:15 ?        00:00:00 bin/redis-server *:7004 [cluster]
root      1749     1  1 10:15 ?        00:00:00 bin/redis-server *:7005 [cluster]

到这里只是启动了六个单进程的redis,开始创建集群,先安装好ruby

yum install ruby rubygems -y

使用gem要先镜像一下

#这里需要镜像一下
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

#确保镜像成功
[root@frank redis]# gem sources -l

*** CURRENT SOURCES ***

https://gems.ruby-china.com/

然后执行连接ruby-redis

[root@frank redis]# gem install redis 

上面步骤有可能报错查了资料发现是版本太低
解决办法是 先安装rvm,再把ruby版本提升

ERROR:  Error installing redis:
	redis requires Ruby version >= 2.3.0.

ruby版本提升(若没有报错不需要进行此步骤)

#安装curl
 sudo yum install curl

#安装rvm
 curl -L get.rvm.io | bash -s stable 

(如出现错误参考: http://blog.csdn.net/qq_30242987/article/details/99727838)

 source /usr/local/rvm/scripts/rvm

#查看rvm库中已知的ruby版本
  rvm list known

#安装一个ruby版本
  rvm install  2.4.0

#使用一个ruby版本
  rvm use  2.4.0

#卸载一个已知版本
  rvm remove 2.3.0

#查看版本
  ruby  --version

#再安装redis就可以了
  gem install redis

创建集群

#进入src下面
cd /usr/local/redis/redis-4.0.8/src

#创建集群
[root@frank src]# ./redis-trib.rb create --replicas 1 127.0.0.1:7000 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

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7004 to 127.0.0.1:7000
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7003 to 127.0.0.1:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 1b76695d84bc510b79eedc42c471ed424d06f8e2 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 25beb35c19a0b5967a874b4e151b719d4df2cfeb 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: 225f7ab7cee8a4f77bc41ae7c67b90d179875db3 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
S: cf995294ef29569ed34a32e8202a378732022c4d 127.0.0.1:7003
   replicates 25beb35c19a0b5967a874b4e151b719d4df2cfeb
S: 31cf1120d517dc2a3c65887799680a06fad03efb 127.0.0.1:7004
   replicates 225f7ab7cee8a4f77bc41ae7c67b90d179875db3
S: c2f3c82b875d57422c66bd89e3a60a6b3dc05ffd 127.0.0.1:7005
   replicates 1b76695d84bc510b79eedc42c471ed424d06f8e2
#这里直接写入yes就行
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 1b76695d84bc510b79eedc42c471ed424d06f8e2 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 225f7ab7cee8a4f77bc41ae7c67b90d179875db3 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 25beb35c19a0b5967a874b4e151b719d4df2cfeb 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: c2f3c82b875d57422c66bd89e3a60a6b3dc05ffd 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 1b76695d84bc510b79eedc42c471ed424d06f8e2
S: cf995294ef29569ed34a32e8202a378732022c4d 127.0.0.1:7003
   slots: (0 slots) slave
   replicates 25beb35c19a0b5967a874b4e151b719d4df2cfeb
S: 31cf1120d517dc2a3c65887799680a06fad03efb 127.0.0.1:7004
   slots: (0 slots) slave
   replicates 225f7ab7cee8a4f77bc41ae7c67b90d179875db3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

到这里集群就安装好了,测试一下

#往7000 里面存入数据,会发现存储到7001里面中了,是因为分配key的时候,它会使用CRC16算法,这里将keyname分配到了7001节点上

[root@frank bin]# ./redis-cli -c -p 7000
127.0.0.1:7000> set name frank
-> Redirected to slot [5798] located at 127.0.0.1:7001
OK
127.0.0.1:7001> get name
"frank"

在启动时会发现一个个启动太麻烦,这里配置一下启动关闭文件

#进入安装redis的路径
cd /usr/local/redis

#编写关闭文件
vi stop-all.sh

#加入下面内容,编辑完之后按esc键输入 :wq 退出保存
#这里得找到自己配置启动得地方,我得是在bin下面
bin/redis-cli -p 7000 shutdown
bin/redis-cli -p 7001 shutdown
bin/redis-cli -p 7002 shutdown
bin/redis-cli -p 7003 shutdown
bin/redis-cli -p 7004 shutdown
bin/redis-cli -p 7005 shutdown

#赋值权限
chmod u+x stop-all.sh


#编写启动文件
vi start-all.sh

#加入下面内容,编辑完之后按esc键输入 :wq 退出保存
#这里得找到自己配置启动得地方,我得是在bin下面
bin/redis-server redis-cluster/7000/redis.conf
bin/redis-server redis-cluster/7001/redis.conf
bin/redis-server redis-cluster/7002/redis.conf
bin/redis-server redis-cluster/7003/redis.conf
bin/redis-server redis-cluster/7004/redis.conf
bin/redis-server redis-cluster/7005/redis.conf

#赋值权限
chmod u+x start-all.sh

启动 stop-all.sh文件

#关闭
[root@frank redis]# ./stop-all.sh 

#查看进程
[root@frank redis]# ps -ef|grep redis
root     20731 20106  0 15:05 pts/0    00:00:00 grep --color=auto redis

启动start-all.sh文件

#启动文件
[root@frank redis]# ./start-all.sh 
20751:C 13 May 15:07:29.734 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20751:C 13 May 15:07:29.735 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20751, just started
20751:C 13 May 15:07:29.735 # Configuration loaded
20753:C 13 May 15:07:29.786 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20753:C 13 May 15:07:29.786 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20753, just started
20753:C 13 May 15:07:29.786 # Configuration loaded
20755:C 13 May 15:07:29.839 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20755:C 13 May 15:07:29.839 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20755, just started
20755:C 13 May 15:07:29.839 # Configuration loaded
20757:C 13 May 15:07:29.948 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20757:C 13 May 15:07:29.949 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20757, just started
20757:C 13 May 15:07:29.949 # Configuration loaded
20768:C 13 May 15:07:30.026 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20768:C 13 May 15:07:30.026 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20768, just started
20768:C 13 May 15:07:30.026 # Configuration loaded
20773:C 13 May 15:07:30.122 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20773:C 13 May 15:07:30.122 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20773, just started
20773:C 13 May 15:07:30.123 # Configuration loaded

#查看进程
[root@frank redis]# ps -ef|grep redis
root     20752     1  0 15:07 ?        00:00:00 bin/redis-server *:7000 [cluster]
root     20754     1  0 15:07 ?        00:00:00 bin/redis-server *:7001 [cluster]
root     20756     1  0 15:07 ?        00:00:00 bin/redis-server *:7002 [cluster]
root     20767     1  0 15:07 ?        00:00:00 bin/redis-server *:7003 [cluster]
root     20772     1  0 15:07 ?        00:00:00 bin/redis-server *:7004 [cluster]
root     20777     1  0 15:07 ?        00:00:00 bin/redis-server *:7005 [cluster]

到这里本文讲解也结束了,亲测有效的,有问题欢迎留言给博主哦,觉得有用的话顺便点个赞呗~

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值