Redis Cluster集群实验
Redis集群搭建的方式有多种,例如使用zookeeper(以前的redis经常配合zookeeper来做集群,因为原来没有官方的支持)等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构(又叫分布式结构),每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。
redis-cluster的优势
1、官方推荐
2、去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。
3、管理方便,后续可自行增加或摘除节点,移动分槽等等。
4、简单,易上手。
实验准备
准备全新的三台机器,一台机器两个角色,六个节点的集群。正常在公司应该是一个节点,一个redis。
现在是3个节点,6个redis。
6个redis怎么做?
把端口分开就行了,每一个端口代表一个redis,3个master,3个slave,并且要求3个master节点不能全部跑到同一台服务器上,保证节点安全,3台服务器的配置相同。
操作
环境为三台服务器:centos7.9
(一)在安装集群之前,需要在服务器上安装ruby环境(三台机器相同操作)。
yum install centos-release-scl-rh 安装ruby yum源
[root@redis1 src]# yum search ruby 查看ruby的主包
[root@redis1 src]# yum install -y rh-ruby26-ruby
[root@redis1 src]# scl enable rh-ruby26 bash 刷新环境
[root@redis1 src]# ruby -v 查看ruby版本
[root@redis1 src]# gem install redis 安装redis的库
三台机器相同操作
(二)安装redis (三台机器相同操作)
(三)创建节点目录(三台机器相同操作,注意端口号的不一样)
[root@redis1 redis-6.2.6]# mkdir data在redis的安装目录下,创建一个date的目录(存放数据的目录)
[root@redis1 redis-6.2.6]# mkdir cluster创建一个cluster的目录,存放不同节点的配置文件的目录
cd cluster/ 注意下面这三行不一样
[root@redis1 cluster]# mkdir 7000 7001
[root@redis2 cluster]# mkdir 7001 7002
[root@redis3 cluster]# mkdir 7002 7000
systemctl stop redis 先关掉服务
(四)拷贝配置文件 控制节点操作,把这个配置文件分别拷到上面创建的六个目录里面
1
[root@redis1 cluster]# cd ..
[root@redis1 redis-6.2.6]# cp redis.conf cluster/7000
[root@redis1 redis-6.2.6]# cp redis.conf cluster/7001
2
[root@redis2 cluster]# cd ..
[root@redis2 redis-6.2.6]# cp redis.conf cluster/7001
[root@redis2 redis-6.2.6]# cp redis.conf cluster/7002
3
[root@redis3 cluster]# cd ..
[root@redis3 redis-6.2.6]# cp redis.conf cluster/7002
[root@redis3 redis-6.2.6]# cp redis.conf cluster/7000
(五)修改集群配置文件(主要是端口和ip,三台机器相同操作)
bind 192.168.22.156 改成自己的ip # **绑定局域网ip,使得三台服务器可相互访问 daemonize yes // redis后台运行,原来是用的&,修改为yes
pidfile /var/run/redis_7000.pid // pid文件,运行多个实例时,需要指定不同的pid文件,一共6个端口,先改7000
port 7000 // 监听端口,运行多个实例时,需要指定不同的端口
tcp-backlog 511 日志服务器的端口
tcp-keepalive 0 长链接
loglevel notice // 日志等级
logfile /var/log/redis_7000.log // 日志文件位置 运行多实例时,需要修改不同的端口
databases 16 // 可用数据库数
dir /root/redis-6.2.6/data //存放数据的目录
appendonly yes // redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。
appendfilename "appendonly.aof" // AOF文件名称
appendfsync everysec // 表示对写操作进行累积,每秒同步一次
no-appendfsync-on-rewrite yes // AOF 自动重写
auto-aof-rewrite-percentage 80-100 // 重写百分比
auto-aof-rewrite-min-size 64mb
打开注释并修改的如下:
先看看有没有默认配置,没有把它打开
#如下为集群配置 cluster-enabled yes #启用集群
cluster-config-file nodes-7000.conf #集群配置文件,由redis自动更新,不需要手动配置,运行多实例时请注修改为对应端口
cluster-node-timeout 5000 #集群节点超时时间,即集群中主从节点断开连接时间阈值,超过该值则认为主节点不可以,从节点将有可能转为master
cluster-slave-validity-factor 10 #在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长,注意新版本此选项为:cluster-replica-validity-factor
#cluster-migration-barrier 1
cluster-require-full-coverage yes #集群中的所有slot(16384个)全部覆盖,才能提供服务
提示 可以在一台服务器上面修改好了scp到每台服务器对应的目录下面,然后修改ip和端口还有pid号日志存放文件和配置文件中的cluster-config-file nodes-7000.conf对应不同的端口!
[root@redis1 7000]# vim redis.conf
[root@redis1 7000]# cp redis.conf ../7001/
cp:是否覆盖"../7001/redis.conf"? yes
[root@redis1 7000]# scp redis.conf 192.168.22.169:/root/redis-6.2.6/cluster/7001
[root@redis1 7000]# scp redis.conf 192.168.22.169:/root/redis-6.2.6/cluster/7002
[root@redis1 7000]# scp redis.conf 192.168.22.170:/root/redis-6.2.6/cluster/7000
[root@redis1 7000]# scp redis.conf 192.168.22.170:/root/redis-6.2.6/cluster/7002
[root@redis1 cluster]# cd 7001
[root@redis1 7001]# vim redis.conf
[root@redis2 7002]# vim redis.conf
[root@redis2 7001]# vim redis.conf
[root@redis3 7000]# vim redis.conf
[root@redis3 7002]# vim redis.conf
(六)启动三台机器上面的每个节点(三台机器相同操作)
[root@redis1 redis-6.2.6]# cd src/
[root@redis1 src]# ./redis-server ../cluster/7000/redis.conf
[root@redis1 src]# ./redis-server ../cluster/7001/redis.conf
[root@redis2 redis-6.2.6]# cd src/
[root@redis2 src]# ./redis-server ../cluster/7001/redis.conf
[root@redis2 src]# ./redis-server ../cluster/7002/redis.conf
[root@redis3 redis-6.2.6]# cd src/
[root@redis3 src]# ./redis-server ../cluster/7000/redis.conf
[root@redis3 src]# ./redis-server ../cluster/7002/redis.conf
(七)创建集群(在控制节点上面操作即可,剩余机器不用操作)
Redis是根据IP和Port的顺序,确定master和slave的,所以要排好序,再执行。
在第一台机器执行。
[root@redis1 src]# ./redis-cli --cluster create 192.168.22.156:7000 192.168.22.156:7001 192.168.22.169:7001 192.168.22.169:7002 192.168.22.170:7002 192.168.22.170:7000 --cluster-replicas 1
已经好了。去查看验证一下。
(八)查看集群状态可连接集群中的任一节点,此处连接了集群中的节点
登录集群客户端,-c标识以集群方式登录。 cluster info //查看集群信息
设置lisi,他把东西存在5798这个槽了,到了169的7001节点上,不管它到哪,都可以get,也可以在其他机器查。
不管在哪查,它都能帮你去真正存储数据的那台机器上查询数据。
检查集群状态:任意服务器都可以检查
实验成功。
【注意】少熬夜,多看书
Redis Cluster集群实验相关推荐
- Redis Cluster集群的搭建与实践[转]
Redis Cluster集群的搭建与实践 Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后 ...
- Redis Cluster集群的搭建与实践
Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...
- redis cluster 集群 HA 原理和实操(史上最全、面试必备)
文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 ...
- redis cluster集群选主
redis 选主过程分析 当slave发现自己的master变为FAIL状态时,便尝试进行Failover,以期成为新的master.由于挂掉的master可能会有多个slave.Failover的 ...
- Ubuntu 16.04下Redis Cluster集群搭建(官方原始方案)
前提:先安装好Redis,参考:http://www.cnblogs.com/EasonJim/p/7599941.html 说明:Redis Cluster集群模式可以做到动态增加节点和下线节点,使 ...
- centos7 docker-compose安装_Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- redis cluster 集群重新启动关闭
找遍了redis cluster官方文档,没发现有关集群重新启动和关闭的方法.为啥会没有呢,推測redis cluster至少要三个节点才干执行,三台同一时候挂掉的可能性比較小,仅仅要不同一时候挂掉. ...
- redis cluster 集群 安装 配置 详解
redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...
- rediscluster全局数据_redis迁移,从redis cluster集群迁移数据到另外一个redis cluster集群...
redis迁移,redis集群迁移$ yum install automake libtool autoconf bzip2 -y $ git clone https://github.com/vip ...
- redis集群扩容和缩容_深入理解Redis Cluster集群
一.背景 前面的文章<深入理解Redis哨兵机制>一文中介绍了Redis哨兵集群的工作原理,哨兵集群虽然满足了高可用的特性,但是依然存在这样的问题:即数据只能往一个主节点上进行写入. 只能 ...
最新文章
- 自动化测试系列-自动化测试框架那些事儿
- Linux Ubuntu常用命令
- 【POJ - 3259 】Wormholes(Bellman_Ford或spfa算法,判断有向图中是否存在负环)
- 德国80%的统计学教授都会答错的6个与P值有关的问题!
- 6 QM配置-质量计划配置-定义检验特性的编号范围
- python 员工考勤_用python写的考勤自动打卡程序
- 6-2 错误与异常处理
- css3波,CSS3 声波
- python插件安装包_Python的插件安装
- Camera 360使用之坑
- vue v-for实现多行等分布局-三等分
- python演示,用经验分布逼近总体精确分布
- 已设定选项 ‘readonly‘ (请加 ! 强制执行)
- one algorithm a day keeps the doctor away -- BubbleSort
- 看DeepMind如何用Reinforcement learning玩游戏
- linux模拟蓝牙播放器,为 Ubuntu Linux 开启蓝牙 APTX / LDAC 支持
- mysql 学生成绩管理数据库操作案例
- 国内有哪些比较靠谱的云服务器?
- 数据库的数据独立性体现在哪里?
- RocketMQ编译版安装及安装中遇到的问题 windows版
热门文章
- libpcap简介及网络监测系统
- zabbix为啥持续报警
- Timeline(时间线)
- SpringCloud 配置管理:Nacos
- 重磅丨美国公布长达35页的《2016-2045年新兴科技趋势报告》
- 如何为你的文本标签添加圆点、三角等不规则图形-保姆级教程
- Python画一个中国地图玩玩
- CKA-1.26 模拟试题
- linux小企鹅输入法无法使用,助:小企鹅输入法安装成功,但无法使用!!!!先谢谢大家了!!...
- 什么是模拟信号?数字信号?区别是什么?它们又是如何完成转换的?