redis集群官网文档

https://redis.io/topics/cluster-tutorial

下载文档

https://redis.io/download

23种服务脚本

https://github.com/goodboy23/shell-script-collection

docker部署redis集群

https://www.cnblogs.com/cxbhakim/p/9151720.html

https://www.cnblogs.com/wozijisun/p/6043511.html

redis集群

https://www.cnblogs.com/lykxqhh/p/5690923.html

https://blog.csdn.net/qq_42815754/article/details/82912130

主要操作文档

http://www.52wiki.cn/docs/redis/redis-1albdinm7t228

yum install -y wget

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz

wget https://rubygems.org/downloads/redis-4.0.0.gem

一 环境准备

1

gcc -v

gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)

yum -y install gcc gcc-c++

yum install -y gcc g++ make gcc-c++ kernel-devel automake autoconf libtool make wget tcl vim unzip git

yum -y install zlib-devel #不编译安装后面会报错

yum -y install openssl-devel #不编译安装后面会报错

2.解压redis并编译安装

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

mkdir /app/redis/ -p

tar-xvf redis-4.0.9.tar.gz -C /app/redis

cd/app/redis/redis-4.0.9/make

make install

多了几个文件

ls /usr/local/bin

3.编译安装ruby

cd

tar-xvf ruby-2.5.1.tar.gz -C /app/redis

cd/app/redis/ruby-2.5.1/./configure --prefix=/usr/local/ruby

make&& make install

ls /usr/local/ruby #查看文件

配置ruby环境变量

vi /etc/profile

export PATH=$PATH:/usr/local/ruby/bin

:wq

source /etc/profile

echo $PATH

ruby -v

4.创建redis-cluster集群目录并拷贝redis的gem包以及在src下将redis-trib.rb 集群管理工具拷贝到集群目录

cd

mkdir-p /app/redis/redis-cluster

cp redis-4.0.0.gem /app/redis/redis-cluster/cp/app/redis/redis-4.0.9/src/redis-trib.rb /app/redis/redis-cluster/cd/app/redis/redis-cluster/

5.找到原先ruby安装目录,并做如下修改

cd /app/redis/ruby-2.5.1/ext/zlib

ruby extconf.rb --成功会出现creating Makefile

creating Makefile --如果没有出现creating Makefile,执行下面的命令

ruby extconf.rb --with-zlib-dir=/usr/local/zlib/

vi Makefile

将 zlib.o: $(top_srcdir)/include/ruby.h

修改为 zlib.o: ../../include/ruby.h

make

make install

如果上面再执行make之前不修改Makefile,将会报下面的错误

make: * No rule to make target /include/ruby.h', needed byzlib.o’. Stop.

6.找到原先的ruby安装目录并做如下修改

cd /app/redis/ruby-2.5.1/ext/openssl

ruby extconf.rb --成功会出现creating Makefile

vi Makefile

将所有的$(top_srcdir)修改为 ../..($(top_srcdir)不止一个)

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

参考:https://www.cnblogs.com/tovep/articles/2715803.html

:%s#$(top_srcdir)#../..#g #有31个

make

linking shared-object openssl.so

make install

/usr/bin/install -c -m 0755 openssl.so /usr/local/ruby/lib/ruby/site_ruby/2.5.0/x86_64-linux

installing default openssl libraries

如果上面再执行make之前不修改Makefile,将会报下面的错误

make: * No rule to make target /include/ruby.h', needed byossl.o’. Stop.

7.使用gem安装redis的gem包

cd /app/redis/redis-cluster

gem install redis-4.0.0.gem

二 创建集群

1.集群节点准备

cd /app/redis/redis-cluster/

mkdir 700{1,2,3,4,5,6}

cd /app/redis/redis-4.0.9

cp redis.conf /app/redis/redis-cluster/7001/

cp redis.conf /app/redis/redis-cluster/7002/

cp redis.conf /app/redis/redis-cluster/7003/

cp redis.conf /app/redis/redis-cluster/7004/

cp redis.conf /app/redis/redis-cluster/7005/

cp redis.conf /app/redis/redis-cluster/7006/

cd /usr/local/bin/

cp redis-server redis-cli /app/redis/redis-cluster/7001/

cp redis-server redis-cli /app/redis/redis-cluster/7002/

cp redis-server redis-cli /app/redis/redis-cluster/7003/

cp redis-server redis-cli /app/redis/redis-cluster/7004/

cp redis-server redis-cli /app/redis/redis-cluster/7005/

cp redis-server redis-cli /app/redis/redis-cluster/7006/

2.

/app/redis/redis-cluster/

修改7001-7006中的redis.conf

bind 192.168.1.62 连入主机的ip地址,不修改外部无法连入你的redis缓存服务器中

port 700X x为文件夹名称,你在700几就填几

daemonize yes 开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。

pidfile /app/redis/redis-cluster/700x/redis_700x.pid x为文件夹名称,你在700几就填几

cluster-enabled yes 开启集群模式

vi /app/redis/redis-cluster/7001/redis.conf

cp /app/redis/redis-cluster/7001/redis.conf /app/redis/redis-cluster/7002/redis.conf

cp /app/redis/redis-cluster/7001/redis.conf /app/redis/redis-cluster/7003/redis.conf

cp /app/redis/redis-cluster/7001/redis.conf /app/redis/redis-cluster/7004/redis.conf

cp /app/redis/redis-cluster/7001/redis.conf /app/redis/redis-cluster/7005/redis.conf

cp /app/redis/redis-cluster/7001/redis.conf /app/redis/redis-cluster/7006/redis.conf

vi /app/redis/redis-cluster/7003/redis.conf

:%s/7001/7003/g

3.写批处理执行

cd /app/redis/redis-cluster

vi start-all.sh

cd 7001

./redis-server redis.conf

cd ..

cd 7002

./redis-server redis.conf

cd ..

cd 7003

./redis-server redis.conf

cd ..

cd 7004

./redis-server redis.conf

cd ..

cd 7005

./redis-server redis.conf

cd ..

cd 7006

./redis-server redis.conf

cd ..

开启命令执行权限

chmod +x start-all.sh

./start-all.sh

ps -ef|grep redis

4.

配置集群

# 在任意一台上运行即可,不要在每台机器上都运行

/app/redis/redis-cluster

创建了三个主节点,三个从节点。其中—replicas1 表示每个主节点下面有1个从节点,从节点可以是任意多个。前三个是主后三个是从

./redis-trib.rb create --replicas 1 192.168.1.62:7001 192.168.1.62:7002 192.168.1.62:7003 192.168.1.62:7004 192.168.1.62:7005 192.168.1.62:7006

yes

5集群测试

cd /app/redis/redis-cluster/7001

./redis-cli -c -h 192.168.1.62 -p 7001

./redis-cli -c -h 192.168.1.62 -p 7001 shutdown //关闭7001节点,如果没有-h参数,默认连接127.0.0.1,如果没有-p参数,默认连接6379端口(所有如果用默认的,就没有-h -p)

说明:-h+host -p+端口号 -c是要连接集群,注意坑,不加会报错的

root@node62 redis-cluster]# cd /app/redis/redis-cluster/7001

[root@node62 7001]# ./redis-cli -c -h 192.168.1.62 -p 7001

192.168.1.62:7001> set name xiaohei

-> Redirected to slot [5798] located at 192.168.1.62:7002

OK

192.168.1.62:7002> get name

"xiaohei"

192.168.1.62:7002> exit

[root@node62 7001]# ./redis-cli -c -h 192.168.1.62 -p 7001

192.168.1.62:7001> CLUSTER INFO

批量数据插入

vi pl.sh

#!/bin/bashfor ((i=0;i<1000;i++))doecho-en "helloworld" | /app/redis/redis-cluster/7001/redis-cli -c -h 192.168.1.62 -p 7001 -x set name$i >>redis.log

done

sh pl.sh

添加主从

指定redis cluster中的master和slave 可以用下面的方法

# 添加主库

[root@redis01 redis-cluster]# redis-trib.rb create 192.168.94.11:7000 192.168.94.22:7003 192.168.94.33:7006# 添加从库

[root@redis01 redis-cluster]# redis-trib.rb add-node --slave 192.168.94.22:7001 192.168.94.11:7000 # 把192.168.94.11的7001 作为从库添加到192.168.94.11的7000

查看集群主从情况

[root@81server 7001]# ./redis-cli -c -h 192.168.120.81 -p 7001

192.168.120.81:7001> CLUSTER NODES

另一种遍历准备集群文件的方式

集群2安装

yum install -y gcc g++ make gcc-c++ kernel-devel automake autoconf libtool make wget tcl vim ruby rubygems unzip git

mkdir /app/redis/ -p

tar -xvf redis-4.0.9.tar.gz -C /app/redis

cd /app/redis/redis-4.0.9/

make

make && make test && make PREFIX=/usr/local/redis install

或者

make MALLOC=jemalloc & & make PREFIX=/usr/local/redis install

ls /usr/local/bin/

mkdir /data/redis/redis-cluster -p

cd /data/redis/redis-cluster/

mkdir 7000 7001 7002

for i in 0 1 2;

do echo -e "port 700$i\n\

bind `hostname -I`\n\

daemonize yes\n\

pidfile /var/run/redis_700$i.pid\n\

cluster-enabled yes\n\

cluster-config-file nodes_700$i.conf\n\

cluster-node-timeout 10100" > 700$i/redis.conf;

done

for i in 0 1 2;

do redis-server /data/redis/redis-cluster/700$i/redis.conf

done

yum install -y net-tools

netstat -antup|grep redis

[root@82server redis-cluster]# netstat -antup|grep redis

tcp        0      0 192.168.120.82:17000    0.0.0.0:*               LISTEN      21003/redis-server

tcp        0      0 192.168.120.82:17001    0.0.0.0:*               LISTEN      21005/redis-server

tcp        0      0 192.168.120.82:17002    0.0.0.0:*               LISTEN      21007/redis-server

tcp        0      0 192.168.120.82:7000     0.0.0.0:*               LISTEN      21003/redis-server

tcp        0      0 192.168.120.82:7001     0.0.0.0:*               LISTEN      21005/redis-server

tcp        0      0 192.168.120.82:7002     0.0.0.0:*               LISTEN      21007/redis-server

cd /app/redis/redis-cluster

./redis-trib.rb create 192.168.120.82:7001192.168.120.82:7000

./redis-trib.rb add-node --slave 192.168.120.82:7000 192.168.120.82:7001    # 把192.168.120.82:17001 作为从库添加到192.168.120.82:7001

./redis-trib.rb create 192.168.120.82:7000 192.168.120.82:7001

cd /app/redis/redis-cluster/

./redis-trib.rb create --replicas 1 192.168.1.62:7001 192.168.1.62:7002 192.168.1.62:7003 192.168.1.62:7004 192.168.1.62:7005 192.168.1.62:7006

yes

/app/redis/redis-cluster/7001/redis-cli -c -h 192.168.120.81 -p 7001 登录

/app/redis/redis-cluster/redis-trib.rb add-node 192.168.120.81:7004 192.168.120.81:7001 #前面是新节点 后面是集群内的节点 --添加新节点/app/redis/redis-cluster/redis-trib.rb reshard 192.168.120.81:7001 #查看集群曹点和分配

上面已经添加入了新的主节点但是没有曹点是无法存储数据的可以分配曹点

4个主节点平均分配一个4096个曹点

后面复制一个新的集群id

然后输入all回车

重新查看后已经平均分配

加入新的从节点

/app/redis/redis-cluster/redis-trib.rb add-node 192.168.120.82:7004 192.168.120.81:7004#加入新的节点/app/redis/redis-cluster/7001/redis-cli -p 7004 -h 192.168.120.82#登录新加节点

cluster replicate 3bce7fac36c78b4f8a7db2371ef48ecbed458e44 #从主节id点同步数据 id可以用 CLUSTER NODES查询

移除集群中的主节点操作

/app/redis/redis-cluster/redis-trib.rb del-node 192.168.120.82:700440c7b155fefe9b89c6e50e08786c7ebd95d7d935 #删除从节点/app/redis/redis-cluster/redis-trib.rb reshard 192.168.120.81:7001#移除主节点上的曹点/app/redis/redis-cluster/redis-trib.rb del-node 192.168.120.81:7004 3bce7fac36c78b4f8a7db2371ef48ecbed458e44 #移除主节点

参考

https://www.cnblogs.com/bigdevilking/p/9758143.html

https://www.cnblogs.com/ywrj/p/9531800.html

添加新的节点或删除节点

https://www.cnblogs.com/hopeofthevillage/p/11535683.html

集群命令参考

http://www.52wiki.cn/docs/redis/redis-1albe5fp7e03r

redis 槽点重新分配 集群_redis集群高可用部署-cluster-槽点的迁移查看相关推荐

  1. 实现Kubernetes跨集群服务应用的高可用

    我们在进行生产环境部署时得到的一个明确的需求,是Kubernetes用户希望服务部署能够zone.跨区域.跨集群甚至跨云边界(译者:如跨云供应商).相比单集群多zone部署,跨集群服务提供按地域分布, ...

  2. redis 集群_Redis集群部署

    Redis集群部署 1. 编译安装 # cd /usr/local/src/# wget http://download.redis.io/releases/redis-5.0.0.tar.gz# t ...

  3. 服务器集群之keepalived配置高可用(资料)

    2019独角兽企业重金招聘Python工程师标准>>> Linux集群概述 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当 ...

  4. 大数据实操篇 No.11-Flink on Yarn集群HA高可用部署及使用

    第1章 简介 1.1 概要介绍 Flink on Yarn的HA高可用模式,首先依赖于Yarn自身的高可用机制(ResourceManager高可用),并通过Yarn对JobManager进行管理,当 ...

  5. Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  6. Rabbitmq集群高可用部署详细

    清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使然,我回到啦公司,敲起啦键盘,撸起啦代码,程序狗的世界一片黯然,一片黯然,愿天下所有努 ...

  7. RabbitMQ 集群高可用部署详细介绍

    链接:cnblogs.com/knowledgesea/p/6535766.html 清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使 ...

  8. redis 集群_Redis集群管理

    阅读文本大概需要10分钟. 1.简介 Redis在生产环境中一般是通过集群的方式进行运行,Redis集群包括主从复制集群和数据分片集群两种类型. *主从复制集群提供高可用性,而数据分片集群提供负载均衡 ...

  9. multi redis 不能使用集群_Redis 集群实现

    Nosql,作为程序员在当下不了解点儿,还真不行,出去聊起来别人就会说你土.那么就聊聊其中一个比较火的redis.redis单机版没得说,但是一直没有集群版,有也是山寨的.前段时间对redis的实现进 ...

最新文章

  1. 60日均线操盘的三种入场点形态
  2. Linux 分析工具--性能
  3. 学习《apache源代码全景分析》之摘录
  4. 解析“60k”大佬的19道C#面试题(上)
  5. POJ3749 破译密码【密码】
  6. 用Python3.6操作HBase之HBase-Thrift
  7. Latent Dirichlet Allocation(LDA)
  8. error: passing ‘const AppJniCommand’ as ‘this’ argument discards qualifiers [-fpermissive]
  9. 多窗口下的批量操作脚本 - 利用win32gui和WindowSpy++简单实现目标窗口前置
  10. VUE项目中使用阿里图标iconfont
  11. 物联网技术是怎么分类的,物联网主要面临哪些难题?
  12. 上海巨人网络面试经历
  13. 第十三周练兵区——编程题——不计入总分
  14. 感谢上天,我被失联2年后,终于活着从东南亚菠菜公司的技术“魔窟”逃出来了......
  15. body 没有被撑开_父元素没有被撑开塌陷问题解决方案
  16. threejs-纹理贴图
  17. C语言单元测试---cunit(一) ---- 博客经典;
  18. 20145212 罗天晨 网络欺诈技术防范
  19. [ 数据库原理 ] 函数依赖关系
  20. 【非原创】PHPMywind调用

热门文章

  1. 压力测试时候Linux系统参数的调优
  2. MQ 的本质是什么呢?
  3. 类文件结构-method-init和类文件结构-method-main
  4. if嵌套-火车站安检-检查刀的长度
  5. SpringMVC中向服务器传输数据(解决get、post、delete、put请求乱码问题)
  6. dns服务器zones文件,DNS服务安装与配置
  7. 【报错笔记】关于tomcat启动不了,闪退问题。
  8. 高版本JDK13新特性以及与JDK8对比
  9. 设置组件局部样式原理-属性选择器
  10. mysql数据库的快捷键