redis 之 集群
#:下载源码包,并编译安装 [root@localhost src]# wget http://download.redis.io/releases/redis-4.0.14.tar.gz
[root@localhost redis]# tar xf redis-4.0.14.tar.gz
[root@localhost redis]# cd redis-4.0.14/
[root@localhost redis]# make PREFIX=/apps/redis install #:创建redis用户 [root@localhost redis]# groupadd -g 55 redis && useradd -g redis -u 55 redis #:创建所需目录 [root@localhost redis]# mkdir /apps/redis/{data,logs,run,etc} #:准备配置文件 [root@localhost src]# cd /usr/local/src/redis-4.0.14/
[root@localhost redis-4.0.14]# cp redis.conf /apps/redis/etc/ #:配置环境变量 [root@localhost redis-4.0.14]# cd /apps/redis/
[root@localhost redis]# ln -sv bin/redis-* /usr/bin #:配置启动脚本 [root@localhost redis]# vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target [Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
#ExecStop=/usr/libexec/redis-shutdown
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755 [Install]
WantedBy=multi-user.target #:修改配置文件 [root@localhost ~]# vim /apps/redis/etc/redis.conf
bind 0.0.0.0
pidfile /apps/redis/run/redis_6379.pid
logfile "/apps/redis/logs/redis_6379.log"
stop-writes-on-bgsave-error no
dir "/apps/redis/data"
masterauth 123456
requirepass 123456
appendonly yes
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 30000 #:修改目录的属主属组 [root@localhost apps]# chown -R redis.redis ./* #:将文件打包,并传给所有节点(在所有节点必须创建apps目录,和redis用户) [root@localhost apps]# tar zcvf redis.tar.gz ./*
[root@localhost apps]# scp redis.tar.gz 192.168.7.102:/apps/
[root@localhost apps]# scp redis.tar.gz 192.168.7.103:/apps/
[root@localhost apps]# scp redis.tar.gz 192.168.7.104:/apps/
[root@localhost apps]# scp redis.tar.gz 192.168.7.105:/apps/
[root@localhost apps]# scp redis.tar.gz 192.168.7.106:/apps/
#:将启动脚本拷贝到各节点
[root@localhost lib]# scp /usr/lib/systemd/system/redis.service 192.168.7.102:/usr/lib/systemd/system/
[root@localhost lib]# scp /usr/lib/systemd/system/redis.service 192.168.7.103:/usr/lib/systemd/system/
[root@localhost lib]# scp /usr/lib/systemd/system/redis.service 192.168.7.104:/usr/lib/systemd/system/
[root@localhost lib]# scp /usr/lib/systemd/system/redis.service 192.168.7.105:/usr/lib/systemd/system/
[root@localhost lib]# scp /usr/lib/systemd/system/redis.service 192.168.7.106:/usr/lib/systemd/system/
#:在各几点解压并安装启动
创建集群
需要使用到集群管理工具 redis-trib.rb,这个工具是 redis 官方推出的管理 redis 集群的工具,集成在redis 的源码 src 目录下,是基于 redis 提供的集群命令封装成简单、便捷、实用的操作工具,redis- trib.rb 是 redis 作者用 ruby 开发完成的,centos 系统 yum 安装的 ruby 存在版本较低
#:解决ruby版本较低问题 [root@localhost ~]# wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.5.tar.gz
[root@localhost ~]# tar xf ruby-2.5.5.tar.gz
[root@localhost ruby-2.5.5]# cd ruby-2.5.5/
[root@localhost ruby-2.5.5]# ./configure
[root@localhost ruby-2.5.5]# make -j 2
[root@localhost ruby-2.5.5]# make install
[root@localhost ruby-2.5.5]# gem install redis [root@localhost ruby-2.5.5]# ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux] #:验证 redis-trib.rb 命令是否可执行 [root@localhost ruby-2.5.5]# cp /usr/local/src/redis-4.0.14/src/redis-trib.rb /usr/bin
[root@localhost ruby-2.5.5]# redis-trib.rb #:修改密码为redis的登录密码 [root@localhost lib]# vim /usr/local/lib/ruby/gems/2.5.0/gems/redis-4.1.2/lib/redis/client.rb
:password => 123456, #:创建集群
[root@localhost redis]# redis-trib.rb create --replicas 1 192.168.7.101:6379 192.168.7.102:6379 192.168.7.103:6379 192.168.7.104:6379 192.168.7.105:6379 192.168.7.106:6379
集群维护之动态添加节点
在准备两台redis服务器,因为一主一从,按照以前的步骤先将两台主机配置成redis服务器 #:添加节点到集群 [root@localhost lib]# redis-trib.rb add-node 192.168.7.107:6379 192.168.7.101:6379 #:分配槽位(添加主机之后需要对添加至集群种的新主机重新分片否则其没有分片)(有几个主节点就用16384除于几个主节点) [root@localhost lib]# redis-trib.rb reshard 192.168.7.107:6379 #:验证一下 [root@localhost lib]# redis-trib.rb check 192.168.7.101:6379 #:为新的master添加slave节点(先将从节点也加入到集群) [root@localhost lib]# redis-trib.rb add-node 192.168.7.108:6379 192.168.7.101:6379 #;先连接进slave节点(然后设置成从服务区) [root@localhost lib]# redis-cli -h 192.168.7.108
192.168.7.108:6379> AUTH 123456
OK
192.168.7.108:6379> CLUSTER NODES
cdebab30a87d4fbca43eb6a87bd27ac032db68b8 192.168.7.105:6379@16379 slave 62c85875d14f9468f2019d90e800bac7175a3b87 0 1568086716108 8 connected
c6d3bc831a365822922798dd957adc063d4500b3 192.168.7.108:6379@16379 myself,master - 0 1568086714000 0 connected
691104e3a3ea714f64778d660c043137c8499815 192.168.7.102:6379@16379 master - 0 1568086717119 2 connected 6827-10922
f8ae70864fcdec35913f7217274f5a8d03a80899 192.168.7.104:6379@16379 slave 8474a3ca08a8f6e60901bb81b5b580935e2ead2e 0 1568086716000 3 connected
9ff8fdf8711a8e1b1e443e200a54879f30a4d6f6 192.168.7.106:6379@16379 slave 691104e3a3ea714f64778d660c043137c8499815 0 1568086715000 2 connected
8474a3ca08a8f6e60901bb81b5b580935e2ead2e 192.168.7.103:6379@16379 master - 0 1568086713000 3 connected 12288-16383
62c85875d14f9468f2019d90e800bac7175a3b87 192.168.7.101:6379@16379 master - 0 1568086714000 8 connected 1365-5460
647bfe7cc607de88f95c26ddb3044823631b3d52 192.168.7.107:6379@16379 master - 0 1568086714087 9 connected 0-1364 5461-6826 10923-12287
192.168.7.108:6379> CLUSTER REPLICATE 647bfe7cc607de88f95c26ddb3044823631b3d52 #:执行此命令
集群维护之动态删除节点
添加节点的时候是先添加 node 节点到集群,然后分配槽位,删除节点的操作与添加节点的操作正
好相反,是先将被删除的 Redis node 上的槽位迁移到集群中的其他 Redis node 节点上,然后再将其删除。
#:还是进行reshard [root@localhost lib]# redis-trib.rb reshard 192.168.7.101:6379
How many slots do you want to move (from 1 to 16384)? 4096 #要下线服务器槽位的总数 What is the receiving node ID? 647bfe7cc607de88f95c26ddb3044823631b3d52 #把槽位分配给谁 Source node #1:8474a3ca08a8f6e60901bb81b5b580935e2ead2e#:从哪个服务器分配槽位(要下线的服务器) Source node #2:done #如果没有了,则写done #:将服务器从集群中删除 [root@localhost lib]# redis-trib.rb del-node 192.168.7.101:6379 8474a3ca08a8f6e60901bb81b5b580935e2ead2e #;然后将从节点也删除 [root@localhost lib]# redis-trib.rb del-node 192.168.7.101:6379 9ff8fdf8711a8e1b1e443e200a54879f30a4d6f6
redis 之 集群的更多相关文章
- Redis分布式集群几点说道
原文地址:http://www.cnblogs.com/verrion/p/redis_structure_type_selection.html Redis分布式集群几点说道 Redis数据量日益 ...
- Redis集群(九):Redis Sharding集群Redis节点主从切换后客户端自动重新连接
上文介绍了Redis Sharding集群的使用,点击阅读 本文介绍当某个Redis节点的Master节点发生问题,发生主从切换时,Jedis怎样自动重连新的Master节点 一.步骤如下: 1.配 ...
- Redis集群(八):Redis Sharding集群
一.Redis目前的集群方案主要有两种:Redis Sharding和Redis Cluster 1.Redis Sharding:3.0以前基本上使用分片实现集群,目前主流方案,客户端实现 2.Re ...
- 170103、Redis官方集群方案 Redis Cluster
前面我们谈了Redis Sharding多服务器集群技术,Redis Sharding是客户端Sharding技术,对于服务端来说,各个Redis服务器彼此是相互独立的,这对于服务端根据需要灵活部署R ...
- 【redis】 redis 创建集群时,Waiting for the cluster to join.... 一直等待
redis 搭建集群时,一直join.... ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1: ...
- Redis 一二事 - 在spring中使用jedis 连接调试单机redis以及集群redis
Redis真是好,其中的键值用起来真心强大啊有木有, 之前的文章讲过搭建了redis集群 那么咋们该如何调用单机版的redis以及集群版的redis来使用缓存服务呢? 先讲讲单机版的,单机版redis ...
- 【Redis】Redis分布式集群几点说道
Redis数据量日益增大,使用的公司越来越多,不仅用于做缓存,同时趋向于存储这一块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架构,大部分都是采用分片 ...
- nginx+tomcat+redis的集群+session共享
nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...
- docker1.12 安装redis第三方集群方案 codis
docker1.12 安装redis第三方集群方案 codis
- 02.Redis主从集群的Sentinel配置
1.集群环境 1.Linux服务器列表 使用4台CentOS Linux服务器搭建环境,其IP地址如下: 192.168.110.100 192.168.110.101 192.168.110.102 ...
随机推荐
- tmux会话断电保存自动恢复
tmux可以用于会话管理,通过建立session,可以保证当前设备和服务期断开连接之后,会话中的指令继续运行,非常适合用于执行需要长时间运行的任务. 但是tmux也有一个问题,那就是session在服 ...
- Go语言核心36讲(Go语言实战与应用三)--学习笔记
25 | 更多的测试手法 在本篇文章,我会继续为你讲解更多更高级的测试方法.这会涉及testing包中更多的 API.go test命令支持的,更多标记更加复杂的测试结果,以及测试覆盖度分析等等. 前 ...
- 为什么建议使用你 LocalDateTime ,而不是 Date?
在项目开发过程中经常遇到时间处理,但是你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat吗 通过阅读本篇文章你将了解到: 为什么需要LocalDate.Loca ...
- 运行脚本 结果出现 Vim: Warning 并且卡住不能输入其它命令
当我在执行一个 关于执行linux操作的php脚本时,就出现了以下信息:"Vim: Warning: Output is not to a terminal",接着出现了一大堆的字 ...
- Python进阶(装饰器)
from datetime import datetime def log(func):#func表示装饰器作用于的函数 def wrapper(*args,**kw):#wrapper返回装饰器作用 ...
- selet 语句详解
SELECT 语句的基本格式为: SELECT 要查询的列名 FROM 表名字 WHERE 限制条件; 2.0 数学符号条件 SELECT 语句常常会 ...
- 菜鸡的Java笔记 第二十二 - java 对象多态性
本次只是围绕着多态性的概念来进行讲解,但是所讲解的代码与实际的开发几乎没有关系,而且多态一定是在继承性的基础上才可以操作的, 而本次将使用类继承的关系来描述多态的性质,实际的开发中不会出 ...
- centos7.6自动化安装mysql5.5
一.目的 简化安装mysql的安装过程,局限很大,仅支持centos7.6上安装mysql5.5.60,如果想在其他版本的操作系统安装mysql,请自行修改有关变量. 如果想了解mysql安装的具体过 ...
- C#疑问
在Microsoft.NET里面int=Int32Int64=long但是在其他.NET环境下面可能不是这样的.C#是一门计算机编程语言,是经过标准化,也就是说其他的人也可以根据它的语法去实现它的编译 ...
- [luogu6838]网络站点
先分析答案,即$x$和$y$的关系有以下两种: 1.$y$在$x$子树中,那么答案即为包含$y$的$x$的儿子 2.$y$不在$x$子树中,那么答案即为$x$的父亲 那么第一个问题就是判断$y$是否在 ...