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 ...
随机推荐
- 欢迎加入XiyouLinuxGroup邮件列表
一:为什么要使用邮件列表? 与QQ,微信等即时通讯的交流方式相比,使用邮件列表交流有以下好处: 保存性好,易于阅读.它能将一个问题讨论的过程完全保存下来,但是QQ的话,聊天记录很容易就刷没了,再也无法 ...
- AliRTC 开启视频互动 “零计算” 时代
在 2021 云栖大会<产业视频化创新与最佳实践>视频云主题论坛中,阿里云智能高级技术专家在<AliRTC 开启视频互动 "零处理" 时代>的主题演讲中,发 ...
- 升级JDK8的坎坷之路
为更好的适应JAVA技术的发展,使用更先进及前沿的技术.所以推出将我们现在使用的JDK1.6(1.7)及tomcat6(7)升级至JDK1.8及tomcat8,使我们的系统获得更好的性能,更好适应未来 ...
- webpack 提取css成单独文件
webpack 提取css成单独文件 // 用来拼接绝对路径的方法 const {resolve} = require('path') const HtmlWebpackPlugin = requir ...
- elasitcsearch单机版安装
1.下载压缩包 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz 2.解压修改配置文件 c ...
- Linux ns 3. Mnt Namespace 详解
1. 文件系统层次化 对 Linux 系统来说一切皆文件,Linux 使用树形的层次化结构来管理所有的文件对象. 完整的Linux文件系统,是由多种设备.多种文件系统组成的一个混合的树形结构.我们首先 ...
- 菜鸡的Java笔记 第二十八 - java 包的定义
包的主要作用以及定义 包的导入操作 系统常见的开发包 jar 程序命令 包的定义 在任何的操作系统之中都有一个统一的共识:同一个目录下不能够存在有相同的文 ...
- [atARC122F]Domination
如果一个红石头在另一个红石头的左下方(包括左和下),那么在后者的限制满足时,前者也一定满足,因此可以删去前者,再将其按照$rx_{i}$排序,即有$rx_{1}<rx_{2}<...< ...
- [noi39]子图
小w喜欢的图可以发现就是一棵森林(是不是很神奇,其实易证:如果有环那么环本身就不合法,如果没有环那么显然合法).继续研究发现删边最小<=>选边最大<=>最大生成森林,krusk ...
- [luogu5654]基础函数练习题
答案即区间$[l,r]$的笛卡尔树上,左右子树有一个为空的点到根路径和(定义此为的该点答案)的max, 对求区间笛卡尔树复杂度为$o(n)$,无法通过,因此在全局笛卡尔树中考虑此问题 设$k$为$l$ ...