linux环境搭建redis集群,Linux下搭建Redis分布式集群(详细图解演示)

一 环境搭建.

1.1 环境准备.三台虚拟机.redis的版本是3.2.9.redis的各个版本下载地址:链接. 三个主节点三个从节点.

①:192.168.199.133.(部署两个Redis服务.)分别在目录redis_cluster7001和7002下.(作为集群控制端,需要编译安装redis,并且安装Ruby环境).

②:192.168.199.136.(部署两个Redis服务.)分别在目录redis_cluster7003和7004下.

③:192.168.199.137.(部署两个Redis服务.)分别在目录redis_cluster7005和7006下.

其中192.168.199.133下载了Redis并且编译安装了.

6d486981e42768073d4b662770f122a4.png

分别完成另外两台的目录创建.

①:192.168.199.136.

97e65ccbecdb9fe0d509bce98763e580.png

②:192.168.199.137.

2501c0ce425855b84eb33edcacf9f972.png

1.2 配置文件复制.

192.168.199.133下执行:

scp -r /usr/local/redis/bin root@192.168.199.136:/usr/local/redis(-r递归复制目录)

scp -r /usr/local/redis/bin root@192.168.199.137:/usr/local/redis

c0dc2a8c17fcca4404914fb54963360d.png

1.3 查看复制结果.

f289e89cf7f955e97b399e3958aee2fd.png

3443fede4054ae8c53fbc64b88738e84.png

复制redis下的redis.conf目录至redis_cluster下的对应目录下.

①:199.168.199.133.

cp redis.conf /usr/local/redis_cluster/7001

cp redis.conf /usr/local/redis_cluster/7002

44207b9aa7e4397da4da8a41449995fb.png

②:192.168.199.136.

scp /usr/local/redis-3.2.9/redis.conf root@192.168.199.136:/usr/local/redis_cluster/7003

scp /usr/local/redis-3.2.9/redis.conf root@192.168.199.136:/usr/local/redis_cluster/7004

853502f3ea9bb124ddfbc37773ab76a4.png

③:192.168.199.137.(同上)

scp /usr/local/redis-3.2.9/redis.conf root@192.168.199.137:/usr/local/redis_cluster/7005

scp /usr/local/redis-3.2.9/redis.conf root@192.168.199.137:/usr/local/redis_cluster/7006

二.修改配置文件.

2.1修改下面几个配置项.

port 7001  //六个节点配置文件分别是7001-7003

bind 192.168.1.109    //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访,和单机集群有区别

daemonize yes        //redis后台运行

pidfile /var/run/redis_7001.pid   //pidfile文件对应7001-7003

cluster-enabled yes   //开启集群

cluster-config-file nodes_7001.conf  //保存节点配置,自动创建,自动更新对应7001-7003

cluster-node-timeout 5000    //集群超时时间,节点超过这个时间没反应就断定是宕机

appendonly yes   //存储方式,aof,将写操作记录保存到日志中

7001~7006的6个配置文件都修改一下.根据所在目录修改即可.

2.2 192.168.199.133做为创建集群的主控制端,安装Ruby环境.(创建集群环境的脚本是Ruby语言编写的,需要Ruby的环境).

①:安装Curl.

sudo yum install curl

bfdc031e332d18fd3e18455e72e1863f.png

查看Curl的版本.curl --version

5798e3aa63456abf666f9629c25f3c14.png

②:RVM的安装.(直接yum安装会出 现这样的错误.RVM是Ruby的包管理器)

gem install redis

ERROR: Error installing redis:

redis requires Ruby version >= 2.2.2.)

参考这篇文章的解决方式:链接.

下面是自己按照文章中的解决方式走了一遍,是可行的.

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

cd7ad77e8dcee2e293467bd259884eee.png

curl -sSL https://get.rvm.io | bash -s stable

02c2ebdf4966b97d24e709355d23a6ac.png

find / -name rvm -print

5754720fcf6c6ba3e41739f3f49dd3cd.png

source /usr/local/rvm/scripts/rvm

ea39c68ba261be9e70a7572e141481c1.png

rvm list known(列出已知的rvm的版本)

ca35d41d234af453be9bc75f462ecb40.png

90be583cd32c693ddd5371c252b55d08.png

rvm install 2.4.1(安装rvm 2.4.1).

0ed0808f6524e95c91b07dc854488ffe.png

rvm use 2.4.1(使用2.4.1的版本).

1b9d90aed179fa96285558e0e0285678.png

rvm use 2.4.1 --default(设置ruby的默认版本)

bc6cb19f70e8f152f4370539dfdab1fd.png

rvm remove 2.0.0(移除ruby2.0.0的版本).

e23a57f7fe2533ebc3f30b8a21e1e091.png

ruby --version(查看ruby的版本).

39aa200e3022426f2e97b4020643341b.png

安装redis.

714c51fca1ac03366a4aaa7e94266040.png

三:启动Redis集群.

3.1我三台虚拟机由于没有启动防火墙,如果启动了,做一下这些端口的映射.首先是启动6个Redis服务.

①:192.168.199.133的7001和7002服务.

./redis-server /usr/local/redis_cluster/7001/redis.conf

./redis-server /usr/local/redis_cluster/7002/redis.conf

ps -ef | grep -i redis

a963b67d48f6579bd06ac0ce8191e351.png

ca53cd4ef1051cc5981e2ddc20814554.png

② 192.168.199.136

./redis-server /usr/local/redis_cluster/7003/redis.conf

./redis-server /usr/local/redis_cluster/7004/redis.conf

ps -ef | grep -i redis

3adeb539d043daba46659df6c0ff6c20.png

③ 192.168.199.137

./redis-server /usr/local/redis_cluster/7005/redis.conf

./redis-server /usr/local/redis_cluster/7006/redis.conf

ps -ef | grep -i redis

f76cc4b06a9f43cb960ad65f44bd22a9.png

至此6台Redis服务均已成功启动了.

3.2 Redis的Ruby脚本创建集群.

redis-3.2.9的src目录下有redis-trib.rb脚本.

9927885bdf3d7e299d687188f9d7b9ae.png

2b45ebe3c7281ccc2b5c1414982b5c3a.png

./redis-trib.rb create --replicas 1  192.168.199.133:7001 192.168.199.136:7003 192.168.199.137:7005 192.168.199.133:7002 192.168.199.136:7004 192.168.199.137:7006   (这里说明一下,按照顺序,前面的是主节点后面三个是从节点,--replicates 1表示一个主节点有三个从节点的.)

三个主节点的Hash槽范围是:一共有16384的hash solt。(0~16383)

7001:(0~5460)

7003:(5461~10922)

7005:(10923~16383)

bcbe0b36fc4997a1d8481f220efda2e4.png

6e2e96d14cef8eb22a689f132ee18a8c.png

至此,完成了Linux下的三台机器上三主三从节点的分布式Redis的集群搭建.这里是在虚拟机里面搭建,如果是云服务器上,肯定是开启了防火墙的,注意添加集群的端口开放,以及安全组的相应端口开放,否则会一直Join...添加服务中的.

四 测试Redis集群.

4.1.首先是Redis客户端连接一下Redis服务.key值的测试.

./redis-cli -h 192.168.199.136 -p 7003 -c(-h是IP,-p是端口,-c是连接集群)

79e65e973f86caa58c48d021b18ee184.png

连接集群后和单台操作redis的key一样,这里是设置了一个key,没有跳转是因为分配hash槽是就分配在这个7003主节点上了.

a07a9b12c69c3e948be2049d59bd7f46.png

Redis Cluster值分配规则,所以分配key的时候,它会使用CRC16(‘my_name’)%16384算法,来计算,将这个key 放到哪个节点,这里分配到了15118slot 就分配到了7005(10923~16383)这个节点上。所以有这样一个跳转:

-> Redirected to slot [15118] located at 192.168.199.137:7005

看一下下面删除这两个key时,会更清楚一些.7005主节点跳转之7003主节点.5798属于(5461~10922).

34c448d2391a35cd1c8f3115ab4abc05.png

4.2 集群宕机测试.

①:首先是干掉一个主节点,例如7003.(当这个主节点有从节点的时候)

28f07d49c9210e7f6ba687ed5a9fb930.png

./redis-trib.rb check 192.168.199.133:7001(check检查集群)7003对应的主节点挂了,则从节点7002升为主节点

6d5f2fa0905682ea8cfd102ffb72e471.png

cluster nodes(这里连接一个从节点7004).

e005451c6fcab8d90a10dca5d6d45184.png

90ba56bf056d308893c7a69c45c442d3.png

②:再次干掉一个主节点(当这个主节点没有从节点的时候).直接说就是7002节点.

bfdc640340454ed113c3cd9030fd2b5e.png

再次检测集群.

./redis-trib.rb check 192.168.199.133:7001

f7db8b7c64c4d5d57b34d47a690efe0e.png

至此完成了,Linux下的分布式Redis的集群搭建的完整过程.遇到了一些问题,多思考一下,还是比较简单的.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值