Redis4 Cluster部署

数据库干货铺

共 5003字,需浏览 11分钟

 · 2022-03-05

点击上方蓝字关注我

Redis5版本前(redis3.x及redis4.x)cluster部署较麻烦,因部署过程中涉及的依赖软件版本要求较苛刻,因此记录一下redis4.0.14版本redis cluster的部署过程。

1  Redis各节点部署

使用源码安装各节点,不过与非cluster方式不同的是,配置文件中需启动cluster相关的配置。编译过程可参考分分钟搞定Redis编译安装

因本次为伪分布式部署,生产环境部署时建议至少3台机器部署(其中每台机器1主1从)

ip
port
192.168.56.101
7000
192.168.56.101
7001
192.168.56.1017002
192.168.56.1017003
192.168.56.101
7004
192.168.56.101
7005

1.1   启动cluster各节点

创建数据目录

mkdir -p  /data/redis/cluster/{7000,7001,7002,7003,7004,7005}

配置文件中主要修改如下内容,其他的可按需调整,也可保持默认值,各节点中注意修改对应的端口号

bind 192.168.56.101port 7000daemonize yespidfile /data/redis/cluster/7000/redis_7000.pidlogfile "/data/redis/cluster/7000/redis_7000.log"appendonly yesappendfilename "appendonly.aof"appendfsync everyseccluster-enabled yescluster-config-file nodes-7000.conf     #注意此文件自动生成,且初始化时不要有和此重名的文件cluster-node-timeout 5000cluster-slave-validity-factor 10cluster-migration-barrier 1cluster-require-full-coverage yescluster-slave-no-failover no

启动各节点,建议用redis用户启动

useradd redischown -R  redis:redis  /data/redis/su - rediscd /data/redis/cluster/7001cp /data/redis/cluster/7000/redis.conf . sed -i "s#7000#7001#g" redis.confredis-server redis.conf

其他节点和7001类似启动,启动后进程中会标记redis节点以cluster模式启动

2.  按照依赖

因redis5之前版本前cluster安装依赖ruby,且版本要求比较苛刻,本次安装的版本redis4.0.14,依赖的ruby版本为>=ruby2.4,因此大家安装时可以安装高版本的ruby,本次我使用的是ruby2.7.5版本

2.1 编译安装ruby
下载ruby,建议从官网下载源码进行编译安装
https://www.ruby-lang.org/en/downloads/
tar -zxvf  ruby-2.7.5.tar.gzcd ruby-2.7.5 ./configuremake  make install

安装完毕后,检查ruby以及gem版本

2.2 安装openssl-devel及zlib-devel

安装完ruby后,使用gem安装redis包,此时如果没有安装openssl 则回报如下错误

gem install  redisERROR:  Loading command: install (LoadError)    cannot load such file -- opensslERROR:  While executing gem ... (NoMethodError)    undefined method `invoke_with_build_args' for nil:NilClass

按照过程如下:

yum方式先安装openssl

 yum install openssl-devel -y

再进入ruby源码目录中的ext目录下,找到openssl目录,进入后进行安装

cd ruby-2.7.5/ext/opensslruby extconf.rb makemake install

zlib-devel包如报错,也可同上方式处理。

在执行make,若出现如下报错:

 make: *** 没有规则可以创建“ossl_asn1.o”需要的目标“/include/ruby.h” 停止。

可以在Makefile顶部中的增加 top_srcdir = ../..

再次执行 make && make install

2.3  gem安装redis

 gem install redis

3. 初始化redis集群

相关依赖安装完成后,即可初始化redis集群,命令及过程如下:

[redis@localhost redis-4.0.14]$ src/redis-trib.rb create --replicas 1 192.168.56.101:7000 192.168.56.101:7001 192.168.56.101:7002 192.168.56.101:7003 192.168.56.101:7004 192.168.56.101:7005>>> Creating cluster>>> Performing hash slots allocation on 6 nodes...Using 3 masters:192.168.56.101:7000192.168.56.101:7001192.168.56.101:7002Adding replica 192.168.56.101:7004 to 192.168.56.101:7000Adding replica 192.168.56.101:7005 to 192.168.56.101:7001Adding replica 192.168.56.101:7003 to 192.168.56.101:7002>>> Trying to optimize slaves allocation for anti-affinity[WARNING] Some slaves are in the same host as their masterM: cd6663924f0c31e6b60b815dca9cb7ea863f5573 192.168.56.101:7000   slots:0-5460 (5461 slots) masterM: abc1f43c9a4e8813e9da15433ac66cd185dc39fe 192.168.56.101:7001   slots:5461-10922 (5462 slots) masterM: 43fa53cec1ae164f784e5d439aaf80ee2f7e35af 192.168.56.101:7002   slots:10923-16383 (5461 slots) masterS: 6ffcd16f1d445b0091c6239bc0988fb8a77fac96 192.168.56.101:7003   replicates cd6663924f0c31e6b60b815dca9cb7ea863f5573S: c523846d491f8df0bc97033b025b0d24375a13f8 192.168.56.101:7004   replicates abc1f43c9a4e8813e9da15433ac66cd185dc39feS: 905dc9de7e074c282aab44b4ed5680a2020bcf4c 192.168.56.101:7005   replicates 43fa53cec1ae164f784e5d439aaf80ee2f7e35afCan 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 clusterWaiting for the cluster to join....>>> Performing Cluster Check (using node 192.168.56.101:7000)M: cd6663924f0c31e6b60b815dca9cb7ea863f5573 192.168.56.101:7000   slots:0-5460 (5461 slots) master   1 additional replica(s)M: 43fa53cec1ae164f784e5d439aaf80ee2f7e35af 192.168.56.101:7002   slots:10923-16383 (5461 slots) master   1 additional replica(s)S: c523846d491f8df0bc97033b025b0d24375a13f8 192.168.56.101:7004   slots: (0 slots) slave   replicates abc1f43c9a4e8813e9da15433ac66cd185dc39feS: 6ffcd16f1d445b0091c6239bc0988fb8a77fac96 192.168.56.101:7003   slots: (0 slots) slave   replicates cd6663924f0c31e6b60b815dca9cb7ea863f5573M: abc1f43c9a4e8813e9da15433ac66cd185dc39fe 192.168.56.101:7001   slots:5461-10922 (5462 slots) master   1 additional replica(s)S: 905dc9de7e074c282aab44b4ed5680a2020bcf4c 192.168.56.101:7005   slots: (0 slots) slave   replicates 43fa53cec1ae164f784e5d439aaf80ee2f7e35af[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.

至此,redis集群初始化完毕,各节点slot范围及角色也打印出来了

往期精彩回顾

1.  MySQL高可用之MHA集群部署

2.  mysql8.0新增用户及加密规则修改的那些事

3.  比hive快10倍的大数据查询利器-- presto

4.  监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

5.  PostgreSQL主从复制--物理复制

6.  MySQL传统点位复制在线转为GTID模式复制

7.  MySQL敏感数据加密及解密

8.  MySQL数据备份及还原(一)

9.  MySQL数据备份及还原(二)

扫码关注     
浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报