目录
redis 集群搭建以及监测环境
集群基本搭建
简单下载
安装编译工具
创建redis集群文件夹
修改配置文件
启动脚本
集群启动
节点查看,重启
性能测试
自带测试工具redis-benchmark
集群密码设置
代码测试
主从模式、哨兵、集群的关系
监控部署
RedisLive搭建部署
运行环境部署
Q&A
首页 Java java教程 redis 集群搭建以及redislive监测部署

redis 集群搭建以及redislive监测部署

Aug 09, 2018 pm 05:36 PM
java redis集群

redis 集群搭建以及监测环境

实现3主3从的集群 虚拟机单机ip:192.168.40.128

集群基本搭建

简单下载

  • 通过 wget http://download.redis.io/releases/redis-4.0.10.tar.gz

  • 解压缩 tar zxvf redis-4.0.10.tar.gz

  • 指定安装路径,切换root用户执行make && make PREFIX=/usr/local/redis install,可能出现权限不够的问题,sudo同样会报错,直接使用root进行操作。


安装编译工具

  • sudo apt-get update

  • sudo apt-get install gcc

  • sudo apt-get install make

  • sudo apt-get install tcl


创建redis集群文件夹

  • 因为是/usr,所以始终都是在root权限下进行操作

  • cd /usr/local/redis

  • mkdir cluster

  • cd cluster

  • mkdir 7000 7001 7002 7003 7004 7005


修改配置文件

复制redis conf内的config文件复制到六个文件夹中,并且修改以下内容

# 端口号  
port 7000  
# 后台启动  
daemonize yes  
# 开启集群  
cluster-enabled yes  
#集群节点配置文件  
cluster-config-file nodes-7000.conf  
# 集群连接超时时间  
cluster-node-timeout 5000  
# 进程pid的文件位置  
pidfile /home/ubuntu/redis-4.0.10/pid/redis-7000.pid
#工作文件夹
dir "/home/ubuntu/redis-4.0.10/working"
# 开启aof  
appendonly yes  
# aof文件路径  
appendfilename "appendonly-7005.aof"  
# rdb文件路径  
dbfilename dump-7000.rdb
登录后复制

redis 的配置文件中的bind指定的是redis服务器的网卡ip,也就是redis服务器的ip


启动脚本

  • cd /home/ubuntu/redis-4.0.10/

  • touch start.link.sh为了操作简单,创建脚本

  • 修改启动脚本,为

#!/bin/bash
export BASE_FLOD="/usr/local/redis"
{BASE_FLOD}/bin/redis-server /usr/local/redis/cluster/7000/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/cluster/7001/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/cluster/7002/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/cluster/7003/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/cluster/7004/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/cluster/7005/redis.conf
#cd src
#./redis-trib.rb create --replicas 1 192.168.40.128:7000 192.168.40.128:7001 192.168.40.128:7002 192.168.40.128:7003 192.168.40.128:7004 192.168.40.128:7005
登录后复制

其中注释的是为了简化初始启动的,ip需要跟每个节点配置的redis.conf 中bind 属性绑定的一致,启动后可以通过ps -ef | grep redis命令查询对应的线程是否启动


集群启动

  • 关联程序使用的ruby写的,所以要搭建rudy的运行环境,需要安装rudbygem

  • sudo apt-get install ruby rubygems -y

  • gem install redis,运行到这里会感觉十分慢,需要耐心等待,在redis安装目录下,src文件夹redis-trib.rb

  • 运行redis-trib.rb create --replicas 1 192.168.40.128:7000 192.168.40.128:7001 192.168.40.128:7002 192.168.40.128:7003 192.168.40.128:7004 192.168.40.128:7005,检查配置的信息是否有错误,没有直接yes就可以. [OK] All 16384 slots covered.代表接群启动成功。


节点查看,重启

查看集群运行状态:使用命令./redis-trib.rb check 192.168.40.128:7000,进行集群的状态检查


性能测试

自带测试工具redis-benchmark

  • redis-benchmark -h 192.168.40.128 -p 6379 -c 100 -n 100000100个并发连接,100000个请求,检测 host 为 localhost 端口为6379的 redis 服务器性能。

  • redis-benchmark -h 192.168.40.128 -p 6379 -q -d 100测试存取大小为100字节的数据包的性能。

  • redis-benchmark -t set,lpush -n 100000 -q只测试某些操作的性能。

  • redis-benchmark -n 100000 -q script load "redis.call(‘set’,’foo’,’bar’)"只测试某些数值存取的性能。


集群密码设置

集群搭建初始不需要密码,启动完成后,先看每个节点的配置文件是否有读写权限,如果没有读写权限,需要chmod修改的读写权限,通过

./redis-cli -c -p port
config set masterauth password
config set requirepass password
config rewrite
登录后复制

分别连接每个节点进行设置
若要重启发现连接不上,修改启动脚本 redis-.sh 99行,配置启动脚本密码启动
@r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60,:password => "yangfan@1995")


代码测试

/*
 *集群连接测试
 */

@Test
public void testJedisCluster() {
    Set<HostAndPort> nodes = new LinkedHashSet<>();
    //所有主机节点ip和端口
    nodes.add(new HostAndPort("192.168.40.128", 7000));
    nodes.add(new HostAndPort("192.168.40.128", 7001));
    nodes.add(new HostAndPort("192.168.40.128", 7002));
    nodes.add(new HostAndPort("192.168.40.128", 7003));
    nodes.add(new HostAndPort("192.168.40.128", 7004));
    nodes.add(new HostAndPort("192.168.40.128", 7005));
    //没有密码
    //JedisCluster cluster = new JedisCluster(nodes);
    //添加密码调用
    JedisCluster cluster = new JedisCluster(nodes, 5000, 5000, 10, "yangfan@1995", new GenericObjectPoolConfig());
    //cluster.zadd("test_1", String.valueOf(""),"id_2");
    System.out.println(cluster.zscore("test_1", "id_1"));
    try {
        cluster.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
登录后复制

主从模式、哨兵、集群的关系

  1. 主从模式是指定复制和持久化关系,指定了主从备份的关系

  2. 哨兵:当主数据库遇到异常中断服务后,开发者可以通过手动的方式选择一个从数据库来升格为主数据库,以使得系统能够继续提供服务。主要是为了解决主从复制手动切换主从关系的检测工具,可以自动切换主从。

  3. 使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容,共有16384个slot。每个redis分得一些slot,hash_slot = crc16(key) mod 16384 找到对应slot,键是可用键,如果有{}则取{}内的作为可用键,否则整个键是可用键集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。

监控部署

RedisLive搭建部署


运行环境部署

  1. git clone https://github.com/kumarnitin/RedisLive.git
    下载redislive,解压缩unzip -o -d /home/ubuntu/ RedisLive-master.zip

  2. 进入src文件夹,复制example文件,编辑

    "RedisServers":
    [
        {
        "server": "192.168.40.128",
        "port" : 7000,
        "password" : "yangfan@1995"
        },
        //...多个监听
    ],
    
    "DataStoreType" : "redis",
    
    "RedisStatsServer": //存储的redis监听接口
    {
        "server" : "127.0.0.1",
        "port" : 6379
    },
    
    "SqliteStatsStore" :
    {
        "path":  "/home/ubuntu/redis-4.0.10/working/redislive.db" //进行存储的文件
    } }
    登录后复制
  3. ubuntu@ubuntu:~/redis-4.0.10$ mkdir pid  
    ubuntu@ubuntu:~/redis-4.0.10$ mkdir log  
    ubuntu@ubuntu:~/redis-4.0.10$ mkdir working
      //保存aof,rdb,node-config文件。

  4. RedisLive分为两部分,其中一部分为监控脚本,另一部分为web服务,所以需要分别启动。`./redis-monitor.py
      --duration=120`./redis-live.py

  5. Q&A

    1. redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: No reachable node in cluster redis node的redis.conf 绑定ip设置为指定的redis节点ip,启动集群时只用指定ip启动,不使用192.168.40.128

    2. connect refuse  关闭防火墙

    3. No module named redis

    • 查看python位置 which python

    • 先备份 sudo cp /usr/bin/python /usr/bin/python_cp

    • 删除 sudo rm /usr/bin/python

    • 默认设置成python3.5,创建链接 sudo ln -s /usr/bin/python3.5 /usr/bin/python

    相关推荐:

    Redis集群搭建全记录

    Redis集群部署及常用的操作命令

    以上是redis 集群搭建以及redislive监测部署的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java 中的完美数 Java 中的完美数 Aug 30, 2024 pm 04:28 PM

Java 完美数指南。这里我们讨论定义,如何在 Java 中检查完美数?,示例和代码实现。

Java 中的随机数生成器 Java 中的随机数生成器 Aug 30, 2024 pm 04:27 PM

Java 随机数生成器指南。在这里,我们通过示例讨论 Java 中的函数,并通过示例讨论两个不同的生成器。

Java中的Weka Java中的Weka Aug 30, 2024 pm 04:28 PM

Java 版 Weka 指南。这里我们通过示例讨论简介、如何使用weka java、平台类型和优点。

Java 中的史密斯数 Java 中的史密斯数 Aug 30, 2024 pm 04:28 PM

Java 史密斯数指南。这里我们讨论定义,如何在Java中检查史密斯号?带有代码实现的示例。

Java Spring 面试题 Java Spring 面试题 Aug 30, 2024 pm 04:29 PM

在本文中,我们保留了最常被问到的 Java Spring 面试问题及其详细答案。这样你就可以顺利通过面试。

突破或从Java 8流返回? 突破或从Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

Java 中的时间戳至今 Java 中的时间戳至今 Aug 30, 2024 pm 04:28 PM

Java 中的时间戳到日期指南。这里我们还结合示例讨论了介绍以及如何在java中将时间戳转换为日期。

Java程序查找胶囊的体积 Java程序查找胶囊的体积 Feb 07, 2025 am 11:37 AM

胶囊是一种三维几何图形,由一个圆柱体和两端各一个半球体组成。胶囊的体积可以通过将圆柱体的体积和两端半球体的体积相加来计算。本教程将讨论如何使用不同的方法在Java中计算给定胶囊的体积。 胶囊体积公式 胶囊体积的公式如下: 胶囊体积 = 圆柱体体积 两个半球体体积 其中, r: 半球体的半径。 h: 圆柱体的高度(不包括半球体)。 例子 1 输入 半径 = 5 单位 高度 = 10 单位 输出 体积 = 1570.8 立方单位 解释 使用公式计算体积: 体积 = π × r2 × h (4

See all articles