环境准备 准备 6台(51-56) redis服务器  以默认配置运行redis服务即可 
一.创建Redis集群
1.启用集群功能( 51-56 都要配置)
]#  netstat -antupl |grep :6379(要有东西)
]# /etc/init.d/redis_6379 stop
 
*一一对应,以52为例*
]# vim /etc/redis/6379.conf
70 bind 192.168.4.52
93 port 6352
815 cluster-enabled yes
823 cluster-config-file nodes-6352.conf
829 cluster-node-timeout 5000
:wq
 
]# /etc/init.d/redis_6379 start
 
]# netstat -utnlp  | grep redis-server
tcp  0  0 192.168.4.52:6352  0.0.0.0:* LISTEN      7469/redis-server 1 
tcp  0  0 192.168.4.52:16352 0.0.0.0:* LISTEN      7469/redis-server 1 
 
]# cat /var/lib/redis/6379/nodes-6352.conf  查看集群信息文件
ee0ff6941c920977e98966a80a6b1835ec4944f6 :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
 
2 创建集群
2.1 部署ruby脚本执行环境 (192.168.4.51)  
]# cd nosql/  
]# yum -y install ruby rubygems
]# rpm -ivh ruby-devel-2.0.0.648-30.el7.x86_64.rpm 
]# gem install redis-3.2.1.gem 
 
2.2 创建管理集群的ruby脚本
]# echo $PATH
]# mkdir /root/bin
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
]# cp redis-4.0.8/src/redis-trib.rb /root/bin/
]# chmod +x /root/bin/redis-trib.rb 
]# redis-trib.rb help
 
2.3 创建集群
]# redis-trib.rb  create  --replicas 1 \
> 192.168.4.51:6351  192.168.4.52:6352 \
> 192.168.4.53:6353  192.168.4.54:6354 \
> 192.168.4.55:6355  192.168.4.56:6356
...
Can I set the above configuration? (type 'yes' to accept): yes(输入yes)
...
[OK] All 16384 slots covered.
 
3 查看集群中主机状态信息
]# cat /var/lib/redis/6379/nodes-6354.conf 
]# redis-cli -h 192.168.4.54 -p 6354 
> cluster info
> cluster nodes
集群创建失败的解决办法
]# redis-cli  -h x.x.x.x  -p xxxx  shutdown
]# rm -rf  /var/lib/redis/6379/*
]# /etc/init.d/redis_6379 start
]# netstat -utnlp  | grep redis_server
再次执行创建集群命令
 
4 测试集群 在192.168.4.50 访问集群存取数据(可以连接任意一台主库的ip地址)
]# redis-cli -c -h 192.168.4.51 -p 6351
192.168.4.51:6351> keys *
(empty list or set)
192.168.4.51:6351> 
192.168.4.51:6351> set x 101
192.168.4.53:6353> keys *
1) "x"
 
主库对应的从库,会自动把数据同步到本机。
 
在管理主机51上 执行如下操作
]# redis-trib.rb info 192.168.4.51:6351  查看数据存储情况
192.168.4.51:6351 (aa919b76...) -> 0 keys | 5461 slots | 1 slaves.
192.168.4.52:6352 (83d43aaf...) -> 0 keys | 5462 slots | 1 slaves.
192.168.4.53:6353 (46a1d2ec...) -> 1 keys | 5461 slots | 1 slaves.
 
]# redis-trib.rb check 192.168.4.51:6351 查看集群信息
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: aa919b76cfddf094256a228b84f63087dc2b6af3 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 8252253a0e18bdc7151027080e01477967ed1364 192.168.4.56:6356
   slots: (0 slots) slave
   replicates 83d43aaf83697e4f76947c3b4b534912a02b9048
M: 83d43aaf83697e4f76947c3b4b534912a02b9048 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 46a1d2ecee4ac309c3557295900182a43dd611d4 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 1b2535c616fcdc4fec50369e3e0fdc0f998ab041 192.168.4.55:6355
   slots: (0 slots) slave
   replicates aa919b76cfddf094256a228b84f63087dc2b6af3
S: ca21191e7430151953267f46fc9dc310f7e08b0b 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 46a1d2ecee4ac309c3557295900182a43dd611d4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
主库  从库
51 -- 55
52 -- 56
53 -- 54
 
主库 宕机后,对应的从库会自动升级为主库(52宕机,56主库)
]# redis-cli -h 192.168.4.52 -p 6352 shutdown
]# redis-trib.rb check 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: aa919b76cfddf094256a228b84f63087dc2b6af3 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 8252253a0e18bdc7151027080e01477967ed1364 192.168.4.56:6356
   slots:5461-10922 (5462 slots) master
   0 additional replica(s)
M: 46a1d2ecee4ac309c3557295900182a43dd611d4 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 1b2535c616fcdc4fec50369e3e0fdc0f998ab041 192.168.4.55:6355
   slots: (0 slots) slave
   replicates aa919b76cfddf094256a228b84f63087dc2b6af3
S: ca21191e7430151953267f46fc9dc310f7e08b0b 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 46a1d2ecee4ac309c3557295900182a43dd611d4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 
开启52,变为56的从库
l52 utils]# /etc/init.d/redis_6379 start
]# redis-trib.rb check 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: aa919b76cfddf094256a228b84f63087dc2b6af3 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 8252253a0e18bdc7151027080e01477967ed1364 192.168.4.56:6356
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 83d43aaf83697e4f76947c3b4b534912a02b9048 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 8252253a0e18bdc7151027080e01477967ed1364
M: 46a1d2ecee4ac309c3557295900182a43dd611d4 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 1b2535c616fcdc4fec50369e3e0fdc0f998ab041 192.168.4.55:6355
   slots: (0 slots) slave
   replicates aa919b76cfddf094256a228b84f63087dc2b6af3
S: ca21191e7430151953267f46fc9dc310f7e08b0b 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 46a1d2ecee4ac309c3557295900182a43dd611d4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 
二.管理集群
 
准备2台新的虚拟机ip 地址分别为 192.168.4.57  192.168.4.58 
运行redis服务并启用的集群配置
 
]# /etc/init.d/redis_6379 stop
]# vim /etc/redis/6379.conf(52为例子)
70 bind 192.168.4.52
93 port 6352
815 cluster-enabled yes
823 cluster-config-file nodes-6352.conf
829 cluster-node-timeout 5000
:wq
]# /etc/init.d/redis_6379 start
]# netstat -utnlp  | grep redis-server
 
2.1 向集群里添加新主机
 
2.1.1 添加master角色主机  (添加 192.168.4.57,在51操作) 
]# redis-trib.rb add-node 192.168.4.57:6357 192.168.4.51:6351
 
]# redis-trib.rb check 192.168.4.51:6351 查看
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: aa919b76cfddf094256a228b84f63087dc2b6af3 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 8252253a0e18bdc7151027080e01477967ed1364 192.168.4.56:6356
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 7ac349e23d72f46967eeb0ef6b022c27396a4388 192.168.4.57:6357
   slots: (0 slots) master
   0 additional replica(s)
S: 83d43aaf83697e4f76947c3b4b534912a02b9048 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 8252253a0e18bdc7151027080e01477967ed1364
M: 46a1d2ecee4ac309c3557295900182a43dd611d4 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 1b2535c616fcdc4fec50369e3e0fdc0f998ab041 192.168.4.55:6355
   slots: (0 slots) slave
   replicates aa919b76cfddf094256a228b84f63087dc2b6af3
S: ca21191e7430151953267f46fc9dc310f7e08b0b 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 46a1d2ecee4ac309c3557295900182a43dd611d4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 
]# redis-trib.rb reshard 192.168.4.51:6351 重新分片 
指定移出hash槽个数    4096
指定接收hash槽主机ID 57主机的ID值
指定移出hash槽主机ID all
同意这样分片 yes
 
查看分片
]# redis-trib.rb check 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: aa919b76cfddf094256a228b84f63087dc2b6af3 192.168.4.51:6351
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
M: 8252253a0e18bdc7151027080e01477967ed1364 192.168.4.56:6356
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
M: 7ac349e23d72f46967eeb0ef6b022c27396a4388 192.168.4.57:6357
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   0 additional replica(s)
S: 83d43aaf83697e4f76947c3b4b534912a02b9048 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 8252253a0e18bdc7151027080e01477967ed1364
M: 46a1d2ecee4ac309c3557295900182a43dd611d4 192.168.4.53:6353
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
S: 1b2535c616fcdc4fec50369e3e0fdc0f998ab041 192.168.4.55:6355
   slots: (0 slots) slave
   replicates aa919b76cfddf094256a228b84f63087dc2b6af3
S: ca21191e7430151953267f46fc9dc310f7e08b0b 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 46a1d2ecee4ac309c3557295900182a43dd611d4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 
客户端连接主库57 可以存取数据
]# redis-cli -c -h 192.168.4.57 -p 6357
192.168.4.57:6357> ping
PONG
192.168.4.57:6357> set key 111
-> Redirected to slot [12539] located at 192.168.4.53:6353
OK
192.168.4.53:6353> get key
"111"
192.168.4.53:6353> keys *
1) "key"
2) "x"
 
2.1.2 添加slave角色主机 (添加slave 192.168.4.58 51上操作)
 
]# redis-trib.rb add-node --slave 192.168.4.58:6358 192.168.4.51:6351
]# redis-trib.rb check 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: aa919b76cfddf094256a228b84f63087dc2b6af3 192.168.4.51:6351
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
M: 8252253a0e18bdc7151027080e01477967ed1364 192.168.4.56:6356
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
M: 7ac349e23d72f46967eeb0ef6b022c27396a4388 192.168.4.57:6357
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   1 additional replica(s)
S: 83d43aaf83697e4f76947c3b4b534912a02b9048 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 8252253a0e18bdc7151027080e01477967ed1364
S: a28a8ad17defa60a4169262a909a17e46d5ce699 192.168.4.58:6358
   slots: (0 slots) slave
   replicates 7ac349e23d72f46967eeb0ef6b022c27396a4388
M: 46a1d2ecee4ac309c3557295900182a43dd611d4 192.168.4.53:6353
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
S: 1b2535c616fcdc4fec50369e3e0fdc0f998ab041 192.168.4.55:6355
   slots: (0 slots) slave
   replicates aa919b76cfddf094256a228b84f63087dc2b6af3
S: ca21191e7430151953267f46fc9dc310f7e08b0b 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 46a1d2ecee4ac309c3557295900182a43dd611d4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 
自动分配给57
 
客户端连接主库58 可以查看到数据 
]# redis-cli -c -h 192.168.4.58 -p 6358
192.168.4.58:6358> set t2 333
-> Redirected to slot [4748] located at 192.168.4.51:6351
OK
192.168.4.51:6351> keys *
1) "t2"
192.168.4.51:6351> set t3 444
-> Redirected to slot [685] located at 192.168.4.57:6357
OK
192.168.4.57:6357> keys *
1) "t3"
192.168.4.57:6357> set t4 444
-> Redirected to slot [12874] located at 192.168.4.53:6353
OK
192.168.4.53:6353> keys *
1) "t4"
2) "key"
3) "x"
 
2.2 从集群里移除主机
2.2.1 移除slave角色主机  (移除192.168.4.58,51操作)
redis-trib.rb del-node 任意主机 被移除主机ID(slave主机没有haxi槽,可直接移除)
]# redis-trib.rb del-node 192.168.4.51:6351 a28a8ad17defa60a4169262a909a17e46d5ce699
]# redis-trib.rb check 192.168.4.51:6351
此时没有58的slave信息
 
2.2.2 移除master角色主机  (移除 192.168.4.57 51操作)
释放占用的hash槽 
]# redis-trib.rb reshard 192.168.4.51:6351
    指定移出hash槽个数     4096
    指定接收hash槽主机ID  写任意一个主库ID值
   Source node #1:     写57主机的ID值
   Source node #2:     done
    同意这样分片             yes
移除master主机  
]# redis-trib.rb del-node 192.168.4.51:6351 7ac349e23d72f46967eeb0ef6b022c27396a4388 
检测集群 
]# redis-trib.rb check 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: aa919b76cfddf094256a228b84f63087dc2b6af3 192.168.4.51:6351
   slots:0-6826,10923-12287 (8192 slots) master
   1 additional replica(s)
M: 8252253a0e18bdc7151027080e01477967ed1364 192.168.4.56:6356
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
S: 83d43aaf83697e4f76947c3b4b534912a02b9048 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 8252253a0e18bdc7151027080e01477967ed1364
M: 46a1d2ecee4ac309c3557295900182a43dd611d4 192.168.4.53:6353
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
S: 1b2535c616fcdc4fec50369e3e0fdc0f998ab041 192.168.4.55:6355
   slots: (0 slots) slave
   replicates aa919b76cfddf094256a228b84f63087dc2b6af3
S: ca21191e7430151953267f46fc9dc310f7e08b0b 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 46a1d2ecee4ac309c3557295900182a43dd611d4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 
重新平均分配hash槽 
]# redis-trib.rb rebalance 192.168.4.51:6351
]# redis-trib.rb check 192.168.4.51:6351 查看
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: aa919b76cfddf094256a228b84f63087dc2b6af3 192.168.4.51:6351
   slots:2731-6826,10923-12287 (5461 slots) master
   1 additional replica(s)
M: 8252253a0e18bdc7151027080e01477967ed1364 192.168.4.56:6356
   slots:0-1365,6827-10922 (5462 slots) master
   1 additional replica(s)
S: 83d43aaf83697e4f76947c3b4b534912a02b9048 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 8252253a0e18bdc7151027080e01477967ed1364
M: 46a1d2ecee4ac309c3557295900182a43dd611d4 192.168.4.53:6353
   slots:1366-2730,12288-16383 (5461 slots) master
   1 additional replica(s)
S: 1b2535c616fcdc4fec50369e3e0fdc0f998ab041 192.168.4.55:6355
   slots: (0 slots) slave
   replicates aa919b76cfddf094256a228b84f63087dc2b6af3
S: ca21191e7430151953267f46fc9dc310f7e08b0b 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 46a1d2ecee4ac309c3557295900182a43dd611d4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
 
把redis集群里的主机 恢复为独立的redis服务器(51-58)
]# redis-cli -h 192.168.4.51 -p 6351 shutdown
]# rm -rf /var/lib/redis/6379/*
]# vim /etc/redis/6379.conf  (把与集群配置相关的 3项 注释)
]# /etc/init.d/redis_6379 start
]# netstat -utnlp  | grep  redis-server

四十.创建Redis集群 管理集群的更多相关文章

  1. AngularJS进阶(四十)创建模块、服务

    AngularJS进阶(四十)创建模块.服务 学习要点 使用模块构架应用 创建和使用服务 为什么要使用和创建服务与模块? 服务允许你打包可重用的功能,使之能在此应用中使用. 模块允许你打包可重用的功能 ...

  2. 049.Kubernetes集群管理-集群监控Metrics

    一 集群监控 1.1 Metrics Kubernetes的早期版本依靠Heapster来实现完整的性能数据采集和监控功能,Kubernetes从1.8版本开始,性能数据开始以Metrics API的 ...

  3. 高可用Redis(十):Redis原生命令搭建集群

    1.搭建Redis Cluster主要步骤 1.配置开启节点 2.meet 3.指派槽 4.主从关系分配 2.环境说明 两台虚拟机,IP地址分别为:192.168.81.100和192.168.81. ...

  4. Spring Boot教程(四十)使用Flyway来管理数据库版本

    在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate实现对用户表的增删改查操作.在实现这个例子的时候,我们事先在MySQL中创建了用户表.创建表的过程我们在实 ...

  5. Spring Boot教程(四十二)LDAP来管理用户信息(2)

    使用spring-data-ldap的基础用法,定义LDAP中属性与我们Java中定义实体的关系映射以及对应的Repository @Data @Entry(base = "ou=peopl ...

  6. Clusternet - 新一代开源多集群管理与应用治理项目

    作者 徐迪,腾讯云容器技术专家. 汝英哲,腾讯云高级产品经理. 摘要 在过去的数年里,云计算领域经历了多次巨大的变革,当前越来越多的组织将应用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公 ...

  7. 【MSP是什么】MSP认证之成功的项目群管理

    同项目管理相比,项目群管理是为了实现项目群的战略目标与利益,而对一组项目进行的统一协调管理. 项目群管理 项目群管理是以项目管理为核心.单个项目上进行日常性的项目管理,项目群管理是对多个项目进行的总体 ...

  8. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  9. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

随机推荐

  1. scrapy2——框架简介和抓取流程

    scrapy简介 ​ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中 scrapy的执行流程 Scrapy主要包括 ...

  2. ~postman全局变量与环境变量介绍

    postman官方文档:https://learning.getpostman.com/docs/postman/scripts/test_examples/ 一.环境变量 实例:将URL作为环境变量 ...

  3. C语言变量和常量

    常量 在程序执行过程中,其值不能被改变 常量一般出现在表达式或者赋值语句 利用const 修饰的变量为常量,不可修改 利用define定义的一般为常量,定义时候不需要分号 利用extern修饰的量知识 ...

  4. MySQL事务原理浅析

    前言​ 因为自己对数据的可靠性,可用性方面特别感兴趣,所以在MySQL事务方面看了很多资料,也看了很多博客,所以想到自己也写一篇博客整理整理自己所学内容,尽量用自己的语言解释得通俗易懂. 事务经典场景 ...

  5. 1byte、1KB、4KB,1MB、1GB用16进制表示的范围。任意地址范围求字节数

    1byte.1KB.4KB,1MB.1GB用16进制表示的范围.任意地址范围求字节数 2018-02-12 18:27:48 望那伊人 阅读数 5032更多 分类专栏: 计算机相关   版权声明:本文 ...

  6. 题解-APIO2019桥梁

    problem \(\mathrm {loj-3145}\) 题意概要:给定一张 \(n\) 点 \(m\) 边的无向图,边有边权,共 \(q\) 次操作,每次会将第 \(x\) 条边的权值改为 \( ...

  7. layer.open自定义弹出位置

    fixed:false,设置top才有效,待测试. 这个设置不起作用 var img = "<img src=\"/_temp/qrcodenet/m/book/book20 ...

  8. ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端

    原文:https://www.stevejgordon.co.uk/httpclientfactory-named-typed-clients-aspnetcore  发表于:2018年1月 上一篇文 ...

  9. iOS - 数据存储方式(本地化)

    iOS中数据存储方式 一般使用以下4种:(已更新) .NSKeyedAchiever//序列化 存放对象 .NSUserDefaults//本质是plist存储 NSData.NSString.NSN ...

  10. STM8 工程模版

    在st官网下载STM8固件库 拷贝固件库到工程目录下 再创建两个目录 user:存放用户文件.自己编写的源文件 project:存放工程文件 拷贝stm8s_conf.h到user目录下 AIR 创建 ...