码迷,mamicode.com
首页 > 其他好文 > 详细

Redis 集群搭建

时间:2021-07-05 18:04:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:second   balance   enforce   replicas   RoCE   规划   linx   计算   官网   

一、Redis 集群原理
1,基本介绍
在 Redis 集群中,所有的 Redis 节点彼此互联,节点内部使用二进制协议优化速度和带宽。当一个节点挂掉后,集群中超过半数的节点检测失效时才认为该节点已失效。
不同于 Tomcat 集群需要使用反向代理服务器,Redis 集群中的任意节点都可以直接和 Java 客户端连接。

2,数据分配策略
(1)Redis 集群上的数据分配则是采用哈希槽(HASH SLOT):
Redis 集群中内置了 16384 个哈希槽,当有数据需要存储时,Redis 会首先使用 CRC16 算法对 key 进行计算,将计算获得的结果对 16384 取余,这样每一个 key 都会对应一个取值在 0~16383 之间的哈希槽,Redis 则根据这个余数将该条数据存储到对应的 Redis 节点上。

(2)开发者可以根据每个 Redis 实例的性能来调整每个 Redis 实例上哈希槽的分布范围。

二、Redis 集群搭建
1,集群规划
Redis 要求至少三主三从共 6 个节点才能组成 Redis 集群。本次我们在同一个台服务上用不同的端口表示不同的 Redis 服务器(伪分布式集群):
192.168.177.130:7001
192.168.177.130:7002
192.168.177.130:7003
192.168.177.130:7004
192.168.177.130:7005
192.168.177.130:7006
2、环境准备
查看是否安装了gcc,如果没有则进行安装
gcc -v
yum install gcc-c++
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinx
临时关闭
getenforce 0
修改配置文件永久关闭,需要重启机器
修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled
3、安装配置redis
下载redis
官网地址:https://redis.io/download
[root@localhost ~]# cd /opt/
[root@localhost opt]# wget http://download.redis.io/releases/redis-5.0.8.tar.gz (要安装wget工具)
[root@localhost opt]# tar zxvf redis-5.0.8.tar.gz
[root@localhost opt]# ls
redis-5.0.8 redis-5.0.8.tar.gz
[root@localhost opt]# cd redis-5.0.8
[root@localhost redis-5.0.8]# ls
00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-moduleapi sentinel.conf tests
BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel src utils
[root@localhost redis-5.0.8]# make
完成后如果提示要进行make test 就按照提示运行make test
[root@localhost redis-5.0.8]# make install PREFIX=/usr/local/redis
3、安装配置redis
下载redis
官网地址:https://redis.io/download
[root@localhost ~]# cd /opt/
[root@localhost opt]# wget http://download.redis.io/releases/redis-5.0.8.tar.gz (要安装wget工具)
[root@localhost opt]# tar zxvf redis-5.0.8.tar.gz
[root@localhost opt]# ls
redis-5.0.8 redis-5.0.8.tar.gz
[root@localhost opt]# cd redis-5.0.8
[root@localhost redis-5.0.8]# ls
00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-moduleapi sentinel.conf tests
BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel src utils
[root@localhost redis-5.0.8]# make
完成后如果提示要进行make test 就按照提示运行make test
[root@localhost redis-5.0.8]# make install PREFIX=/usr/local/redis
技术图片
出现以上提示,说明redis安装成功
[root@localhost redis-5.0.8]# cd /usr/local/redis/bin/
[root@localhost bin]# ./redis-server
技术图片
更改成后台启动,修改redis.conf文件,将daemonize no -> daemonize yes 后台运行
4、集群搭建
在/usr/local目录下新建redis-cluster目录,用于存放集群节点,命令如下:
[root@localhost bin]# cd /usr/local/
[root@localhost local]# mkdir redis-cluster
把redis目录下的bin目录所有文件复制到/usr/local/redis-cluster/redis01目录下,redis01目录会自动创建,命令如下:
[root@localhost redis-cluster]# cp -r redis/bin/ /usr/local/redis-cluster/redis01
删除redis01目录下的快照文件dump.rdb,并修改该目录下的redis.conf文件,具体修改两处地方:一是端口号port改为7001,二是开启集群创建(cluster-enabled)模式,打开注释即可
[root@localhost redis01]# rm -f dump.rdb
[root@localhost redis01]# vim redis.conf
port 7001
cluster-enabled yes #开启集群
将redis-cluster/redis01文件复制5份到redis-cluster目录下(redis02-redis06),创建6个redis实例,模拟Redis集群到6个节点。然后将其余5个文件下的redis.conf里面的端口号分别修改为7002-7006
接着启动所有redis节点,由于一个一个启动太麻烦了,所以在这里创建一个批量启动redis节点的脚本文件,文件名为start-all.sh,文件内容如下:
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
创建好启动脚本文件之后,需要修改该脚本的权限,使之能够执行,指令如下:
[root@localhost redis-cluster]# chmod +x start.sh
执行start-all.sh脚本,启动6个redis节点
技术图片
技术图片
至此6个redis节点启动成功,接下来正式开启搭建集群,以上都是准备条件(搭建6个redis实例并启动)
安装ruby
[root@localhost redis-cluster]# yum isntall ruby -y
将ruby工具(redis-trib.rb),redis-cli 复制到redis-cluster目录下
[root@localhost redis-cluster]# cp /opt/redis-5.0.8/src/redis-trib.rb /usr/local/redis-cluster/
[root@localhost redis-cluster]# cp /usr/local/redis/bin/redis-cli /usr/local/redis-cluster/
[root@localhost redis-cluster]#./redis-trib.rb create --replicas 1 192.168.177.130:7001 192.168.177.130:7002 192.168.177.130:7003 192.168.177.130:7004 192.168.177.130:7005 192.168.177.130:7006
技术图片
[root@localhost redis-cluster]# ./redis-cli --cluster create 192.168.177.130:7001 192.168.177.130:7002 192.168.177.130:7003 192.168.177.130:7004 192.168.177.130:7005 192.168.177.130:7006 --cluster-replicas 1
技术图片
如有以上提示,我们需要进行修改配置文件,先关闭redis在进行修改
[root@localhost redis-cluster]# vim ./redis01/redis.conf
bind 127.0.0.1 192.168.177.130
添加本机ip
技术图片
至此,Redis集群搭建成功!最后一段文字,显示了每个节点所分配到slots(哈希槽),这里总共6个节点,
三、集群操作验证
[root@localhost redis01]# ./redis-cli -p 7001 -c
127.0.0.1:7001> ping
PONG
127.0.0.1:7001>
127.0.0.1:7001>
127.0.0.1:7001> exit
127.0.0.1:7001> info
Server
redis_version:5.0.8
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:3c42da723cc0e693
redis_mode:cluster
os:Linux 3.10.0-1160.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:27264
run_id:188263ea06b715c2f62df3dd2b724afc15061b48
tcp_port:7001
uptime_in_seconds:2588
redis-cli --cluster help具有以下功能:1、 create :创建集群
2、 check :检查集群

3、 info :查看集群信息

4、 fix :修复集群

5、 reshard :在线迁移slot

6、 rebalance :平衡集群节点slot数量

7、 add-node :将新节点加入集群

8、 del-node :从集群中删除节点

9、 set-timeout :设置集群节点间心跳连接的超时时间

10、 call :在集群全部节点上执行命令

11、 import :将外部redis数据导入集群

Redis 集群搭建

标签:second   balance   enforce   replicas   RoCE   规划   linx   计算   官网   

原文地址:https://www.cnblogs.com/carl1518/p/14966051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!