Linux(Centos7)下redis5集群搭建和使用
1、简要说明
2018年十月 Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是放弃 Ruby的集群方式,改为 使用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低。关于集群的更新可以在 Redis5 的版本说明中看到,如下:
The cluster manager was ported from Ruby (redis-trib.rb) to C code inside redis-cli. check `redis-cli --cluster help ` for more info.
可以查看Redis官网查看集群搭建方式,连接如下
https://redis.io/topics/cluster-tutorial
集群中应该至少有三个节点,每个节点有一备份节点。需要6台服务器。
如果条件有限,可以搭建伪分布式,以下步骤是在一台 Linux 服务器上搭建有6个节点的 Redis集群。
2、创建集群步骤
2.1、创建目录
新建目录:mkdir /usr/local/redis-cluster
2.2、下载源码并解压编译
wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar xzf redis-5.0..tar.gz
cd redis-5.0.
make
make install PREFIX=/usr/local/redis
3、创建6个Redis配置文件
6个配置文件不能在同一个目录,此处我们定义如下:
/root/software/redis/redis-cluster-conf//redis.conf
/root/software/redis/redis-cluster-conf//redis.conf
/root/software/redis/redis-cluster-conf//redis.conf
/root/software/redis/redis-cluster-conf//redis.conf
/root/software/redis/redis-cluster-conf//redis.conf
/root/software/redis/redis-cluster-conf//redis.conf
一些操作命令仅供参考:
cp redis.conf /usr/local/redis/bin
cd /usr/local/redis/
cp -r bin ../redis-cluster/redis01
cd /usr/local/redis-cluster/redis01
rm dump.rdb #删除快照
vim redis.conf
配置文件的内容为:
port #端口
cluster-enabled yes #启用集群模式
cluster-config-file nodes.conf
cluster-node-timeout #超时时间
appendonly yes
daemonize yes #后台运行
protected-mode no #非保护模式
pidfile /var/run/redis_7001.pid
bind 172.20.10.7 #127.0.0.1改为本机ip地址,可用ifconfig查看ip
其中 port 和 pidfile 需要随着 文件夹的不同调增。
创建剩余5个实例:
[root@master redis-cluster]# cp -r redis01/ redis02
[root@master redis-cluster]# cp -r redis01/ redis03
[root@master redis-cluster]# cp -r redis01/ redis04
[root@master redis-cluster]# cp -r redis01/ redis05
[root@master redis-cluster]# cp -r redis01/ redis06
分别修改redis02 ~ redis06 的 redis.conf下的port 和 pidfile
4、启动节点
分别进入redis01、redis02、...redis06目录,执行: ./redis-server ./redis.conf
创建一个批处理文件,同时启动着六个Redis
vim startall.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 ..
然后执行chmod u+x start-all.sh将start-all.sh变成可执行文件
在当前目录下启动: ./startall.sh
查看:ps aux|grep redis

5、启动集群
因为我们使用的5.0.0的版本的Redis搭建的集群只需要把编译后的redis目录中的这个redis-cli文件拷贝到redis-cluster目录过来即可。(Redis版本5.0以后都是用C语言直接启动)
/usr/local/redis-cluster/redis-cli --cluster create 172.20.10.7: 172.20.10.7: 172.20.10.7: 172.20.10.7: 172.20.10.7: 172.20.10.7: --cluster-replicas
启动后,可看到成功信息,如下:
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.20.10.7:7004 to 172.20.10.7:7001
Adding replica 172.20.10.7:7005 to 172.20.10.7:7002
Adding replica 172.20.10.7:7006 to 172.20.10.7:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: a4128b5e581c3722acd9b093c5f29f5056f680b0 172.20.10.7:7001
slots:[0-5460] (5461 slots) master
M: d6fed6f21269b8469a3076ac5fb168bd20f70c26 172.20.10.7:7002
slots:[5461-10922] (5462 slots) master
M: 51a0f62dacead745ce5351cdbe0bdbae553ce413 172.20.10.7:7003
slots:[10923-16383] (5461 slots) master
S: 45cc35740ac67f7988bb75325871ba12d08a76e4 172.20.10.7:7004
replicates a4128b5e581c3722acd9b093c5f29f5056f680b0
S: 668054fe16cdf8741152cae863f5c636ed18b803 172.20.10.7:7005
replicates d6fed6f21269b8469a3076ac5fb168bd20f70c26
S: ae39b7db285703f8c08412d6b04998c60a634295 172.20.10.7:7006
replicates 51a0f62dacead745ce5351cdbe0bdbae553ce413
Can I set the above configuration? (type 'yes' to accept):yes
输入yes回车
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
......
>>> Performing Cluster Check (using node 172.20.10.7:7001)
M: a4128b5e581c3722acd9b093c5f29f5056f680b0 172.20.10.7:7001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: d6fed6f21269b8469a3076ac5fb168bd20f70c26 172.20.10.7:7002
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 45cc35740ac67f7988bb75325871ba12d08a76e4 172.20.10.7:7004
slots: (0 slots) slave
replicates a4128b5e581c3722acd9b093c5f29f5056f680b0
M: 51a0f62dacead745ce5351cdbe0bdbae553ce413 172.20.10.7:7003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 668054fe16cdf8741152cae863f5c636ed18b803 172.20.10.7:7005
slots: (0 slots) slave
replicates d6fed6f21269b8469a3076ac5fb168bd20f70c26
S: ae39b7db285703f8c08412d6b04998c60a634295 172.20.10.7:7006
slots: (0 slots) slave
replicates 51a0f62dacead745ce5351cdbe0bdbae553ce413
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
至此,Reids5 集群搭建完成。
6、集群的操作
6.1、关闭集群
方法一:
redis5 提供了关闭集群的工具,在如下目录:
/root/redis-5.0.0/utils/create-cluster
打开此文件修改端口为我们自己的,如下所示:

端口PROT设置为7000,NODES为6,工具会自动累加1 生成 7001-7006 六个节点 用于操作。
往下看再修改路径 和 添加 ip地址,如果不加会默认本地127.0.0.1

修改后,执行如下命令关闭集群:
/root/redis-5.0./utils/create-cluster/create-cluster stop
方法二:
create-cluster目录下编写脚本文件:vim shutdown.sh
内容如下:
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p shutdown
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p shutdown
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p shutdown
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p shutdown
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p shutdown
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p shutdown
然后执行chmod u+x shutdown.sh将shutdown.sh变成可执行文件
在当前目录下启动: ./shutdown.sh
查看:ps aux|grep redis
官方:/usr/local/redis-cluster/redis-cli -a xxx -c -h 192.168.5.100 -p 8001
提示:-a访问服务端密码,-c表示集群模式,-h指定ip地址,-p指定端口号
6.2、重新启动集群
/root/redis-5.0./utils/create-cluster/create-cluster start
6.3、使用脚本文件启动集群
vim startall.sh 追加如下内容:(记得改自己ip地址)
/usr/local/redis-cluster/redis-cli --cluster create 172.20.10.7: 172.20.10.7: 172.20.10.7: 172.20.10.7: 172.20.10.7: 172.20.10.7: --cluster-replicas
启动:./startall.sh
7、测试集群
redis-cluster目录下执行
redis01/redis-cli -h 192.168.25.153 -p -c
其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号
cluster nodes 查询集群结点信息
cluster info 查询集群状态信息
192.168.25.153:> cluster info
cluster_state:ok
cluster_slots_assigned:
cluster_slots_ok:
cluster_slots_pfail:
cluster_slots_fail:
cluster_known_nodes:
cluster_size:
cluster_current_epoch:
cluster_my_epoch:
cluster_stats_messages_ping_sent:
cluster_stats_messages_pong_sent:
cluster_stats_messages_sent:
cluster_stats_messages_ping_received:
cluster_stats_messages_pong_received:
cluster_stats_messages_meet_received:
cluster_stats_messages_received:
192.168.25.153:>
8、测试代码
@Test
public void testJedisCluster() {
//集群结点
HashSet<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("172.20.10.7", ));
nodes.add(new HostAndPort("172.20.10.7", ));
nodes.add(new HostAndPort("172.20.10.7", ));
nodes.add(new HostAndPort("172.20.10.7", ));
nodes.add(new HostAndPort("172.20.10.7", ));
nodes.add(new HostAndPort("172.20.10.7", )); JedisCluster cluster = new JedisCluster(nodes); cluster.set("name", "zhangsan");
String str = cluster.get("name");
System.out.println(str); cluster.close();
}
参考文章:https://my.oschina.net/ruoli/blog/2252393
Linux(Centos7)下redis5集群搭建和使用的更多相关文章
- Linux环境下Hadoop集群搭建
Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...
- [Kubernetes]CentOS7下Etcd集群搭建
Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集 ...
- centos7下Etcd3集群搭建
一.环境介绍 etcd主要功能是分布式的存储键值,优点不多说了,分布是集群,自动选举等等,自行百度,主要说下配置方法,折腾了几天,终于优点眉目了,记录下操作方法,本文参考了如下链接 https://w ...
- Centos7下Etcd集群搭建
一.简介 "A highly-available key value store for shared configuration and service discovery." ...
- Linux环境下nginx集群搭建
#确保安装nginx,stream模块默认不安装的,需要手动添加参数:–with-stream, nginx1.9或以上版本 #nginx.conf文件中,添加以下内容(只供参考),这个不能放在htt ...
- Linux下zookeeper集群搭建
Linux下zookeeper集群搭建 部署前准备 下载zookeeper的安装包 http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper ...
- Linux环境下SolrCloud集群环境搭建关键步骤
Linux环境下SolrCloud集群环境搭建关键步骤. 前提条件:已经完成ZooKeeper集群环境搭建. 一.下载介质 官网下载地址:http://www.apache.org/dyn/close ...
- Linux环境下HDFS集群环境搭建关键步骤
Linux环境下HDFS集群环境搭建关键步骤记录. 介质版本:hadoop-2.7.3.tar.gz 节点数量:3节点. 一.下载安装介质 官网下载地址:http://hadoop.apache.or ...
- Linux环境下ZooKeeper集群环境搭建关键步骤
ZooKeeper版本:zookeeper-3.4.9 ZooKeeper节点:3个节点 以下为Linux环境下ZooKeeper集群环境搭建关键步骤: 前提条件:已完成在Linux环境中安装JDK并 ...
随机推荐
- python数据挖掘第一篇:正则表达式
正则表达式 re 模块 re.match(pattern,string[,flag]) match方法 从首字母开始匹配,如果包含pattern字符串,则匹配成功,返回match对象,失败则返回Non ...
- multipart/form-data 文件上传表单中 传递参数无法获取的原因!
1.什么是multipart/form-data 首先我们需要明白在html中的enctype属性, enctype:规定了form表单在发送到服务器时候编码方式.他有如下的三个值. ①applica ...
- apache mpms和php概述
当设置一个Apache + PHP服务器来运行你的PHP应用程序时,有许多配置参数需要处理. 最重要的是php服务器Api(server api:sapi),它决定了Apache将如何运行PHP脚本. ...
- openstack学习之neutron ml2初始化代码分析
这里没有 去详细考虑neutron server怎么初始化的,而是直接从加载插件的地方开始分析.首先我们看下下面这个文件. Neutron/api/v2/router.py class APIRout ...
- Codeforces Round #605 (Div. 3) E - Nearest Opposite Parity
题目链接:http://codeforces.com/contest/1272/problem/E 题意:给定n,给定n个数a[i],对每个数输出d[i]. 对于每个i,可以移动到i+a[i]和i-a ...
- HDU5394 Bomb
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5934 There are NN bombs needing exploding. Each bomb ha ...
- Vue - watch高阶用法
1. 不依赖新旧值的watch 很多时候,我们监听一个属性,不会使用到改变前后的值,只是为了执行一些方法,这时可以使用字符串代替 data:{ name:'Joe' }, watch:{ name:' ...
- 【MySQL】ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
问题现象: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问root用户 ...
- PHP 7.4.0发布!一起看看有哪些新特性
PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新. 看了英文手册后,发现其进行了许多改进,并带来了一些新特性,现在将这些新特性您: 1.Typed Properties 类型 ...
- 在 VSCode 中 Angular 的字符串报错的问题
使用 Angular 时,报错 [tslint] " should be ' 报错原因是因为 ESLint 的严格模式,限制了使用 ' ,甚至多一个空格都会报错. 我们只需要在 settin ...