rediscluster集群搭建
Posted 小小灬星愿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rediscluster集群搭建相关的知识,希望对你有一定的参考价值。
redis cluster可以自动的实现master+slave复制和读写分离,可以自动的实现master+slave高可用和主备切换,可以自动的实现支持多个master的hash slot支持数据分布式存储。
redis cluster重要配置
cluster-enabled <yes/no>
cluster-config-file <filename>:这是指定一个文件,供cluster模式下的redis实例将集群状态保存在那里,包括集群中其他机器的信息,比如节点的上线和下限,故障转移,不是我们去维护的,给它指定一个文件,让redis自己去维护的
cluster-node-timeout <millisecond>:节点存活超时时长,超过一定时长,认为节点宕机,master宕机的话就会触发主备切换,slave宕机就不会提供服务
停止所有需要使用的机器上所有的redis有关的进程服务,如redis、sentinel。
参照,如果是重新安装,请忽略配置文件设置的部分,请按以下进行配置(配置文件、启动脚本),如果是已经配置完成的老机器,请按以下进行重新配置(配置文件、启动脚本)。
安装完成,开始准备配置文件
mkdir -p /etc/redis 存放redis的配置文件
mkdir -p /etc/redis-cluster 存放redis cluster自己维护的配置文件
mkdir -p /var/redis/7001 存放redis的持久化文件
mkdir -p /var/log/redis 存放redis日志文件
拷贝配置文件
cp /usr/local/redis-5.0.5/redis.conf /etc/redis/7001.conf
修改配置文件
vi /etc/redis/7001.conf
port 7001
yes
/etc/redis-cluster/node-7001.conf
15000
daemonize yes
pidfile /var/run/redis_7001.pid
dir /var/redis/7001
logfile /var/log/redis/7001.log
bind 192.168.56.101
appendonly yes
准备启动脚本文件
cp /usr/local/redis-5.0.5/utils/redis_init_script /etc/init.d/redis_7001
修改脚本配置信息
vi /etc/init.d/redis_7001
REDISPORT=7001
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cl
开放防火墙端口
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=17001/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port
将所有机器上的redis实例都进行启动
······
创建集群
redis5.0.5创建集群方式
redis-cli --cluster create 192.168.56.101:7001 192.168.56.101:7002 192.168.56.102:7003 192.168.56.102:7004 192.168.56.103:7005 192.168.56.103:7006 --cluster-replicas 1
--cluster-replicas 1:每个master有几个slave
参考:
https://blog.csdn.net/hp_1234/article/details/87124355
如果在安装集群时报错。或者安装集群中途取消,然后再次安装报错:
[ERR] Node 192.168.56.101:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解决方法:
1)、删除每个redis节点的备份文件,数据库文件和集群配置文件。比如说我有7001-7006共6个节点,那么每个节点中的appendonly.aof、dump.rdb、node_xxx.conf文件都要被删除;
2)、使用redis-cli -c -h -p登录每个redis节点,使用以下命令;
172.168.63.201:7001> flushdb #清空当前数据库
172.168.63.201:7001> cluster reset #清空当前数据库
参考文件:
https://blog.csdn.net/XIANZHIXIANZHIXIAN/article/details/82777767?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf
如果是给现有集群增加节点报错:
[ERR] Node 192.168.56.101:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
1)、将需要新增的节点下aof、rdb等本地备份文件删除;
2)、同时将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件;
3)、再次添加新节点如果还是报错,则登录新Node,./redis-cli–h x –p对数据库进行清除:
172.168.63.201:7001> flushdb #清空当前数据库
参考文件:
https://blog.csdn.net/weixin_44018338/article/details/93098571
最后再执行集群创建
redis-cli --cluster create 192.168.56.101:7001 192.168.56.101:7002 192.168.56.102:7003 192.168.56.102:7004 192.168.56.103:7005 192.168.56.103:7006 --cluster-replicas 1
集群健康检查:
redis-cli --cluster check 192.168.56.101:7001
以下是redis低版本创建集群方式(至少redis3.2.8版本)
在其中一台机器上执行安装命令即可
yum install -y ruby
yum install -y rubygems
gem install redis
报错:因为redis版本过高ruby版本低
Fetching: redis-4.2.2.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.3
解决方案:
gem sources -a http://mirrors.aliyun.com/rubygems/
使用rvm安装发现下载缓慢,可以考虑删除原来的仓库地址,只保留阿里云镜像
gem sources --remove https://rubygems.org/
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm -v 查看RVM版本信息,如果可以代表安装成功
rvm install 2.5 安装Ruby
ruby –v 验证版本
然后再:
gem install redis
参考文档:
https://www.jianshu.com/p/7a625eb8cde0
或者:
https://blog.whsir.com/post-2659.html
cp /usr/local/redis-5.0.5/src/redis-trib.rb /usr/local/bin/
集群健康检查:
redis-trib.rb check 192.168.31.187:7000
以上是关于rediscluster集群搭建的主要内容,如果未能解决你的问题,请参考以下文章