CentOS7安装Redis和搭建Redis高可用分片集群

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> hot3.png

一、CentOS7下Redis安装(非常详细)

1.查看linux内核版本

此步骤可以省略,一般CentOS7内核版本都应该满足,因为搭建Redis高可用集群是Redis3以上才支持的,而Redis3需要linux内核高于3.10版本,所有才有此步骤,在linux下输入命令查看内核版本:

uname -a

展示如下信息就没问题:

Linux centos 3.10.0-1062.9.1.el7.x86_64 #1 SMP Fri Dec 6 15:49:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

2.下载redis包

在Redis官网下载Redis压缩包,本次实验使用 redis-3.0.6.tar.gz 版本。

3.编译安装Redis

笔者的Redis压缩包存在 /home/soft 下

直接解压:

tar -zxvf redis-3.0.6.tar.gz

解压后,有Redis文件夹 redis-3.0.6 

进入该文件夹目录:

cd redis-3.0.6

编译并安装:

make && make install

等待Complete后,进入redis下的src目录:

cd src
ls

 用ls命令查看所有当前src目录下的文件,会发现有 redis-server  redis-cli  redis-trib.rb 三个文件,这三个文件前两个用来开启关闭redis,第三个用于建立集群。

在redis目录下(当前在src目录,可以直接 cd .. 命令回到上级目录),新建 bin 目录(mkdir bin),建好后将上面前两个文件移入bin目录下:

具体操作命令:

cd ../
mkdir bin
cp src/redis-server bin/

并将当前目录下的redis-conf文件也一同移入bin目录下:

cp redis.conf /bin/

说明一下,将这几个文件移入同一个bin目录下,主要是为了好操作而已,不移动也是完全可以的。

4.启动关闭Redis

启动redis:

在bin目录下:

./redis-server redis.conf

此redis启动的默认端口是6379

关闭redis:

./redis-cli -p 6379 shutdown

单机版单redis安装成功。

二、Redis高可用分片集群搭建

Redis高可用分片集群搭建至少得六台服务器,三台master,三台slave,且Redis3版本才支持,集群启动脚本是运行在Ruby环境下,所以笔者准备的Redis是3.0.6版本,更改版本需要更高的Ruby版本环境,当前CentOS安装的Ruby环境是2.0.0的,gem也是2.0.0的,笔者不想重新安装Ruby环境(试过有点烦),而且redis.gem版本目前最高4.x,会遇到很多环境依赖问题,懒得弄了。

准备环境:安装好的Redis3.0.6已备好,六台服务器(哪有那么多,笔者只能用一台虚拟机六个端口去模拟),ruby-2.0.0环境,gem-2.0.0环境(一般安装好ruby就有gem了,版本应该是一致的),redis-3.0.6.gem包(ruby的redis包,得下载,最好和redis版本一致)。

 1.创建一个集群目录

笔者是在 /home 目录下创建的集群文件夹:

cd /home
mkdir redis-cluster

将第一大步骤创建的redis bin目录复制到集群文件夹下:

cp -r soft/redis-3.0.6/bin/ redis-cluster/redis01

打开redis01修改redis-conf的端口、启用集群设置、开启守护线程(主要为了后台执行):

cd redis01
vim redis.conf

打开后找到(端口)port 6379,把6379改为7001(此改动是为了好记),把cluster-enabled (开启集群)解开注释后面的值改为yes,找到daemonize (开启守护线程)设置为yes

设置完毕后保存该文件。

然后redis-cluster文件夹下将redis01复制5份分别为redis02、redis03、redis04、redis05、redis06,并且分别将redis.conf的port分别修改为7002、7003、7004、7005、7006,这样就修改完了。

启动这六个redis,一个一个的启动当然太麻烦,写一个脚本一起启动:

先在redis-cluster文件夹下建立一个脚本文件:

touch startall.sh

用vim打开该文件,然后将一下脚本内容复制进去:

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 ..

给该.sh脚本文件授权后才能启动,授权命令:

chmod +x startall.sh

或者

chmod 777 startall.sh

授权后,用ls命令查看,该文件会由变成绿色的。

用以下命令启动redis:

./startall.sh

然后查看启动情况:

ps -aux |grep redis
[root@centos redis-cluster]# ./startall.sh 
[root@centos redis-cluster]# ps -aux | grep redis
root      29874  0.6  0.3 140904  7212 ?        Ssl  10:15   0:00 ./redis-server *:7001 [cluster]
root      29876  0.1  0.3 140904  7212 ?        Ssl  10:15   0:00 ./redis-server *:7002 [cluster]
root      29882  0.0  0.3 140904  6552 ?        Ssl  10:15   0:00 ./redis-server *:7003 [cluster]
root      29886  0.1  0.1 140904  2504 ?        Ssl  10:15   0:00 ./redis-server *:7004 [cluster]
root      29890  0.0  0.1 140904  2500 ?        Ssl  10:15   0:00 ./redis-server *:7005 [cluster]
root      29894  0.0  0.1 140904  2504 ?        Ssl  10:15   0:00 ./redis-server *:7006 [cluster]
root      29904  0.0  0.0 112728   972 pts/0    S+   10:15   0:00 grep --color=auto redis

出现如上内容说明6个redis启动成功,已经具备集群环境搭建的基础,接下来开启集群。

2.开启集群

ruby环境已经建好的情况下我们可以直接进行了,如果ruby环境没有,可以用yum install ruby去安装,具体操作请查阅安装ruby环境的相关文档。

在第二大点开始的说明中,有个redis-3.0.6.gem的包,就是redis 的ruby包,这个需要先安装,笔者的此包放在/home/soft目录下,和redis的目录平级。

在/home/soft目录下,运行如下命令安装redis的gem文件:

gem install redis-3.0.6.gem

出现1 gem installed. 就安装成功了。

在回到第一大步安装好的redis目录的src下,还记得有个redis-trib.rb文件吧,将此文件复制到redis-cluster目录下:

cp redis-trib.rb ../../../redis-cluster

然后用此命令开启集群(当然需要将IP替换成自己虚拟机的IP):

./redis-trib.rb create --replicas 1 192.168.43.108:7001 192.168.43.108:7002 192.168.43.108:7003 192.168.43.108:7004 192.168.43.108:7005 192.168.43.108:7006

也可以将其写成一个脚本文件,直接启动:

用touch命令新建redis-cluster.sh文件,并打开将上述命令复制进去保存,然后用chmod命令授权即可。

启动后,中途有个地方要输入yes才能继续,如下图:

[root@centos redis-cluster]# ./redis-cluster.sh 
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
Adding replica 127.0.0.1:7006 to 127.0.0.1:7003
M: 799398bdbacb72d10ad0cbff1badd8f99bff7a1e 127.0.0.1:7001
   slots:0-5460 (5461 slots) master
M: d70a2f378e2142fa719a518ef77b3c90e6ff5394 127.0.0.1:7002
   slots:5461-10922 (5462 slots) master
M: bf81bbef6325e45288e5ca9ed9b40764e3e71dd6 127.0.0.1:7003
   slots:10923-16383 (5461 slots) master
S: 5b9f16c467786d47de1c7e9138d17ff6584ffae5 127.0.0.1:7004
   replicates 799398bdbacb72d10ad0cbff1badd8f99bff7a1e
S: 1e860f0142f5978ebccc41de473e7f2728b19dbe 127.0.0.1:7005
   replicates d70a2f378e2142fa719a518ef77b3c90e6ff5394
S: 70e9d7763ebf7a0fb6efe34a49bd53b0b3da3f7b 127.0.0.1:7006
   replicates bf81bbef6325e45288e5ca9ed9b40764e3e71dd6
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:7001)
M: 799398bdbacb72d10ad0cbff1badd8f99bff7a1e 127.0.0.1:7001
   slots:0-5460 (5461 slots) master
M: d70a2f378e2142fa719a518ef77b3c90e6ff5394 127.0.0.1:7002
   slots:5461-10922 (5462 slots) master
M: bf81bbef6325e45288e5ca9ed9b40764e3e71dd6 127.0.0.1:7003
   slots:10923-16383 (5461 slots) master
M: 5b9f16c467786d47de1c7e9138d17ff6584ffae5 127.0.0.1:7004
   slots: (0 slots) master
   replicates 799398bdbacb72d10ad0cbff1badd8f99bff7a1e
M: 1e860f0142f5978ebccc41de473e7f2728b19dbe 127.0.0.1:7005
   slots: (0 slots) master
   replicates d70a2f378e2142fa719a518ef77b3c90e6ff5394
M: 70e9d7763ebf7a0fb6efe34a49bd53b0b3da3f7b 127.0.0.1:7006
   slots: (0 slots) master
   replicates bf81bbef6325e45288e5ca9ed9b40764e3e71dd6
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

如果已经启动过集群,或者单个节点启动过,集群会启动报错,这时一定要删除每个节点的 dump.rdbnodes.conf 这两个文件才能启动集群。

 至此,Redi集群搭建成功!大家注意最后一段文字,显示了每个节点所分配的slots(哈希槽),这里总共6个节点,其中3个是从节点,所以3个主节点分别映射了0-5460、5461-10922、10933-16383solts。

在任意一个节点都可以连接整个集群,他们会根据算法自动转发切换节点进行存储和查询。

redis01/redis-cli -p 7001 -c

注意:命令行一定要加上-c,不然节点之间是无法自动跳转的!如下图可以看到,存储的数据(key-value)是均匀分配到不同的节点的:

三、总结

先安装单个redis,然后复制多个修改端口模拟多个节点,然后用ruby安装集群环境并启动集群。

最后两条简单的命令查看集群简单信息:

1.查看当前集群信息
cluster info
2.查看集群里有多少个节点
cluster nodes

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值