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 ...
随机推荐
- pip 安装使用 ImportError: No module named setuptools 解决方法
安装过程详见这篇博客: http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa/ 安装后运行到:python setup.py ins ...
- k8s入坑之路(7)kubernetes设计精髓List/Watch机制和Informer模块详解
1.list-watch是什么 List-watch 是 K8S 统一的异步消息处理机制,保证了消息的实时性,可靠性,顺序性,性能等等,为声明式风格的API 奠定了良好的基础,它是优雅的通信方式,是 ...
- 【java+selenium3】Tesseract-OCR识别图片验证码 (十六)
[java+selenium+Tesseract-OCR(图片识别)+AutoIt(windows窗口识别)]完成自动化图片验证码识别! 一.AutoIt(windows窗口识别)参考:https:/ ...
- git stash 存储命令
应用场景 一.当你接到一个修复紧急 bug 的任务时候,一般都是先创建一个新的 bug 分支来修复它,然后合并,最后删除.但是,如果当前你正在开发功能中,短时间还无法完成,无法直接提交到仓库,这时候可 ...
- MySQL:互联网公司常用分库分表方案汇总!
一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...
- RabbitMQ 处理过慢,原来是一个 SQL 缓存框架导致的 GC 频繁触发
一:背景 1. 讲故事 上个月底,有位朋友微信找到我,说他的程序 多线程处理 RabbitMQ 时过慢,帮忙分析下什么原因,截图如下: 这问题抛出来,有点懵逼,没说CPU爆高,也没说内存泄漏,也没说程 ...
- Mui中mui.openWindow()方法具体参数信息(内容来自Mui问题专区)
mui.openWindow({ url: 'xxx.html', //String类型,要打开的界面的地址 id: 'id', //String类型,要打开的界面的id styles: { //We ...
- Veeam Backup & Replication 10.0.0.4461安装部署(包含补丁)
Veeam Backup & Replication 是一款数据保护软件,为VMware 和Hyper-V 虚拟机.物理与云环境提供了备份.复制与恢复选项.如有需要请去官方购买正版授权:htt ...
- [loj6033]棋盘游戏
将棋盘黑白染色,即构成一张二分图 将状态用一张二分图$G$和一个点$x\in V$描述(分别为仍未被经过的点的导出子图和当前棋子所在位置),并称将要移动棋子的一方为先手 结论:先手必胜当且仅当$x$一 ...
- javascript-初级-day05js函数传参
JS基础-01 函数传参.参数类型-1 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Conten ...