Liunx搭建Redis集群

1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

2、节点的fail是通过集群中超过半数的节点检测失效时才生效。

3、客户端与redis节点直连,不需要中间proxy层。客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

4、redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

1.2.Redis-cluster投票&容错

投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),认为当前master节点挂掉.

什么时候整个集群不可用(cluster_state:fail)?

a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

b:如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

2.redis集群搭建

2.1.准备6个实例

为了保证可以进行投票,至少需要3个主节点。每个主节点都需要至少一个从节点,所以需要至少3个从节点。

一共需要6台redis服务器;可以使用6个redis实例。6个redis实例的端口号:7001~7006

2.1.1.复制实例

如果有安装过,那么先停止单机版redis

./redis-cli shutdown

如果有安装过,那么先停止集群版redis;使用命令找出当前的所有redis进程,然后kill

把bin目录里面的rdb,和aof文件删除,准备干净的redis

cd /usr/local/redis/bin

rm -rf appendonly.aof

rm -f dump.rdb

把bin复制6份

cd ..

删除原有的redis-cluster

rm –rf redis-cluster

创建redis-cluster目录

mkdir redis-cluster

cp -r bin redis-cluster/redis1 && cp -r bin redis-cluster/redis2 && cp -r bin redis-cluster/redis3

cp -r bin redis-cluster/redis4 && cp -r bin redis-cluster/redis5 && cp -r bin redis-cluster/redis6

  1. 修改端口号

    依次修改端口号为7001~7006

cd redis1

vi redis.conf

修改第84行,端口6379为7001

port 6379 修改为 port 7001

其它5个一样修改

2.1.2.同时启动6个实例

cd /usr/local/redis/redis-cluster

编写启动脚本

vi start-all.sh

在文件中输入如下内容:

cd redis1

./redis-server redis.conf

cd ..

cd redis2

./redis-server redis.conf

cd ..

cd redis3

./redis-server redis.conf

cd ..

cd redis4

./redis-server redis.conf

cd ..

cd redis5

./redis-server redis.conf

cd ..

cd redis6

./redis-server redis.conf

cd ..

设置脚本启动权限

chmod u+x start-all.sh

执行脚本;启动6个实例

./start-all.sh

查看

ps -ef | grep redis

停止6个redis

ps -ef | grep redis

kill 进程号 进程号 ...

2.2.安装环境

redis集群的管理工具使用的是ruby脚本语言,安装集群需要ruby环境。

安装ruby环境(上课提供的虚拟机,环境已经装好)

yum install ruby

安装Ruby的打包系统

yum install rubygems

安装redis的ruby接口库

cd /root/software

上传“redis-3.2.1.gem”到“/root/software”

安装

gem install redis-3.2.1.gem

2.3.安装redis集群

2.3.1.配置集群节点

需要修改每个实例的redis.conf配置文件,开启redis-cluster

cd /usr/local/redis/redis-cluster/

vi redis1/redis.conf

反注释第721行; cluster-enabled yes

需要修改6个节点;同样修改

重启redis实例

./start-all.sh

2.3.2.集群启动

集群管理工具在redis解压文件夹的src的文件夹中;使用redis-cluster的集群管理工具启动集群。

先进入集群管理工具所在的路径

cd /root/software/redis-3.2.4/src/

再启动命令(注意如下连接中的ip最好不用127.0.0.1和默认端口)

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

启动信息(中间需要输入yes)

3.Redis集群连接

3.1.工具连接

redis的单机版,默认是16个数据库,但是redis-Cluster集群版,有n个数据库(多个主数据库则多少个,整个集群算是一个数据库)。

使用redis命令行客户端连接

cd /usr/local/redis/bin

./redis-cli -h 192.168.12.168 -p 7006 -c

【注意】一定要加-c参数,节点之间则可以互相跳转

使用图形客户端连接时;因为有3台主redis数据库,所以需要连接3台。

3.2.代码连接

public class JedisClusterTest {

@Test
public void test() throws IOException {
    // 设置集群节点
    Set<HostAndPort> nodes = new HashSet<>();
    nodes.add(new HostAndPort("192.168.12.168", 7001));
    nodes.add(new HostAndPort("192.168.12.168", 7002));
    nodes.add(new HostAndPort("192.168.12.168", 7003));
    nodes.add(new HostAndPort("192.168.12.168", 7004));
    nodes.add(new HostAndPort("192.168.12.168", 7005));
    nodes.add(new HostAndPort("192.168.12.168", 7006));

    // 创建jedis集群对象
    JedisCluster jedisCluster = new JedisCluster(nodes);

    // 设置值
    jedisCluster.set("jedisCluster_msg", "redis-集群");

    // 获取键值
    String msg = jedisCluster.get("jedisCluster_msg");
    System.out.println(msg);

    // 关闭jedisCluster连接(在程序执行完之后,才能关闭,他的内部已经封装了连接池)
    jedisCluster.close();
}

}

原文地址:https://www.cnblogs.com/zhuoweihuang/p/9265417.html

时间: 2024-10-10 23:57:54

Liunx搭建Redis集群的相关文章

Liunx下Redis集群的安装与测试,以及项目中的应用(redis中对象和集合的储存)。

Liunx下Redis集群的安装与测试,以及项目中的应用. 首先准备ruby和redis接口: redis-3.0.0.gem和 去https://redis.io/下载 1.使用ruby脚本搭建集群.需要ruby的运行环境. 安装ruby yum install ruby yum install rubygems 1.1安装ruby脚本运行使用的包. [[email protected] ~]# gem install redis-3.0.0.gem Successfully installe

Windows下搭建Redis集群

Redis集群:运行多个Redis实例,然后通过特定的工具,将这些实例以某种关系连接起来,形成一个Redis网络. 详细的内容可以阅读:Redis 集群教程 里面会详细介绍Redis集群的设计思想和内部结构,以及如何搭建Redis集群等. 本文主要讲述如何在Windows系统下快速搭建Redis集群: 1.下载Redis 其GitHub连接如下:https://github.com/MSOpenTech/redis/releases/ Redis提供msi和zip格式的下载文件,这里下载zip格

基于 twemproxy 搭建 redis 集群

概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的缓存性能及扩展型,我们将需要搭建redis集群来满足需求.因redis 3.0 beta支持的集群功能不适合生产环境的使用,所以我们采用twitter正在使用的twemproxy来搭建redis缓存服务器集群,目前用户包括Pinterest.Tumblr.Twitter.Vine.Kiip.Wuaki.tv.Wanelo.Kontera.Wikimed

Windows 环境搭建Redis集群

环境以及引用资料 1.windows server 2008 r2 enterprise  (木有办法,公司的服务器全是如此,就这种环境搭建吧) 2.redis官方资料下载: https://redis.io/download 3.redis官方没有提供相关的程序包,但是Microsoft Open Tech group提供并维护了相关的redis安装包 https://github.com/MSOpenTech/redis(只是提供64位程序) 这里说一句,很多公司的redis都是部署在lin

在windows上搭建redis集群

一 所需软件 Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址   https://github.com/MSOpenTech/redis/releases ;  下载Redis. 集群规划有三个节点的集群,每个节点有一主一备.需要6台虚拟机. 把 redis 解压后,再复制出 5 份,配置 三主三从集群. 由于 redis 默认端口号为 6379,那么其它5份的

搭建Redis 集群,测试集群:对节点主机重新分片

搭建Redis 集群 准备6台redis服务器,具体要求如下: ip地址 端口 etho 日志文件名 192.168.4.51 6051 都可以接收连接请求 redis51.log 192.168.4.52 6052 都可以接收连接请求 redis52.log 192.168.4.53 6053 都可以接收连接请求 redis53.log 192.168.4.54 6054 都可以接收连接请求 redis54.log 192.168.4.55 6055 都可以接收连接请求 redis55.log

centos下搭建redis集群

必备的工具: redis-3.0.0.tar redis-3.0.0.gem   (ruby和redis接口) 分析:     首先,集群数需要基数,这里搭建一个简单的redis集群(6个redis实例进行集群). 在一台服务器上操作,因此仅需要6个不同的端口号即可.分别是:7001.7002.7003.7004.7005.7006. 步骤:     1.上传redis-3.0.0.tar到服务器(自己指定自己的软件目录),解压redis-3.0.0.tar. 2.安装c语言环境(安装cento

CentOS搭建Redis集群

集群原理-redis-cluster架构图 架构细节: (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可 (4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->val

使用Codis搭建redis集群服务

转(http://www.jianshu.com/p/f8e968e57863) 一. 应用场景 redis 作为数据结构存储引擎,有着很多优点 高性能单机引擎可以达到5-10W qps 数据结构全面,支持快速开发业务string,list,set,sorted set, hashes 问题: 存储容量受限单机最大容量即为单机内存最大容量 单机数据的持久化依赖aof和rdb机制,如果机器整个down掉,服务不可用 二. redis集群选型 正是由于单机redis引擎有着这样的问题,所以,基本每个