主从环境

centos7.6

redis4.0.1

192.168.181.139:6379 192.168.181.136:6379
192.168.181.136:6380 192.168.181.137:6380
192.168.181.137:6381 192.168.181.139:6381

集群实例配置

这里展示192.168.181.139:6379节点的,其他配置修改ip、端口号和文件名

bind 192.168.181.139
port 6379
pidfile /var/run/redis-master-6379.pid
logfile "/data/logs/redis/redis-master-6379.log"
dbfilename dump-master-6379.rdb
dir "/data/redis"
appendonly yes
appendfilename "appendonly-master-6379.aof"
aof-use-rdb-preamble yes
cluster-enabled yes
cluster-config-file nodes-master-6379.conf
cluster-node-timeout 10000

启动实例

完成各个实例启动,该过程略,自行完成实例启动

配置三主三从

配置过程有两种方法,第一个是手动配置,第二个是采用redis-trib.rb工具配置,这先用手动配置。集群配置过程分为节点握手数据槽分配以及主从关系配置三个操作构成。

手动配置三主三从

以下操作在192.168.181.139主机上完成,集群信息共享,所以只用一个节点操作即可

节点握手

# 实例发现
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.139 6379
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.139 6381
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.136 6380
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.136 6379
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.137 6381
redis-cli -h 192.168.181.139 -p 6379 cluster meet 192.168.181.137 6380

*数据槽分配

# 分配数据槽
for i in {0..5400}; do redis-cli -h 192.168.181.139 -p 6379 cluster addslots $i; done > /dev/null
for i in {5401..11000}; do redis-cli -h 192.168.181.136 -p 6380 cluster addslots $i; done > /dev/null
for i in {11001..16383}; do redis-cli -h 192.168.181.137 -p 6381 cluster addslots $i; done > /dev/null

到这一步,一个三主的redis集群已经搭建起来了,接下来配置主从关系,注意,尽量不要让一对主从关系出现在同一个系统上,避免系统故障带来损失

配置集群主从关系是通过实例ID的来配置的,实例ID是唯一性的,查看集群节点,注意查看节点ID,接下来配置主从关系需要用到

# 查看节点ID
[root@ware2 ~]# redis-cli -h 192.168.181.139 -p 6379 cluster nodes
0b03d2098d7cb7e10d540747eed9b2804c424d18 192.168.181.136:6380@16380 master - 0 1551059531000 2 connected 5401-11000
4bf34e9120d54a4d3d609fdea3cf5613787f0d2d 192.168.181.139:6379@16379 myself,master - 0 1551059528000 1 connected 0-5400
ea9e5923466ee0df2447f10c3835ddf1041c0d7f 192.168.181.137:6380@16380 master - 0 1551059531661 5 connected
f0e6d8f9d84209623613dd48a00c8c263b5ecc88 192.168.181.137:6381@16381 master - 0 1551059531000 0 connected 11001-16383
c32bb72dda43f27dd9554cfda556de10ea1220cf 192.168.181.139:6381@16381 master - 0 1551059532000 4 connected
3c2e20644c38878cceb5e4b89a9c9ba7adf03d2a 192.168.181.136:6379@16379 master - 0 1551059532669 3 connected

配置主从关系

# 192.168.181.136:6379作为4bf34e9120d54a4d3d609fdea3cf5613787f0d2d(192.168.181.139:6379)的从实例,以下类似
redis-cli -h 192.168.181.136 -p 6379 cluster replicate 4bf34e9120d54a4d3d609fdea3cf5613787f0d2d
redis-cli -h 192.168.181.137 -p 6380 cluster replicate 0b03d2098d7cb7e10d540747eed9b2804c424d18
redis-cli -h 192.168.181.139 -p 6381 cluster replicate f0e6d8f9d84209623613dd48a00c8c263b5ecc88

到这一步,集群配置完成,可以用以下命令分别查看主从状态和集群信息

# 主从状态
redis-cli -h 192.168.181.139 -p 6379 cluster nodes
# 集群信息
redis-cli -h 192.168.181.139 -p 6379 cluster info

使用redis-trib.rb创建集群

该工具在redis安装后的src目录,对应配置redis集群非常方便,需要安装ruby(version>2.2)环境

本次实验在centos7.6,但自带的ruby2.0版本低于要求,需要手动安装ruby

安装ruby

# 安装rvm
# 通过gpg2导入密钥
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
https://rvm.io/mpapis.asc | gpg2 --import -
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm

rvm常见操作

# 查看rvm库中已知的ruby版本
rvm list known
# 安装一个ruby版本
rvm install 2.3.3
# 使用一个ruby版本
rvm use 2.3.3
# 设置默认版本
rvm use 2.3.3 --default
# 卸载一个已知版本
rvm remove 2.0.0
# 安装redis,这一步很关键
gem install redis

到这一步已经可以使用redis-trib.rb配置集群了

使用redis-trib.rb create命令完成节点握手和槽分配过程

注意:指定 主从节点时,前三个为主节点;后三个为对应从节点

# 在这之前重新搭配环境,删除文件,然后启动各个实例
redis-trib.rb create --replicas 1 192.168.181.139:6379 192.168.181.136:6380 192.168.181.137:6381 192.168.181.139:6381 192.168.181.136:6379 192.168.181.137:6380

配置redis三主三从的更多相关文章

  1. redis cluster + sentinel详细过程和错误处理三主三备三哨兵

    redis cluster + sentinel详细过程和错误处理三主三备三哨兵1.基本架构192.168.70.215 7001 Master + sentinel 27001192.168.70. ...

  2. centos 7 两台机器搭建三主三从 redis 集群

    参考自:https://linux.cn/article-6719-1.htmlhttp://blog.csdn.net/xu470438000/article/details/42971091 ## ...

  3. 在三台服务器,搭建redis三主三从集群

    一.资源准备 1.准备三台服务器H1.H2.H3 172.26.237.83 H1 172.26.237.84 H2 172.26.237.85 H3 二.配置服务器 1.在H1服务器设置SSH免密登 ...

  4. Redis集群搭建 三主三从

    Redis集群介绍 Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存.Redis在3.0版本之前只支持单实例模式 虽然支持主从模式,哨兵模式 ...

  5. 搭建Redis三主三从集群

    Redis三主三从集群规划 10.0.128.19   使用端口 7000  7001 10.0.128.22   使用端口 7002  7003 10.0.128.23   使用端口 7004  7 ...

  6. Redis Cluster 集群三主三从高可用环境搭建

    前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用. Window环境下载地址:https://github.com/tporadowski/redis ...

  7. RocketMQ三主三从二命名服务平滑版本升级实操

    ​本文介绍本次进行RocketMQ平滑过渡升级的实际操作 前文已经介绍过了升级基本原理,主要思想就是先升级NameSrv(命名服务)然后在升级broker节点.broker节点先升级master节点然 ...

  8. k8s 上部署 Redis 三主三从 集群

    目录 介绍 为什么要使用Redis? 什么是Redis群集? 在Kubernetes中部署Redis集群 从 GitHub 上下载: 创建pv 创建statefulset 创建service 初始化 ...

  9. K8S部署Redis Cluster集群(三主三从模式) - 部署笔记

    一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...

随机推荐

  1. Azure Pack演示样例缩放部署架构

  2. MySQl 子查询,左右连接,多表连接学习笔记

    1.子查询是指在还有一个查询语句中的SELECT子句.   例句:   SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);   当中, ...

  3. spark hadoop 对比 Resilient Distributed Datasets

    hadoop 迭代消耗大 每次迭代启动一个完整的MapReduce作业 spark 首要目标就是避免运算时 过多的网络和磁盘IO开销 Resilient Distributed Datasets ht ...

  4. HttpClient-03Http状态管理

    最初,Http被设计成一个无状态的,面向请求/响应的协议,所以它不能在逻辑相关的http请求/响应中保持状态会话.由于越来越多的系统使用http协议,其中包括http从来没有想支持的系统,比如电子商务 ...

  5. 杂项:MySQL

    ylbtech-杂项:MySQL 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. https://www.mysql.com/ 1. https://bai ...

  6. 32.ExtJS简单的动画效果

    转自:http://blog.sina.com.cn/s/blog_74684ec501015lhq.html 说明:这篇文章的大部分内容来源于网上,经过自己实现其效果后,整理如下: 在进行 Java ...

  7. bzoj 1233: [Usaco2009Open]干草堆tower【dp+单调栈】

    参考:https://www.cnblogs.com/N-C-Derek/archive/2012/07/11/usaco_09_open_tower.html 虽然长得很像斜率优化,但是应该不算-- ...

  8. 汇编程序52:实验15 安装新的int9中断例程

    assume cs:code ;重写int9中断例程,当按住a后松开,便会产生满屏A stack segment dw dup() stack ends code segment start: mov ...

  9. json和Jsonp 使用总结(2)

    1.Jsonp的使用 var phoneAgent = navigator.userAgent; var urlDomaintest = " "; function getHref ...

  10. 思维/构造 HDOJ 5353 Average

    题目传送门 /* 思维/构造:赛后补的,当时觉得3题可以交差了,没想到这题也是可以做的.一看到这题就想到了UVA_11300(求最小交换数) 这题是简化版,只要判断行不行和行的方案就可以了,做法是枚举 ...